You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2005/08/06 18:21:46 UTC

cvs commit: jakarta-tapestry/framework/src/java/org/apache/tapestry/services/impl ComponentMessagesSourceImpl.java

hlship      2005/08/06 09:21:46

  Modified:    .        status.xml
               framework/src/test/org/apache/tapestry/junit
                        TestComponentMessages.java Library.properties
                        Library_fr.properties
               framework/src/java/org/apache/tapestry/services/impl
                        ComponentMessagesSourceImpl.java
  Log:
  TAPESTRY-530: Namespace messages are retrieved using page's locale rather than engine's locale
  
  Revision  Changes    Path
  1.189     +3 -2      jakarta-tapestry/status.xml
  
  Index: status.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/status.xml,v
  retrieving revision 1.188
  retrieving revision 1.189
  diff -u -r1.188 -r1.189
  --- status.xml	6 Aug 2005 16:07:29 -0000	1.188
  +++ status.xml	6 Aug 2005 16:21:46 -0000	1.189
  @@ -1,4 +1,4 @@
  -<?xml version="1.0"?>
  +  <?xml version="1.0"?>
   <!-- 
      Copyright 2005 The Apache Software Foundation
   
  @@ -69,8 +69,9 @@
         <action type="fix" dev="HLS" fixes-bug="TAPESTRY-519" due-to="Raphael Jean">NestedMarkupWriterImpl doesn't close the current open tag when getBuffer() is called</action>
         <action type="fix" dev="PF" fixes-bug="TAPESTRY-407">Unable to override default pattern of DateTranslator and NumberTranslator when initialized via the translator binding.</action>
         <action type="fix" dev="HLS" fixes-bug="TAPESTRY-529">Provide application: prefix to reference the application (root) namespace (from a library)</action>   
  -      <action type="update" dev="HLS">Enable Eclipse project-specific compile options, active additional checks as errors, and fix those errors in the code base.</action> 
  +      <action type="update" dev="HLS">Enable Eclipse project-specific compile options, active additional checks as errors, and fix those errors in the code base</action> 
         <action type="fix" dev="HLS" fixes-bug="TAPESTRY-534">WebRequest interface doesn't expose getRemoteUser(), isUserInRole() or getUserPrincipal()</action>
  +      <action type="fix" dev="HLS" fixes-bug="TAPESTRY-530" due-to="Raphael Jean">Namespace messages are retrieved using page's locale rather than engine's locale</action>
       </release>
       <release version="4.0-beta-3" date="Jul 22 2005">
         <action type="fix" dev="HLS" fixes-bug="TAPESTRY-398" due-to="Jonas Maurus">HiveMind configuration error breaks the useage of the state: binding prefix</action>
  
  
  
  1.15      +21 -0     jakarta-tapestry/framework/src/test/org/apache/tapestry/junit/TestComponentMessages.java
  
  Index: TestComponentMessages.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/junit/TestComponentMessages.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- TestComponentMessages.java	27 Jul 2005 22:24:49 -0000	1.14
  +++ TestComponentMessages.java	6 Aug 2005 16:21:46 -0000	1.15
  @@ -292,4 +292,25 @@
           assertEquals("A formatted date: 24/12/66", messages.format("using-date-format", d));
   
       }
  +
  +    public void testMultipleLocalesWithNamespace()
  +    {
  +        ComponentMessagesSourceImpl source = new ComponentMessagesSourceImpl();
  +        source.setComponentPropertySource(new NullComponentPropertySource());
  +
  +        IComponentSpecification spec = newSpec(MOCK1);
  +        spec.setLocation(new CreatorLocation());
  +
  +        INamespace namespace = new Namespace(null, null, newLibrarySpec(), null, null);
  +
  +        IPage page = newPage(spec, source, new Locale("fr"));
  +        page.setNamespace(namespace);
  +        
  +        assertEquals("multilocale_fr", source.getMessages(page).getMessage("multilocale"));
  +        
  +        page = newPage(spec, source, new Locale("en"));
  +        page.setNamespace(namespace);
  +
  +        assertEquals("multilocale", source.getMessages(page).getMessage("multilocale"));
  +    }
   }
  \ No newline at end of file
  
  
  
  1.2       +2 -1      jakarta-tapestry/framework/src/test/org/apache/tapestry/junit/Library.properties
  
  Index: Library.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/junit/Library.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Library.properties	6 Feb 2005 20:36:13 -0000	1.1
  +++ Library.properties	6 Aug 2005 16:21:46 -0000	1.2
  @@ -14,4 +14,5 @@
   
   only-in-namespace=LIBRARY_BASE.only-in-namespace
   
  -component-overrides-namespace=LIBRARY_BASE.component-overrides-namespace
  \ No newline at end of file
  +component-overrides-namespace=LIBRARY_BASE.component-overrides-namespace
  +multilocale=multilocale
  
  
  
  1.2       +2 -1      jakarta-tapestry/framework/src/test/org/apache/tapestry/junit/Library_fr.properties
  
  Index: Library_fr.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/junit/Library_fr.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Library_fr.properties	6 Feb 2005 20:36:13 -0000	1.1
  +++ Library_fr.properties	6 Aug 2005 16:21:46 -0000	1.2
  @@ -13,4 +13,5 @@
   # limitations under the License.
   
   localized-in-namespace=LIBRARY_FR.localized-in-namespace
  -localized-component-overrides-namespace=LIBRARY_FR.localized-component-overrides-namespace
  \ No newline at end of file
  +localized-component-overrides-namespace=LIBRARY_FR.localized-component-overrides-namespace
  +multilocale=multilocale_fr
  
  
  
  1.11      +26 -12    jakarta-tapestry/framework/src/java/org/apache/tapestry/services/impl/ComponentMessagesSourceImpl.java
  
  Index: ComponentMessagesSourceImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/services/impl/ComponentMessagesSourceImpl.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ComponentMessagesSourceImpl.java	8 Feb 2005 16:00:50 -0000	1.10
  +++ ComponentMessagesSourceImpl.java	6 Aug 2005 16:21:46 -0000	1.11
  @@ -139,8 +139,9 @@
       {
           List localizations = findLocalizationsForResource(baseResourceLocation, locale);
   
  -        Properties parent = getNamespaceProperties(component, locale);
  -
  +        Properties parent = null;
  +        Properties assembledProperties = null;
  +        
           Iterator i = localizations.iterator();
   
           while (i.hasNext())
  @@ -149,19 +150,32 @@
   
               Locale l = rl.getLocale();
   
  -            Properties properties = (Properties) propertiesMap.get(l);
  -
  -            if (properties == null)
  -            {
  -                properties = readComponentProperties(component, l, rl.getResource(), parent);
  -
  -                propertiesMap.put(l, properties);
  +            // Retrieve namespace properties for current locale (and parent locales)
  +        	Properties namespaceProperties = getNamespaceProperties(component, l);
  +        	
  +        	// Use the namespace properties as default for assembled properties
  +            assembledProperties = new Properties(namespaceProperties);
  +            
  +            // Read localized properties for component
  +            Properties properties = readComponentProperties(component, l, rl.getResource(), null);
  +
  +            // Override parent properties with current locale
  +            if (parent != null) {
  +            	if (properties != null)
  +            		parent.putAll(properties);
               }
  -
  -            parent = properties;
  +            else
  +            	parent = properties;
  +            
  +            // Add to assembled properties
  +            if (parent != null)
  +            	assembledProperties.putAll(parent);
  +            
  +            // Save result in cache
  +            propertiesMap.put(l, assembledProperties);
           }
   
  -        return parent;
  +        return assembledProperties;
       }
   
       private Properties assembleNamespaceProperties(INamespace namespace, Map propertiesMap,
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org