Author: jdonnerstag
Date: Fri Oct 23 19:58:02 2009
New Revision: 829194

URL: http://svn.apache.org/viewvc?rev=829194&view=rev
Log:
fixed Behavior for accepted locales should fit the HTTP Specification
Made MockHttpServletRequest.getLocales() to return all locales from 
"Accept-Language" header
Issue: WICKET-2533

Modified:
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java?rev=829194&r1=829193&r2=829194&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java
 Fri Oct 23 19:58:02 2009
@@ -538,22 +538,20 @@
         */
        public Locale getLocale()
        {
-               final String header = getHeader("Accept-Language");
-               if (header == null)
-               {
-                       return Locale.getDefault();
-               }
-
-               final String[] firstLocale = header.split(",");
-               if (firstLocale.length < 1)
-               {
-                       return Locale.getDefault();
-               }
+               return getLocales().nextElement();
+       }
 
-               final String[] bits = firstLocale[0].split("-");
+       /**
+        * 
+        * @param value
+        * @return locale
+        */
+       private Locale getLocale(final String value)
+       {
+               final String[] bits = value.split("-");
                if (bits.length < 1)
                {
-                       return Locale.getDefault();
+                       return null;
                }
 
                final String language = bits[0].toLowerCase();
@@ -575,8 +573,26 @@
         */
        public Enumeration<Locale> getLocales()
        {
-               List<Locale> list = new ArrayList<Locale>(1);
-               list.add(getLocale());
+               List<Locale> list = new ArrayList<Locale>();
+               final String header = getHeader("Accept-Language");
+               if (header != null)
+               {
+                       final String[] locales = header.split(",");
+                       for (String value : locales)
+                       {
+                               Locale locale = getLocale(value);
+                               if (locale != null)
+                               {
+                                       list.add(locale);
+                               }
+                       }
+               }
+
+               if (list.size() == 0)
+               {
+                       list.add(Locale.getDefault());
+               }
+
                return Collections.enumeration(list);
        }
 


Reply via email to