You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by hl...@apache.org on 2003/08/01 16:41:30 UTC

cvs commit: jakarta-commons-sandbox/hivemind maven.xml

hlship      2003/08/01 07:41:30

  Modified:    hivemind/xdocs localization.xml
               hivemind/src/test/hivemind/test/config
                        TestExtensionPoint.java
               hivemind/src/java/org/apache/commons/hivemind/schema/rules
                        BaseRule.java ReadContentRule.java
                        ReadAttributeRule.java
               hivemind maven.xml
  Added:       hivemind/src/test/hivemind/test/config Localized.xml
  Log:
  Add support for references to localized messages in contributed elements and attributes.
  
  Revision  Changes    Path
  1.4       +26 -2     jakarta-commons-sandbox/hivemind/xdocs/localization.xml
  
  Index: localization.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/xdocs/localization.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- localization.xml	31 Jul 2003 21:06:24 -0000	1.3
  +++ localization.xml	1 Aug 2003 14:41:29 -0000	1.4
  @@ -27,7 +27,31 @@
   </p>	
   
   <p>
  -<b>TODO: Implement '%' to access localized messages.</b>	
  +In a module descriptor, within the &extension; and &invoke-factory; elements, you can reference
  +	a localized message in an attribute or element content simply by prefixing the message key
  +	with '%'.  Examples:
  +	
  +<source><![CDATA[
  +  <extension point-id=". . .">
  +  
  +    <some-item message="%message.key">
  +      %other.message.key
  +    </some-item>
  +    
  +  </extension>
  + ]]></source>
  +</p>
  +
  +<p>
  +The two keys (<code>message.key</code>	 and <code>other.message.key</code>) are searched
  +for in the <em>contributing</em> module's messages.
  +</p>
  +
  +<p>
  +HiveMind gracefully recovers from undefined messages.  If a message is not in the properties file, the 
  +HiveMind provides a substitute value by converting the key to upper-case and adding brackets, i.e. 
  +<code>[MESSAGE.KEY]</code>.  This allows your application to continue running, but clearly identifies missing
  +messages.
   </p>
   
   	
  
  
  
  1.3       +13 -0     jakarta-commons-sandbox/hivemind/src/test/hivemind/test/config/TestExtensionPoint.java
  
  Index: TestExtensionPoint.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/src/test/hivemind/test/config/TestExtensionPoint.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestExtensionPoint.java	30 Jul 2003 22:34:53 -0000	1.2
  +++ TestExtensionPoint.java	1 Aug 2003 14:41:29 -0000	1.3
  @@ -280,4 +280,17 @@
           assertEquals("key2", e.getAttributeValue("key"));
           assertEquals("${value2}", e.getAttributeValue("value"));
       }
  +
  +    public void testLocalized() throws Exception
  +    {
  +        Registry r = buildRegistry("Localized.xml");
  +
  +        List l = r.getExtensionPointElements("hivemind.test.config.Localized");
  +        assertEquals(1, l.size());
  +
  +        Datum d = (Datum) l.get(0);
  +
  +        assertEquals("message", d.getKey());
  +        assertEquals("Some Damn Thing", d.getValue());
  +    }
   }
  
  
  
  1.1                  jakarta-commons-sandbox/hivemind/src/test/hivemind/test/config/Localized.xml
  
  Index: Localized.xml
  ===================================================================
  <?xml version="1.0" encoding="UTF-8"?>
  <!-- $Id: Localized.xml,v 1.1 2003/08/01 14:41:29 hlship Exp $ -->
  <module id="hivemind.test.config" version="1.0.0">
  	<extension-point id="Localized">
  		<schema>
  			<element name="datum">
  			  <attribute name="key" required="true"/>
  			  <attribute name="value" required="true"/>
  				<rules>
  					<create-object class="hivemind.test.config.impl.Datum"/>
  					<read-attribute property="key" attribute="key"/>
  					<read-attribute property="value" attribute="value"/>
  					<invoke-parent method="addElement"/>
  				</rules>
  			</element>
  		</schema>
  	</extension-point>
  	<extension point-id="Localized">
  		<datum key="message" value="%inner-message"/>
  	</extension>
  
  </module>
  
  
  
  1.2       +22 -4     jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/schema/rules/BaseRule.java
  
  Index: BaseRule.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/schema/rules/BaseRule.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BaseRule.java	29 Jul 2003 22:20:48 -0000	1.1
  +++ BaseRule.java	1 Aug 2003 14:41:30 -0000	1.2
  @@ -78,14 +78,32 @@
       private static final Log LOG = LogFactory.getLog(BaseRule.class);
   
       /**
  -     * Expands symbols in the input value.
  +     * Invoked to process text from an attribute or from an element's content.  Performs
  +     * two jobs:
  +     * <ul>
  +     * <li>Convert localized message references to localized strings
  +     * <li>Expand symbols using {@link Registry#expandSymbols(String, ILocation)}
  +     * </ul>
        * 
  -     * @see Registry#expandSymbols(String, ILocation)
  +     * <p>
  +     * Note: if the input is a localized message then no symbol expansion takes place.
  +     * Localized message references are simply strings that begin with '%'.  The remainder
  +     * of the string is the message key.
  +     * 
  +     * <p>
  +     * A null input value passes through unchanged.
        */
  -    protected String expandSymbols(SchemaProcessor processor, Element element, String inputValue)
  +    protected String processText(SchemaProcessor processor, Element element, String inputValue)
       {
           if (inputValue == null)
               return null;
  +
  +        if (inputValue.startsWith("%"))
  +        {
  +            String key = inputValue.substring(1);
  +
  +            return processor.getContributingModule().getMessages().getMessage(key);
  +        }
   
           Registry registry = processor.getContributingModule().getRegistry();
   
  
  
  
  1.2       +2 -2      jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/schema/rules/ReadContentRule.java
  
  Index: ReadContentRule.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/schema/rules/ReadContentRule.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ReadContentRule.java	29 Jul 2003 22:20:48 -0000	1.1
  +++ ReadContentRule.java	1 Aug 2003 14:41:30 -0000	1.2
  @@ -81,7 +81,7 @@
   
       public void begin(SchemaProcessor processor, Element element)
       {
  -        String value = expandSymbols(processor, element, element.getContent());
  +        String value = processText(processor, element, element.getContent());
   
           Object finalValue =
               _translator == null ? value : _translator.translate(processor, element, value);
  
  
  
  1.2       +2 -2      jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/schema/rules/ReadAttributeRule.java
  
  Index: ReadAttributeRule.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/schema/rules/ReadAttributeRule.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ReadAttributeRule.java	29 Jul 2003 22:20:48 -0000	1.1
  +++ ReadAttributeRule.java	1 Aug 2003 14:41:30 -0000	1.2
  @@ -84,7 +84,7 @@
           if (rawValue == null && _skipIfNull)
               return;
   
  -        String value = expandSymbols(processor, element, rawValue);
  +        String value = processText(processor, element, rawValue);
   
           Object finalValue =
               _translator == null ? value : _translator.translate(processor, element, value);
  
  
  
  1.6       +2 -2      jakarta-commons-sandbox/hivemind/maven.xml
  
  Index: maven.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/maven.xml,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- maven.xml	1 Aug 2003 14:21:38 -0000	1.5
  +++ maven.xml	1 Aug 2003 14:41:30 -0000	1.6
  @@ -12,7 +12,7 @@
   		<manifestClassPath property="hivemind.manifest.class.path">
   			<classpath>
   				
  -				<!-- This, unforutnately, includes a few dependencies we don't want, but
  +				<!-- This, unfortunately, includes a few dependencies we don't want, but
   					   that's largely OK. -->
   					   
   				<path refid="maven.dependency.classpath"/>
  
  
  

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