You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2019/11/07 16:07:45 UTC

[syncope] branch 2_0_X updated: [SYNCOPE-1509] Using Language Tag Filtering

This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch 2_0_X
in repository https://gitbox.apache.org/repos/asf/syncope.git


The following commit(s) were added to refs/heads/2_0_X by this push:
     new d7e341e  [SYNCOPE-1509] Using Language Tag Filtering
d7e341e is described below

commit d7e341ea0d5cc81cbe6ff70a575f5f85514dfe0d
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Thu Nov 7 16:51:46 2019 +0100

    [SYNCOPE-1509] Using Language Tag Filtering
---
 .../apache/syncope/client/console/pages/Login.java | 25 ++++++++++++++++++++--
 .../syncope/fit/console/AbstractConsoleITCase.java |  3 +++
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/Login.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/Login.java
index 4c7364f..fc6e6df 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/Login.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/Login.java
@@ -21,8 +21,11 @@ package org.apache.syncope.client.console.pages;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.select.BootstrapSelect;
 import java.security.AccessControlException;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
+import javax.ws.rs.core.HttpHeaders;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.SyncopeConsoleApplication;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.commons.Constants;
@@ -48,6 +51,8 @@ import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
+import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
+import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -201,8 +206,24 @@ public class Login extends WebPage {
                 }
             });
 
-            // set default value to English
-            getModel().setObject(Locale.ENGLISH);
+            // set default language selection
+            List<Locale> filtered = Collections.emptyList();
+
+            String acceptLanguage = ((ServletWebRequest) RequestCycle.get().getRequest()).
+                    getHeader(HttpHeaders.ACCEPT_LANGUAGE);
+            if (StringUtils.isNotBlank(acceptLanguage)) {
+                try {
+                    filtered = Locale.filter(
+                            Locale.LanguageRange.parse(acceptLanguage), SyncopeConsoleApplication.SUPPORTED_LOCALES);
+                } catch (Exception e) {
+                    LOG.debug("Could not parse {} HTTP header value '{}'",
+                            HttpHeaders.ACCEPT_LANGUAGE, acceptLanguage, e);
+                }
+            }
+
+            getModel().setObject(filtered.isEmpty()
+                    ? Locale.ENGLISH
+                    : filtered.get(0));
         }
 
         @Override
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractConsoleITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractConsoleITCase.java
index 57e652c..3b69ded 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractConsoleITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractConsoleITCase.java
@@ -20,6 +20,7 @@ package org.apache.syncope.fit.console;
 
 import java.io.Serializable;
 import java.lang.reflect.Method;
+import java.util.Locale;
 import org.apache.syncope.client.console.pages.Login;
 import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
 import org.apache.syncope.common.rest.api.service.SyncopeService;
@@ -60,6 +61,8 @@ public abstract class AbstractConsoleITCase {
 
     @BeforeClass
     public static void setUp() {
+        Locale.setDefault(Locale.ENGLISH);
+
         TESTER = ConsoleSetup.TESTER;
 
         SYNCOPE_SERVICE = new SyncopeClientFactoryBean().