Changeset 1407
- Timestamp:
- 14/12/09 09:37:12 (3 months ago)
- Files:
-
- trunk/modules/kauri-locale-assignment/src/main/java/org/kauriproject/i18n/locale_assignment/LocaleAssigner.java (modified) (1 diff)
- trunk/modules/kauri-locale-assignment/src/main/java/org/kauriproject/i18n/locale_assignment/LocaleAssignmentFilter.java (modified) (2 diffs)
- trunk/modules/kauri-locale-assignment/src/main/kauri/spring/services.xml (modified) (1 diff)
- trunk/samples/kauri-i18n-sample/conf/locale-assignment (added)
- trunk/samples/kauri-i18n-sample/conf/locale-assignment/defaults.xml (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/modules/kauri-locale-assignment/src/main/java/org/kauriproject/i18n/locale_assignment/LocaleAssigner.java
r1327 r1407 16 16 package org.kauriproject.i18n.locale_assignment; 17 17 18 import java.util.Locale; 19 20 import javax.annotation.PostConstruct; 21 22 import org.kauriproject.conf.Conf; 23 import org.kauriproject.runtime.rapi.ConfRegistry; 18 24 import org.kauriproject.runtime.rapi.FilterFactory; 19 25 import org.kauriproject.runtime.rapi.KauriModule; 20 26 import org.restlet.routing.Filter; 21 27 22 import javax.annotation.PostConstruct;23 24 28 public class LocaleAssigner { 25 29 private KauriModule kauriModule; 26 27 public LocaleAssigner(KauriModule kauriModule) { 30 31 private ConfRegistry confRegistry; 32 33 public LocaleAssigner(KauriModule kauriModule, ConfRegistry confRegistry) { 28 34 this.kauriModule = kauriModule; 35 this.confRegistry = confRegistry; 29 36 } 30 37 31 38 @PostConstruct 32 39 public void init() { 33 kauriModule.addRootFilter(new LocaleAssignmentFilterFactory()); 40 Conf conf = confRegistry.getConfiguration("defaults", true); 41 42 boolean ignoreClientInfo = conf.getAttributeAsBoolean("ignoreClientInfo", false); 43 44 Conf localeConf = conf.getChild("defaultLocale", false); 45 Locale defaultLocale = Locale.getDefault(); 46 if (localeConf != null) { 47 String language = localeConf.getAttribute("language", ""); 48 String country = localeConf.getAttribute("country", ""); 49 String variant = localeConf.getAttribute("variant", ""); 50 defaultLocale = new Locale(language, country, variant); 51 } 52 53 String defaultTimeZoneId = conf.getChild("defaultTimeZoneId").getValue("UTC"); 54 55 kauriModule.addRootFilter(new LocaleAssignmentFilterFactory(ignoreClientInfo, defaultLocale, defaultTimeZoneId)); 34 56 } 35 57 36 58 private static class LocaleAssignmentFilterFactory implements FilterFactory { 59 60 private boolean ignoreClientInfo; 61 private Locale defaultLocale; 62 private String defaultTimeZoneId; 63 64 public LocaleAssignmentFilterFactory(boolean ignoreClientInfo, Locale defaultLocale, String defaultTimeZoneId) { 65 this.ignoreClientInfo = ignoreClientInfo; 66 this.defaultLocale = defaultLocale; 67 this.defaultTimeZoneId = defaultTimeZoneId; 68 } 37 69 public Filter createFilter() { 38 return new LocaleAssignmentFilter( );70 return new LocaleAssignmentFilter(ignoreClientInfo, defaultLocale, defaultTimeZoneId); 39 71 } 40 72 } trunk/modules/kauri-locale-assignment/src/main/java/org/kauriproject/i18n/locale_assignment/LocaleAssignmentFilter.java
r1327 r1407 16 16 package org.kauriproject.i18n.locale_assignment; 17 17 18 import org.restlet.routing.Filter; 19 import org.restlet.data.*; 18 import java.util.List; 19 import java.util.Locale; 20 20 21 import org.kauriproject.i18n.LocaleHelper; 21 22 import org.kauriproject.i18n.LocaleSettings; 22 23 import java.util.Locale; 24 import java.util.List; 23 import org.restlet.data.Form; 24 import org.restlet.data.Language; 25 import org.restlet.data.Preference; 26 import org.restlet.data.Request; 27 import org.restlet.data.Response; 28 import org.restlet.routing.Filter; 25 29 26 30 public class LocaleAssignmentFilter extends Filter { 27 private Locale defaultLocale = new Locale("en"); // TODO should become configurable 28 private String defaultTimeZoneId = "UTC"; // TODO should become configurable 29 31 32 private boolean ignoreClientInfo; 33 34 private Locale defaultLocale; 35 36 private String defaultTimeZoneId; 37 38 public LocaleAssignmentFilter(boolean ignoreClientInfo, Locale defaultLocale, String defaultTimeZoneId) { 39 this.ignoreClientInfo = ignoreClientInfo; 40 this.defaultLocale = defaultLocale; 41 this.defaultTimeZoneId = defaultTimeZoneId; 42 } 43 30 44 @Override 31 45 protected int doHandle(Request request, Response response) { … … 50 64 // Then, check for accepted languages 51 65 // 52 if (locale == null ) {66 if (locale == null && !ignoreClientInfo) { 53 67 List<Preference<Language>> acceptedLanguages = request.getClientInfo().getAcceptedLanguages(); 54 68 if (!acceptedLanguages.isEmpty()) { trunk/modules/kauri-locale-assignment/src/main/kauri/spring/services.xml
r999 r1407 16 16 <context:annotation-config/> 17 17 18 <kauri:module restletContext="context" classLoader="classloader" handle="module" />19 18 <kauri:module restletContext="context" classLoader="classloader" handle="module" conf="confRegistry"/> 19 20 20 <bean class="org.kauriproject.i18n.locale_assignment.LocaleAssigner"> 21 21 <constructor-arg ref="module"/> 22 <constructor-arg ref="confRegistry"/> 22 23 </bean> 23 24 24 25 </beans>
