ISIS-903: use Wicket's Request rather than Session to obtain the Locale

... so the translation used changes instantaneously based on the 
Accept-Language header


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/db506103
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/db506103
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/db506103

Branch: refs/heads/master
Commit: db5061034803dc084423ed452583c05a2c8374e3
Parents: a4498ac
Author: Dan Haywood <[email protected]>
Authored: Fri Feb 20 13:45:46 2015 +0000
Committer: Dan Haywood <[email protected]>
Committed: Fri Feb 20 13:45:46 2015 +0000

----------------------------------------------------------------------
 .../viewer/services/LocaleProviderWicket.java      |  3 ++-
 .../services/TranslationsResolverWicket.java       | 17 ++++++++++++++++-
 2 files changed, 18 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/db506103/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/LocaleProviderWicket.java
----------------------------------------------------------------------
diff --git 
a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/LocaleProviderWicket.java
 
b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/LocaleProviderWicket.java
index 9f3b58d..f8bb598 100644
--- 
a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/LocaleProviderWicket.java
+++ 
b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/LocaleProviderWicket.java
@@ -21,6 +21,7 @@ package org.apache.isis.viewer.wicket.viewer.services;
 import java.util.Locale;
 import org.apache.wicket.Application;
 import org.apache.wicket.Session;
+import org.apache.wicket.request.cycle.RequestCycle;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.isis.applib.annotation.DomainService;
@@ -46,7 +47,7 @@ public class LocaleProviderWicket implements LocaleProvider {
             // eg if request from RO viewer
             return null;
         }
-        return getSession().getLocale();
+        return RequestCycle.get().getRequest().getLocale();
     }
 
     protected Session getSession() {

http://git-wip-us.apache.org/repos/asf/isis/blob/db506103/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/TranslationsResolverWicket.java
----------------------------------------------------------------------
diff --git 
a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/TranslationsResolverWicket.java
 
b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/TranslationsResolverWicket.java
index 2abbbba..e6045a3 100644
--- 
a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/TranslationsResolverWicket.java
+++ 
b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/TranslationsResolverWicket.java
@@ -22,9 +22,15 @@ import java.io.File;
 import java.io.IOException;
 import java.net.URL;
 import java.nio.file.Path;
+import java.util.Collections;
 import java.util.List;
+import java.util.regex.Pattern;
 import javax.servlet.ServletContext;
 import com.google.common.base.Charsets;
+import com.google.common.base.Predicate;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
 import com.google.common.io.CharSource;
 import com.google.common.io.Files;
 import com.google.common.io.Resources;
@@ -78,12 +84,21 @@ public class TranslationsResolverWicket implements 
TranslationsResolver {
         return getIsisWicketApplication().getServletContext();
     }
 
+    private static Pattern nonEmpty = Pattern.compile("^(#:|msgid|msgstr).+$");
     private static List<String> readLines(final URL url) throws IOException {
         if(url == null) {
             return null;
         }
         final CharSource charSource = Resources.asCharSource(url, 
Charsets.UTF_8);
-        return charSource.readLines();
+        final ImmutableList<String> strings = charSource.readLines();
+        return Collections.unmodifiableList(
+                Lists.newArrayList(
+                Iterables.filter(strings, new Predicate<String>() {
+                    @Override
+                    public boolean apply(final String input) {
+                        return input != null && 
nonEmpty.matcher(input).matches();
+                    }
+                })));
     }
 
     protected IsisWicketApplication getIsisWicketApplication() {

Reply via email to