hlship 2003/06/18 11:47:01 Modified: hivemind/src/test/hivemind/test/config SetLocation.xml hivemind/xdocs descriptor.xml configuration.xml intro.xml hivemind/src/test/hivemind/test/parse TestDescriptorParser.java TestToString.java hivemind/src/java/org/apache/commons/hivemind/parse DescriptorParser.java HiveMind_1.0.xsd AbstractInstanceBuilderDescriptor.java hivemind/src/test-data/sample sample-registry.xml hivemind/src/xsl hivemind.xsl Removed: hivemind/src/test/hivemind/test/parse SetLocation.xml hivemind/src/java/org/apache/commons/hivemind/parse SetLocationDescriptor.java Log: Remote <set-location> element; location property automatically set when appropriate (object implements ILocationHolder). Revision Changes Path 1.2 +1 -2 jakarta-commons-sandbox/hivemind/src/test/hivemind/test/config/SetLocation.xml Index: SetLocation.xml =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/src/test/hivemind/test/config/SetLocation.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- SetLocation.xml 4 Jun 2003 21:46:05 -0000 1.1 +++ SetLocation.xml 18 Jun 2003 18:47:00 -0000 1.2 @@ -8,7 +8,6 @@ <configuration id="Config" element-type="hivemind.test.config.ConfigElement"> <create-instance class="hivemind.test.config.ConfigElement"> <set property="title" value="First"/> - <set-location property="location"/> </create-instance> </configuration> </module> 1.5 +24 -12 jakarta-commons-sandbox/hivemind/xdocs/descriptor.xml Index: descriptor.xml =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/xdocs/descriptor.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- descriptor.xml 11 Jun 2003 18:43:12 -0000 1.4 +++ descriptor.xml 18 Jun 2003 18:47:00 -0000 1.5 @@ -507,6 +507,17 @@ <p> &_create-instance; instantiates an object from a class name, and then configures the new object. The object may be contributed to a service extension point or configuration extension point.</p> + + <p> + If the created object implements the + <code>ILocationHolder</code> interface, + then the newly created object's <code>location</code> property + is set to the location of the &_create-instance; element. + <em>Note:</em> + This applies to &set-create;, &factory; and &set-factory; + as well. + </p> + <table> <tr> <th>Attribute</th> @@ -582,8 +593,8 @@ <tr> <td>class</td> <td>class name</td> <td>yes</td> <td>Fully qualified class name to instantiate.</td> </tr> </table> </section> <section name="factory"> - <p> &_factory; instantiates an object obtains a factory instance and has - the factory create a new instance, which is configured.</p> + <p> &_factory; uses a factory service to create an object, + which is then configured.</p> <p>&_factory; contains the same elements as &create-instance;.</p> <table> <tr> @@ -592,13 +603,7 @@ <th>Required ?</th> <th>Description</th> </tr> - <tr> - <td>property</td> - <td>string</td> - <td>yes</td> - <td>The name of the property to be updated to the newly created - object.</td> - </tr> + <tr> <td>service-id</td> <td>service id</td> @@ -609,8 +614,8 @@ </table> </section> <section name="set-factory"> - <p> &_set-factory; instantiates an object obtained from a factory instance - and has the factory create a new instance, which is configured.</p> + <p> &_set-factory; uses a factory service to create an object, + which is then configured.</p> <p>&_set-factory; contains the same elements as &create-instance;.</p> <table> <tr> @@ -619,6 +624,13 @@ <th>Required ?</th> <th>Description</th> </tr> + <tr> + <td>property</td> + <td>string</td> + <td>yes</td> + <td>The name of the property to be updated to the newly created + object.</td> + </tr> <tr> <td>service-id</td> <td>service id</td> 1.3 +11 -3 jakarta-commons-sandbox/hivemind/xdocs/configuration.xml Index: configuration.xml =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/xdocs/configuration.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- configuration.xml 12 Jun 2003 20:57:39 -0000 1.2 +++ configuration.xml 18 Jun 2003 18:47:00 -0000 1.3 @@ -15,8 +15,16 @@ <p> A central concept in HiveMind is <em>configurations</em>. Once you have a set of services, its natural to want to configure those services. In HiveMind, a configuration -is a list of <em>elements</em>. Each element is contributed by a module ... any module may make -contributes to any service extension point. +is an unordered list of <em>elements</em>. Each element is contributed by a module ... any module may make +contributes to any configuration extension point. +</p> + +<p> +There is not a direct connection between a service and a configuration, though it is often the case +that a service and a configuration will be similarily named (or even identically named; services +and configurations are in seperate namespaces). Any relationship between a service and a configuration +is explicit only in code ... the service may request a configuration from the registry and operate +on the elements it receives. </p> </section> 1.3 +7 -1 jakarta-commons-sandbox/hivemind/xdocs/intro.xml Index: intro.xml =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/xdocs/intro.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- intro.xml 11 Jun 2003 18:43:12 -0000 1.2 +++ intro.xml 18 Jun 2003 18:47:00 -0000 1.3 @@ -184,6 +184,12 @@ the application. </p> + <p>The <a href="base-registry.html">HiveMind module descriptor documentation</a> + gives a general idea of what the documentation looks like. Since its documentation + for just the core HiveMind module, it doesn't really show off the bells and whistles + you get when multiple modules work together. + </p> + </section> <section name="Out of Scope"> 1.6 +2 -16 jakarta-commons-sandbox/hivemind/src/test/hivemind/test/parse/TestDescriptorParser.java Index: TestDescriptorParser.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/src/test/hivemind/test/parse/TestDescriptorParser.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- TestDescriptorParser.java 9 Jun 2003 22:23:09 -0000 1.5 +++ TestDescriptorParser.java 18 Jun 2003 18:47:00 -0000 1.6 @@ -62,18 +62,17 @@ import java.util.List; import org.apache.commons.hivemind.Occurances; +import org.apache.commons.hivemind.parse.AbstractInstanceBuilderDescriptor; import org.apache.commons.hivemind.parse.ConfigurationDescriptor; import org.apache.commons.hivemind.parse.ContributeConfigurationDescriptor; import org.apache.commons.hivemind.parse.ContributeServiceDescriptor; import org.apache.commons.hivemind.parse.CreateInstanceDescriptor; import org.apache.commons.hivemind.parse.ExpressionDescriptor; import org.apache.commons.hivemind.parse.FactoryDescriptor; -import org.apache.commons.hivemind.parse.AbstractInstanceBuilderDescriptor; import org.apache.commons.hivemind.parse.InterceptorDescriptor; import org.apache.commons.hivemind.parse.ModuleDescriptor; import org.apache.commons.hivemind.parse.ServiceDescriptor; import org.apache.commons.hivemind.parse.ServiceRefDescriptor; -import org.apache.commons.hivemind.parse.SetLocationDescriptor; import org.apache.commons.hivemind.parse.ValueDescriptor; import org.apache.commons.hivemind.parse.XMLDescriptor; import org.apache.tapestry.Tapestry; @@ -455,20 +454,7 @@ assertEquals("AnXMLFile.xml", xd.getPath()); } - public void testSetLocation() throws Exception - { - ModuleDescriptor md = parse("SetLocation.xml"); - - ServiceDescriptor sd = md.getService("Foo"); - AbstractInstanceBuilderDescriptor ibd = sd.getInstanceBuilder(); - List l = ibd.getConfigurators(); - assertEquals(1, l.size()); - SetLocationDescriptor d = (SetLocationDescriptor) l.get(0); - - assertEquals("location", d.getPropertyName()); - assertSame(ibd, d.getContainer()); - } public void testSetValueExtended() throws Exception { 1.3 +1 -3 jakarta-commons-sandbox/hivemind/src/test/hivemind/test/parse/TestToString.java Index: TestToString.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/src/test/hivemind/test/parse/TestToString.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- TestToString.java 4 Jun 2003 23:52:50 -0000 1.2 +++ TestToString.java 18 Jun 2003 18:47:00 -0000 1.3 @@ -78,7 +78,6 @@ import org.apache.commons.hivemind.parse.ModuleDescriptor; import org.apache.commons.hivemind.parse.ServiceDescriptor; import org.apache.commons.hivemind.parse.ServiceRefDescriptor; -import org.apache.commons.hivemind.parse.SetLocationDescriptor; import org.apache.commons.hivemind.parse.ValueDescriptor; import org.apache.commons.hivemind.parse.XMLDescriptor; @@ -108,7 +107,6 @@ new ModuleDescriptor().toString(); new ServiceDescriptor().toString(); new ServiceRefDescriptor().toString(); - new SetLocationDescriptor().toString(); new ValueDescriptor().toString(); new XMLDescriptor().toString(); new InterceptorDescriptor().toString(); 1.7 +1 -9 jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/parse/DescriptorParser.java Index: DescriptorParser.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/parse/DescriptorParser.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- DescriptorParser.java 10 Jun 2003 21:29:25 -0000 1.6 +++ DescriptorParser.java 18 Jun 2003 18:47:00 -0000 1.7 @@ -343,14 +343,6 @@ new String[] { "propertyName", "factoryServiceId" }); result.addSetNext(pattern, "addConfigurator"); - pattern = "*/set-location"; - - result.addObjectCreate(pattern, SetLocationDescriptor.class); - result.addRule(pattern, setLocationRule); - result.addSetLimitedProperties(pattern, "property", "propertyName"); - result.addSetTop(pattern, "setContainer"); - result.addSetNext(pattern, "addConfigurator"); - pattern = "*/interceptor"; result.addObjectCreate(pattern, InterceptorDescriptor.class); 1.6 +0 -8 jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/parse/HiveMind_1.0.xsd Index: HiveMind_1.0.xsd =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/parse/HiveMind_1.0.xsd,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- HiveMind_1.0.xsd 17 Jun 2003 21:13:04 -0000 1.5 +++ HiveMind_1.0.xsd 18 Jun 2003 18:47:00 -0000 1.6 @@ -238,14 +238,6 @@ </xs:attribute> </xs:complexType> </xs:element> - <xs:element name="set-location"> - <xs:annotation> - <xs:documentation>Used to set a property of the object to the location that created the object.</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:attributeGroup ref="property-setter"/> - </xs:complexType> - </xs:element> </xs:choice> </xs:complexType> <xs:element name="value" type="xs:string"> 1.3 +8 -1 jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/parse/AbstractInstanceBuilderDescriptor.java Index: AbstractInstanceBuilderDescriptor.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/parse/AbstractInstanceBuilderDescriptor.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- AbstractInstanceBuilderDescriptor.java 4 Jun 2003 23:52:47 -0000 1.2 +++ AbstractInstanceBuilderDescriptor.java 18 Jun 2003 18:47:00 -0000 1.3 @@ -64,6 +64,7 @@ import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.tapestry.ILocationHolder; import org.apache.tapestry.Tapestry; /** @@ -110,6 +111,12 @@ */ protected void configureNewInstance(Object object, IModule module) { + if (object instanceof ILocationHolder) + { + ILocationHolder holder = (ILocationHolder)object; + holder.setLocation(getLocation()); + } + int count = Tapestry.size(_configurators); if (count == 0) 1.2 +15 -1 jakarta-commons-sandbox/hivemind/src/test-data/sample/sample-registry.xml Index: sample-registry.xml =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/src/test-data/sample/sample-registry.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- sample-registry.xml 17 Jun 2003 21:13:04 -0000 1.1 +++ sample-registry.xml 18 Jun 2003 18:47:01 -0000 1.2 @@ -45,7 +45,9 @@ </service> </module> <module id="hivemind.test.config" uid="4" version="1.0.0"> - <configuration count="1" element-type="java.lang.String" id="hivemind.test.config.Required" uid="5"/> + <configuration count="1" element-type="java.lang.String" id="hivemind.test.config.Required" uid="5"> + <description>Trouble maker.</description> + </configuration> </module> <module id="zap.branigan" uid="6" version="1.0.1"> <service id="zap.branigan.Futurama" interface="futurama.Robot" uid="7"> @@ -60,4 +62,16 @@ <value>foo</value> </contribute-configuration> </module> + + <module id="teela" uid="10" version="1.0.0"> + <contribute-configuration configuration-id="org.apache.commons.hivemind.VariableSource" uid="11"> + <value>bar</value> + <value>baz</value> + </contribute-configuration> + + <contribute-service service-id="org.apache.commons.hivemind.LoggingInterceptor" uid="12"> + <interceptor service-id="teela.OneEye"/> + <interceptor service-id="teela.BigBoots"/> + </contribute-service> + </module> </registry> 1.2 +57 -5 jakarta-commons-sandbox/hivemind/src/xsl/hivemind.xsl Index: hivemind.xsl =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/src/xsl/hivemind.xsl,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- hivemind.xsl 17 Jun 2003 21:13:06 -0000 1.1 +++ hivemind.xsl 18 Jun 2003 18:47:01 -0000 1.2 @@ -161,15 +161,42 @@ </xsl:if> </tbody> </table> - <xsl:if test="*"> + <xsl:if test="*[local-name() != 'description']"> + <h3>Internal Contributions</h3> <ul> <xsl:apply-templates/> </ul> </xsl:if> + + <xsl:for-each select="/registry/module/[EMAIL PROTECTED] = current()/@id]"> + <xsl:sort select="../@id"/> + + <h3>Contributions from Module + <a> + <xsl:attribute name="href">#<xsl:value-of select="@uid"/></xsl:attribute> + <xsl:value-of select="../@id"/> + </a> + </h3> + + <ul> + <xsl:apply-templates select="*"/> + </ul> + + </xsl:for-each> + + </xsl:template> <xsl:template match="contribute-configuration"> - <h2> <xsl:attribute name="id"><xsl:value-of select="@uid"/></xsl:attribute> - Contribute Configuration <xsl:value-of select="@configuration-id"/> </h2> + <h2> <xsl:attribute name="id"><xsl:value-of select="@uid"/></xsl:attribute> + Contribute Configuration + + <a> + <xsl:attribute name="href">#<xsl:value-of select="/registry/module/[EMAIL PROTECTED] = current()/@configuration-id]/@uid"/></xsl:attribute> + <xsl:value-of select="@configuration-id"/> + </a> + + </h2> + <ul> <xsl:apply-templates/> </ul> @@ -201,15 +228,40 @@ </xsl:if> </tbody> </table> - <xsl:if test="*"> + <xsl:if test="*[local-name() != 'description']"> + <h3>Internal Contributions</h3> <ul> <xsl:apply-templates/> </ul> </xsl:if> + + <xsl:for-each select="/registry/module/[EMAIL PROTECTED] = current()/@id]"> + <xsl:sort select="../@id"/> + + <h3>Contributions from Module + <a> + <xsl:attribute name="href">#<xsl:value-of select="@uid"/></xsl:attribute> + <xsl:value-of select="../@id"/> + </a> + </h3> + + <ul> + <xsl:apply-templates select="*"/> + </ul> + + </xsl:for-each> + </xsl:template> <xsl:template match="contribute-service"> <h2> <xsl:attribute name="id"><xsl:value-of select="@uid"/></xsl:attribute> - Contribute Service <xsl:value-of select="@configuration-id"/> </h2> + Contribute Service + + <a> + <xsl:attribute name="href">#<xsl:value-of select="/registry/module/[EMAIL PROTECTED] = current()/@service-id]/@uid"/></xsl:attribute> + <xsl:value-of select="@service-id"/> + </a> + + </h2> <ul> <xsl:apply-templates/> </ul>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]