You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2011/08/14 03:08:16 UTC

svn commit: r1157450 - in /myfaces/core/branches/2.0.x: impl/src/main/java/org/apache/myfaces/application/ impl/src/main/java/org/apache/myfaces/el/unified/resolver/ shared/src/main/java/org/apache/myfaces/shared/resource/

Author: lu4242
Date: Sun Aug 14 01:08:15 2011
New Revision: 1157450

URL: http://svn.apache.org/viewvc?rev=1157450&view=rev
Log:
MYFACES-3278 ResourceHandler implementation should take into account UIViewRoot locale to load a resource

Modified:
    myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/application/ResourceHandlerImpl.java
    myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/el/unified/resolver/ResourceResolver.java
    myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceImpl.java

Modified: myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/application/ResourceHandlerImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/application/ResourceHandlerImpl.java?rev=1157450&r1=1157449&r2=1157450&view=diff
==============================================================================
--- myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/application/ResourceHandlerImpl.java (original)
+++ myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/application/ResourceHandlerImpl.java Sun Aug 14 01:08:15 2011
@@ -437,27 +437,47 @@ public class ResourceHandlerImpl extends
     {
         String localePrefix = null;
         FacesContext context = FacesContext.getCurrentInstance();
+        boolean isResourceRequest = context.getApplication().getResourceHandler().isResourceRequest(context);
 
+        if (isResourceRequest)
+        {
+            localePrefix = context.getExternalContext().getRequestParameterMap().get("loc");
+            
+            if (localePrefix != null)
+            {
+                return localePrefix;
+            }
+        }
+        
         String bundleName = context.getApplication().getMessageBundle();
 
         if (null != bundleName)
         {
-            Locale locale = context.getApplication().getViewHandler()
-                    .calculateLocale(context);
-
-            ResourceBundle bundle = ResourceBundle
-                    .getBundle(bundleName, locale, ClassUtils.getContextClassLoader());
+            Locale locale = null;
+            
+            if (isResourceRequest || context.getViewRoot() == null)
+            {
+                locale = context.getApplication().getViewHandler()
+                                .calculateLocale(context);
+            }
+            else
+            {
+                locale = context.getViewRoot().getLocale();
+            }
 
-            if (bundle != null)
+            try
             {
-                try
+                ResourceBundle bundle = ResourceBundle
+                        .getBundle(bundleName, locale, ClassUtils.getContextClassLoader());
+
+                if (bundle != null)
                 {
                     localePrefix = bundle.getString(ResourceHandler.LOCALE_PREFIX);
                 }
-                catch (MissingResourceException e)
-                {
-                    // Ignore it and return null
-                }
+            }
+            catch (MissingResourceException e)
+            {
+                // Ignore it and return null
             }
         }
         return localePrefix;

Modified: myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/el/unified/resolver/ResourceResolver.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/el/unified/resolver/ResourceResolver.java?rev=1157450&r1=1157449&r2=1157450&view=diff
==============================================================================
--- myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/el/unified/resolver/ResourceResolver.java (original)
+++ myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/el/unified/resolver/ResourceResolver.java Sun Aug 14 01:08:15 2011
@@ -94,9 +94,9 @@ public final class ResourceResolver exte
                 }
             }
             
+            context.setPropertyResolved(true);
             if (resource != null)
             {
-                context.setPropertyResolved(true);
                 return resource.getRequestPath();
             }
         }

Modified: myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceImpl.java?rev=1157450&r1=1157449&r2=1157450&view=diff
==============================================================================
--- myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceImpl.java (original)
+++ myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceImpl.java Sun Aug 14 01:08:15 2011
@@ -247,7 +247,11 @@ public class ResourceImpl extends Resour
                 path = path + "&stage=" + facesContext.getApplication().getProjectStage().toString();
             }
         }
-        
+        if (_resourceMeta.getLocalePrefix() != null)
+        {
+            path = path + (useAmp ? '&' : '?') + "loc=" + _resourceMeta.getLocalePrefix();
+            useAmp = true;
+        }
         return facesContext.getApplication().getViewHandler().getResourceURL(facesContext, path);
     }