package com.github.aesteve.vertx.nubes.i18n; import io.vertx.ext.web.RoutingContext; import java.util.ArrayList; import java.util.List; import java.util.Locale; public class LocaleResolverRegistry { private final List<LocaleResolver> resolvers; private final List<Locale> availableLocales; private Locale defaultLocale; public LocaleResolverRegistry(Locale loc) { resolvers = new ArrayList<>(); availableLocales = new ArrayList<>(); availableLocales.add(loc); } public LocaleResolverRegistry(List<Locale> availableLocales) { resolvers = new ArrayList<>(); this.availableLocales = new ArrayList<>(); this.availableLocales.addAll(availableLocales); } public void addLocales(List<Locale> locales) { availableLocales.addAll(locales); } public Locale getDefaultLocale() { return defaultLocale; } public void setDefaultLocale(Locale defaultLocale) { this.defaultLocale = defaultLocale; } public void addResolver(LocaleResolver resolver) { this.resolvers.add(resolver); } public void removeResolver(LocaleResolver resolver) { this.resolvers.remove(resolver); } public List<Locale> getAvailableLocales() { return availableLocales; } public Locale resolve(RoutingContext context) { for (LocaleResolver resolver : resolvers) { Locale loc = resolver.resolve(context, availableLocales); if (loc != null) { return loc; } } return defaultLocale; } }