You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hivemind.apache.org by kn...@apache.org on 2005/01/31 11:10:54 UTC
cvs commit: jakarta-hivemind/framework/src/test/org/apache/hivemind/impl TestSchemaProcessor.java
knut 2005/01/31 02:10:54
Modified: src/documentation/content/xdocs configurations.xml
descriptor.xml
framework/src/java/org/apache/hivemind/impl
SchemaProcessorImpl.java
framework/src/test/org/apache/hivemind/impl
TestSchemaProcessor.java
Log:
Use the translated attribute value as the key for mapped configurations.
Revision Changes Path
1.13 +3 -2 jakarta-hivemind/src/documentation/content/xdocs/configurations.xml
Index: configurations.xml
===================================================================
RCS file: /home/cvs/jakarta-hivemind/src/documentation/content/xdocs/configurations.xml,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- configurations.xml 5 Jan 2005 21:53:31 -0000 1.12
+++ configurations.xml 31 Jan 2005 10:10:54 -0000 1.13
@@ -158,10 +158,11 @@
<p>As mentioned it is also possible to have the configuration contributions
injected as a Map. This requires the schema to define the attribute of
- the top-level elements which should be used as the key for the elements
+ the top-level elements which should be used as the key for the objects
in the map. This is specified using &_element;'s <code>key-attribute</code>
attribute. The identified key attribute is implicitly marked as
- <em>required</em> and <em>unique</em>.</p>
+ <em>required</em> and <em>unique</em>. Further it is the <em>translated</em>
+ attribute value which is used as the key in the map.</p>
<p>The list / map of elements is always injected as an <em>unmodifiable</em>
collection. An empty list / map may be injected, but never
<code>null</code>.</p>
1.19 +4 -4 jakarta-hivemind/src/documentation/content/xdocs/descriptor.xml
Index: descriptor.xml
===================================================================
RCS file: /home/cvs/jakarta-hivemind/src/documentation/content/xdocs/descriptor.xml,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- descriptor.xml 5 Jan 2005 21:53:31 -0000 1.18
+++ descriptor.xml 31 Jan 2005 10:10:54 -0000 1.19
@@ -292,10 +292,10 @@
<td>key-attribute</td>
<td>string</td>
<td>no</td>
- <td>The name of this element's &_attribute; which will be used as a unique key
- for configuration contributions corresponding to this element. The
- contributions can then be accessed in a Map using this key. The specified
- &_attribute; is implicitly marked as <em>required</em> and
+ <td>The name of this element's &_attribute; whose <em>translated</em> value will
+ be used as a unique key for configuration contributions corresponding to this
+ element. The contributions can then be accessed in a Map using this key. The
+ specified &_attribute; is implicitly marked as <em>required</em> and
<em>unique</em>.</td>
</tr>
</table>
1.13 +10 -2 jakarta-hivemind/framework/src/java/org/apache/hivemind/impl/SchemaProcessorImpl.java
Index: SchemaProcessorImpl.java
===================================================================
RCS file: /home/cvs/jakarta-hivemind/framework/src/java/org/apache/hivemind/impl/SchemaProcessorImpl.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- SchemaProcessorImpl.java 6 Jan 2005 01:45:12 -0000 1.12
+++ SchemaProcessorImpl.java 31 Jan 2005 10:10:54 -0000 1.13
@@ -26,6 +26,7 @@
import org.apache.hivemind.schema.Schema;
import org.apache.hivemind.schema.SchemaProcessor;
import org.apache.hivemind.schema.Translator;
+import org.apache.hivemind.util.PropertyUtils;
/**
* Used to assemble all the {@link org.apache.hivemind.Contribution}s contributed to an
@@ -93,9 +94,16 @@
if (_canElementsBeMapped)
{
- String key = peekElement().getAttributeValue(_activeElement.getKeyAttribute());
+ Element currentElement = peekElement();
- _mappedElements.put(key, element);
+ String keyAttribute = _activeElement.getKeyAttribute();
+
+ Translator t = getAttributeTranslator(keyAttribute);
+
+ Object finalValue = t.translate(getContributingModule(), Object.class, currentElement
+ .getAttributeValue(keyAttribute), currentElement.getLocation());
+
+ _mappedElements.put(finalValue, element);
}
}
1.10 +13 -1 jakarta-hivemind/framework/src/test/org/apache/hivemind/impl/TestSchemaProcessor.java
Index: TestSchemaProcessor.java
===================================================================
RCS file: /home/cvs/jakarta-hivemind/framework/src/test/org/apache/hivemind/impl/TestSchemaProcessor.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- TestSchemaProcessor.java 6 Jan 2005 01:45:16 -0000 1.9
+++ TestSchemaProcessor.java 31 Jan 2005 10:10:54 -0000 1.10
@@ -23,6 +23,7 @@
import org.apache.hivemind.internal.Module;
import org.apache.hivemind.schema.SchemaProcessor;
+import org.apache.hivemind.schema.Translator;
import org.apache.hivemind.schema.impl.AttributeModelImpl;
import org.apache.hivemind.schema.impl.ElementModelImpl;
import org.apache.hivemind.schema.impl.SchemaImpl;
@@ -245,6 +246,7 @@
AttributeModelImpl am = new AttributeModelImpl();
am.setName("name");
+ am.setTranslator("cartoon");
em.addAttributeModel(am);
@@ -278,6 +280,16 @@
m.expandSymbols("fred", null);
control.setReturnValue("fred");
+ MockControl tControl = newControl(Translator.class);
+ Translator t = (Translator) tControl.getMock();
+
+ m.getTranslator("cartoon");
+ control.setReturnValue(t);
+
+ Object flintstoneKey = new Object();
+ t.translate(m, Object.class, "flintstone", element.getLocation());
+ tControl.setReturnValue(flintstoneKey);
+
replayControls();
p.process(elements, m);
@@ -285,7 +297,7 @@
Map map = p.getMappedElements();
assertEquals(1, map.size());
- StringHolder h = (StringHolder) map.get("flintstone");
+ StringHolder h = (StringHolder) map.get(flintstoneKey);
assertEquals("fred", h.getValue());
---------------------------------------------------------------------
To unsubscribe, e-mail: hivemind-cvs-unsubscribe@jakarta.apache.org
For additional commands, e-mail: hivemind-cvs-help@jakarta.apache.org