[java-identity-provider COMMIT] /trunk/idp-consent/src/main/java/net/shibboleth/idp/consent/logic/AttributeDisplayNam...

noreply at shibboleth.net noreply at shibboleth.net
Thu Mar 12 07:47:56 EDT 2015


Author: rdw
Date: Thu Mar 12 07:47:56 2015
New Revision: 7408

URL: http://svn.shibboleth.net/view/java-identity-provider?rev=7408&view=rev
Log:
IDP-635 Missed checkin: Add HttpServletRequest /default language sensitive constructor.  Leave old server base constructor in place pending tests

Modified:
    trunk/idp-consent/src/main/java/net/shibboleth/idp/consent/logic/AttributeDisplayNameFunction.java

Modified: trunk/idp-consent/src/main/java/net/shibboleth/idp/consent/logic/AttributeDisplayNameFunction.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-consent/src/main/java/net/shibboleth/idp/consent/logic/AttributeDisplayNameFunction.java?rev=7408&r1=7407&r2=7408&view=diff
==============================================================================
--- trunk/idp-consent/src/main/java/net/shibboleth/idp/consent/logic/AttributeDisplayNameFunction.java (original)
+++ trunk/idp-consent/src/main/java/net/shibboleth/idp/consent/logic/AttributeDisplayNameFunction.java Thu Mar 12 07:47:56 2015
@@ -17,14 +17,22 @@
 
 package net.shibboleth.idp.consent.logic;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import javax.servlet.http.HttpServletRequest;
 
 import net.shibboleth.idp.attribute.IdPAttribute;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.logic.Constraint;
+
+import org.springframework.util.StringUtils;
 
 import com.google.common.base.Function;
 
@@ -35,37 +43,68 @@
 public class AttributeDisplayNameFunction implements Function<IdPAttribute, String> {
 
     /** Locale. */
-    @Nonnull private final Locale locale;
+    @Nonnull private final List<Locale> locales;
+    
+    /**
+     * Constructor.
+     * 
+     * @param l locale
+     * @deprecated use {@link #AttributeDisplayNameFunction(HttpServletRequest, String)}
+     */
+    @Deprecated public AttributeDisplayNameFunction(@Nonnull final Locale l) {
+        Constraint.isNotNull(l, "Locale cannot be null");
+
+        locales = Collections.singletonList(l);
+    }
 
     /**
      * Constructor.
-     *
-     * @param l locale
+     * 
+     * @param request The {@link HttpServletRequest} this is used to get the languages.
+     * @param defaultLangauages the comma delimited list of fallback languages
      */
-    public AttributeDisplayNameFunction(@Nonnull final Locale l) {
-        Constraint.isNotNull(l, "Locale cannot be null");
+    public AttributeDisplayNameFunction(@Nonnull HttpServletRequest request, @Nullable String defaultLangauages) {
 
-        locale = l;
+        final String[] languageStrings;
+
+        if (null == defaultLangauages) {
+            languageStrings = new String[0];
+        } else {
+            languageStrings = StringUtils.commaDelimitedListToStringArray(defaultLangauages);
+        }
+
+        final Enumeration<Locale> requestLocales = request.getLocales();
+        
+        final List<Locale> newLocales = new ArrayList<>();
+
+        while (requestLocales.hasMoreElements()) {
+            Locale l = requestLocales.nextElement();
+            newLocales.add(l);
+        }
+        for (String s : languageStrings) {
+            newLocales.add(new Locale(s));
+        }
+        locales = newLocales;
     }
 
     /** {@inheritDoc} */
-    @Override
-    @Nonnull @NotEmpty public String apply(@Nonnull final IdPAttribute input) {
+    @Override @Nonnull @NotEmpty public String apply(@Nonnull final IdPAttribute input) {
         if (input == null) {
             return "N/A";
         }
         final Map<Locale, String> displayNames = input.getDisplayNames();
         if (!displayNames.isEmpty()) {
-            String displayName = displayNames.get(locale);
-            if (displayName != null) {
-                return displayName;
-            }
-            displayName = displayNames.get(Locale.forLanguageTag(locale.getLanguage()));
-            if (displayName != null) {
-                return displayName;
+            for (Locale locale : locales) {
+                String displayName = displayNames.get(locale);
+                if (displayName != null) {
+                    return displayName;
+                }
+                displayName = displayNames.get(Locale.forLanguageTag(locale.getLanguage()));
+                if (displayName != null) {
+                    return displayName;
+                }
             }
         }
         return input.getId();
     }
-
 }



More information about the commits mailing list