I’ve got the following error using ant 1.6.2 to build the package. Any idea?

 

 

[junit] Testcase: testBasic(hivemind.test.ant.TestConstructRegistry):        FAILED

    [junit] expected:<...

    [junit]             version="1.0.0">

    [junit]        

    [junit]   The master module for HiveMind, defining core, universal functionality.

 

    [junit]   <configuration-point

    [junit]             id="hivemind.SymbolSources" uid="2">

    [junit]               Provides a list of sources for values of substitution symbols.

    [junit]                 <schema>

    [junit]                 <element

    [junit]                         name="source">Describes a single source of symbol values.

    [junit]   <attribute

    [junit]                         name="name" required="true">

    [junit]   A unique name used

    [junit]   to identify the source, used when ordering the sources.</attribute>

    [junit]                     <attribute name="class" translator="instance">

    [junit]       Name of a class implementing the SymbolSource interface.</attribute>

    [junit]                     <attribute name="service-id" translator="service">

    [junit]   Service configuration id for a service which implements the SymbolSource

    [junit]   interface.</attribute>

    [junit]                     <attribute name="before">

    [junit]       A list of the names of other sources this source should

    [junit]   precede.</attribute>

    [junit]                     <attribute name="after">

    [junit]       A list of the names of other sources this source should

    [junit]   follow.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.SymbolSourceContribution">

    [junit]                         <map attribute="class" property="source"/>

    [junit]                         <map attribute="service-id" property="source"/>

    [junit]                         <map attribute="before" property="followingNames"/>

    [junit]                         <map attribute="after" property="precedingNames"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.SymbolSources" uid="3">

    [junit]             <source before="hivemind.FactoryDefaults"

    [junit]                 name="hivemind.ApplicationDefaults" service-id="ApplicationDefaultsSymbolSource"/>

    [junit]             <source name="hivemind.FactoryDefaults" service-id="FactoryDefaultsSymbolSource"/>

    [junit]         </contribution>

    [junit]         <schema id="hivemind.Defaults" uid="4">

    [junit]             <element

    [junit]                     name="default">Provides a default symbol value.<attribute

    [junit]                     name="symbol" required="true">The id of the symbol to define a default value for.</attribute>

    [junit]                 <attribute name="value" required="true">The value for the symbol.</attribute>

    [junit]                 <conversion class="org.apache.hivemind.service.impl.FactoryDefault"/>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <configuration-point id="hivemind.FactoryDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="5">Extension point for setting "factory defaults" for symbol values.</configuration-point>

    [junit]         <service-point id="hivemind.FactoryDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]                 uid="6">SymbolSource implementation driven by the FactoryDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="FactoryDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ApplicationDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="7">Extension point for setting application defaults; these defaults will override factory defaults specified in the FactoryDefaults configuration point.</configuration-point>

    [junit]         <service-point id="hivemind.ApplicationDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]                 uid="8">SymbolSource implementation driven by the ApplicationDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ApplicationDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ClassFactory"

    [junit]             interface="org.apache.hivemind.service.ClassFactory"

    [junit]                 uid="9">Wrapper around Javassist used to dynamically create classes such as service interceptors.<create-instance

    [junit]                 class="org.apache.hivemind.service.impl.ClassFactoryImpl" model="primitive"/>

    [junit]         </service-point>

    [junit]         <schema id="hivemind.MethodFilter"

    [junit]                 uid="10">Used primarily as parameters to interceptor factories (such as LoggingInterceptor) to define which methods of service interface are to be included and which excluded.<element

    [junit]                     name="include">Identifies a method, or set of methods, to be included.<attribute

    [junit]                     name="method" required="true">A method pattern used to identify the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="true"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]             <element

    [junit]                     name="exclude">Identifies a method, or set of methods, to be excluded.<attribute

    [junit]                     name="method" required="true">A method pattern used to identify the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="false"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <service-point id="hivemind.LoggingInterceptor"

    [junit]             interface="org.apache.hivemind.ServiceInterceptorFactory"

    [junit]             parameters-schema-id="hivemind.MethodFilter"

    [junit]                 uid="11">An interceptor factory for adding method-level logging to a service. Logging occurs at level DEBUG and uses the service id as the logger. Method entry (with parameters) and method exit (with return value) are logged, as are any exceptions.<invoke-factory

    [junit]                 model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.LoggingInterceptorFactory">

    [junit]                     <set-service property="factory" service-id="ClassFactory"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.BuilderFactory"

    [junit]             interface="org.apache.hivemind.ServiceImplementationFactory" uid="12">Used to construct a service from a class name and optional constructor parameters and properties.<parameters-schema>

    [junit]                 <element

    [junit]                         name="construct">A single construct element identifies the class to instantiate.<attribute

    [junit]                         name="class" required="true">The name of the class to instantiate.</attribute>

    [junit]                     <attribute name="messages-property">The name of a property to assign invoking module's messages to.</attribute>

    [junit]                     <attribute name="log-property">The name of a property to assign the Log instance for the service to. The Log instance is built from the service configuration point id.</attribute>

    [junit]                     <attribute name="service-id-property">The name of a property to assign the configuration point id of the service to.</attribute>

    [junit]                     <attribute name="initialize-method">The name of a public instance method (taking no parameters) to be invoked after the service is constructed.</attribute>

    [junit]                     <attribute name="error-handler-property">The name of a property to assign the module's ErrorHandler to.</attribute>

    [junit]                     <attribute name="class-resolver-property">The name of a property to assign the module's ClassResolver to.</attribute>

    [junit]                     <attribute name="autowire-services" translator="boolean,default=true">If true (the default), the BuilderFactory will attempt to connect unclaimed properties to services.</attribute>

    [junit]                     <rules>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderParameter"/>

    [junit]                         <read-attribute attribute="class" property="className"/>

    [junit]                         <read-attribute attribute="initialize-method" property="initializeMethod"/>

    [junit]                         <read-attribute attribute="autowire-services"

    [junit]                             property="autowireServices" skip-if-null="false"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                         <read-attribute attribute="messages-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="1" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                         <read-attribute attribute="log-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="2" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                         <read-attribute attribute="service-id-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="3" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="error-handler-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="4" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="class-resolver-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="5" method="addProperty"/>

    [junit]                     </rules>

    [junit]                     <element name="string">A string value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="int" name="int">An integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="long" name="long">A long (64-bit) integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                         content-translator="enumeration,java.lang.Boolean,true=TRUE,false=FALSE" name="boolean">A boolean value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="service" name="service">A constructor parameter providing the identified HiveMind service.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="configuration" name="configuration">A constructor parameter providing a HiveMind configuration point (as a List).<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="resource" name="resource">A Resource constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="log">Placeholder for a Log instance for the constructed service as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="error-handler">Placeholder for the module's ErrorHandler instance passed in as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="class-resolver">Placeholder for the module's ClassResolver instance passed in as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="messages">Placeholder for a Messages object (from the invoking module) as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="service-id">Placeholder for the service id (of the constructed service) as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="object" name="object">Placeholder for an object provided by the object translator as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set">Configures a property of the service instance.<attribute

    [junit]                             name="property" required="true">The name of a property of the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true">The value to set the property to. The value will be converted to the type of the property.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderSmartPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="attributeValue"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-object">Configures a property of the service instance using an object.<attribute

    [junit]                             name="property" required="true">The name of a property of the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true" translator="object">The value to set the property to, in the form of a prefix and a locator for that prefix. Prefixes are defined by the ObjectProviders configuration point. Each prefix provides a different interpretation for the locator, such as a service id or class name.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-service">Configures a property of the service instance to another service.<attribute

    [junit]                             name="property" required="true">The name of the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="service-id" required="true" translator="service">The id of the service.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="service-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-configuration">Configures a property of the service instance to the elements contributed to an configuration point.<attribute

    [junit]                             name="property" required="true">The name of the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="configuration-id"

    [junit]                             required="true" translator="configuration">The id of the configuration point to access.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="configuration-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-resource">Configures a property of the service instance to a resource.<attribute

    [junit]                             name="property" required="true">The name of the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="path" required="true" translator="resource">The path, relative to the module's deployment descriptor, of the resource.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="path" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="event-listener">Registers the new services as an event listener for events produced by the specified service.<attribute

    [junit]                             name="service-id" required="true" translator="service">The service which will produce events.</attribute>

    [junit]                         <attribute name="event-set">If given, the name of an event set for which the service will be registered. If omitted, the service will be registered for all events sets for which it implements the necessary listener interfaces.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.EventRegistration"/>

    [junit]                             <read-attribute attribute="service-id" property="producer"/>

    [junit]                             <read-attribute attribute="event-set" property="eventSetName"/>

    [junit]                             <invoke-parent depth="6" method="addEventRegistration"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                 </element>

    [junit]             </parameters-schema>

    [junit]             <create-instance

    [junit]                 class="org.apache.hivemind.service.impl.BuilderFactory" model="primitive"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadEventNotifier"

    [junit]             interface="org.apache.hivemind.service.ThreadEventNotifier"

    [junit]                 uid="13">Service used by other services to be alerted when a thread is cleaned up (typically, at the end of a request or transaction).<create-instance class="org.apache.hivemind.service.impl.ThreadEventNotifierImpl"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadLocalStorage"

    [junit]             interface="org.apache.hivemind.service.ThreadLocalStorage"

    [junit]                 uid="14">Service which manages a thread-local map of data items. This can be used for temporary storage of information when local variables can't be used. All stored items are released when the thread is cleaned up.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.ThreadLocalStorageImpl">

    [junit]                     <set-service property="notifier" service-id="ThreadEventNotifier"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ServiceModels"

    [junit]                     uid="15">Defines service models, providing a name and a class for each.<schema>Describes contributions that define new types of service models by providing service model factories.<element name="service-model">

    [junit]                     <attribute name="name" required="true">The name of the service model, which must be unique.</attribute>

    [junit]                     <attribute name="class" required="false" translator="instance">The name of the service model factory class to instantiate.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.ServiceModelContribution">

    [junit]                         <map attribute="class" property="factory"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.ServiceModels" uid="16">

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PrimitiveServiceModelFactory" name="primitive"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.SingletonServiceModelFactory" name="singleton"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.ThreadedServiceModelFactory" name="threaded"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PooledServiceModelFactory" name="pooled"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.Translators"

    [junit]                     uid="17">Used to define new translators that can be used in contribution conversion rules. Translators must have unique names.<schema>Maps translator names to translator classes.<element

    [junit]                         name="translator">Maps a translator name to a translator class.<attribute

    [junit]                         name="name" required="true">A unique name for a translator.</attribute>

    [junit]                     <attribute name="class" required="false" translator="class">The class to instantiate, which must implement the Translator interface.</attribute>

    [junit]                     <attribute name="service-id" required="false" translator="service">A service which implements the Translator interface.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.TranslatorContribution">

    [junit]                         <map attribute="class" property="translatorClass"/>

    [junit]                         <map attribute="service-id" property="translator"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.Translators" uid="18">

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.BooleanTranslator" name="boolean"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IntTranslator" name="int"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.EnumerationTranslator" name="enumeration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ConfigurationTranslator" name="configuration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ResourceTranslator" name="resource"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.LongTranslator" name="long"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.DoubleTranslator" name="double"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ServicePointTranslator" name="service-point"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.QualifiedIdTranslator" name="qualified-id"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IdListTranslator" name="id-list"/>

    [junit]             <translator name="object" service-id="ObjectTranslator"/>

    [junit]         </contribution>

    [junit]         <service-point id="hivemind.ShutdownCoordinator"

    [junit]             interface="org.apache.hivemind.ShutdownCoordinator"

    [junit]                 uid="19">A source of event notifications for when the Registry is shutdown.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.ShutdownCoordinatorImpl">

    [junit]                     <log/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.Startup" uid="20">A configuration to which startup objects may be contributed (as objects or services). Startup object must implement the java.lang.Runnable interface. Order of execution is expliclitly NOT defined.<schema>

    [junit]                 <element

    [junit]                         name="service">Defines a service that implements the Runnable interface.<attribute

    [junit]                         name="service-id" translator="service">The name of a service implementing the Runnable interface.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]                 <element

    [junit]                         name="runnable">Allows an instance of a class implementing Runnable to be contributed.<attribute

    [junit]                         name="class" translator="instance">The name of a class implementing Runnable.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="class"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.Startup"

    [junit]             interface="java.lang.Runnable"

    [junit]                 uid="21">A service which is used to bootstrap HiveMind; it obtains the hivemind.Startup configuration and runs each Runnable object or service within.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.StartupImpl">

    [junit]                     <set-configuration configuration-id="Startup" property="runnables"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.EagerLoad" uid="22">Configuration to which services may be contributed. The corresponding services are instantiated eagerly, as the Registry is started. The order in which services are instantiated is not specified. <schema>

    [junit]                 <element

    [junit]                         name="load">Identifies a service that will be eagerly loaded.<attribute

    [junit]                         name="service-id" required="true" translator="service-point"/>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.EagerLoad"

    [junit]             interface="java.lang.Runnable"

    [junit]                 uid="23">Service that performs eager loading of other services. This service is contributed into the hivemind.Startup configuration.<invoke-factory

    [junit]                 model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.EagerLoader">

    [junit]                     <set-configuration configuration-id="EagerLoad" property="servicePoints"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <contribution configuration-id="hivemind.Startup" uid="24">

    [junit]             <service service-id="EagerLoad"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.ObjectProviders" uid="25">Services that can provide objects for the object translator.<schema>

    [junit]                 <element name="provider">

    [junit]                     <attribute name="prefix" required="true">The prefix used to identify the provider.</attribute>

    [junit]                     <attribute name="service-id" required="true" translator="service">The object providing service.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.service.impl.ObjectProviderContribution">

    [junit]                         <map attribute="service-id" property="provider"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.ObjectTranslator"

    [junit]             interface="org.apache.hivemind.schema.Translator"

    [junit]                 uid="26">Translator that works with ObjectProviders to find or create objects.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct

    [junit]                     class="org.apache.hivemind.service.impl.ObjectTranslator" initialize-method="initializeService">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ObjectProviders" property="contributions"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServiceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="27">ObjectProvider that can locate services. Mapped to the service: prefix.<create-instance class="org.apache.hivemind.service.impl.ServiceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ConfigurationObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="28">ObjectProvider that can locate configurations. Mapped to the configuration: prefix.<create-instance class="org.apache.hivemind.service.impl.ConfigurationObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ObjectInstanceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="29">ObjectProvider that will instantiate a new instance of a provided class. Mapped to the instance: prefix.<create-instance class="org.apache.hivemind.service.impl.ObjectInstanceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServicePropertyObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="30">ObjectProvider that will extra a property from a service.  Mapped to the service-property:...> but was:<... version="1.0.0">            The master

    [junit]         module for HiveMind, defining core, universal functionality.

    [junit]             <configuration-point id="hivemind.SymbolSources" uid="2">

    [junit]             Provides a list of sources for values of substitution

    [junit]             symbols.                 <schema>

    [junit]                 <element name="source">Describes a single source of

    [junit]                     symbol values.   <attribute name="name"

    [junit]                         required="true">   A unique name used    to

    [junit]                         identify the source, used when ordering the sources.</attribute>

    [junit]                     <attribute name="class" translator="instance">

    [junit]                         Name of a class implementing the SymbolSource interface.</attribute>

    [junit]                     <attribute name="service-id" translator="service">

    [junit]                         Service configuration id for a service which

    [junit]                         implements the SymbolSource    interface.</attribute>

    [junit]                     <attribute name="before">       A list of the names

    [junit]                         of other sources this source should    precede.</attribute>

    [junit]                     <attribute name="after">       A list of the names

    [junit]                         of other sources this source should    follow.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.SymbolSourceContribution">

    [junit]                         <map attribute="class" property="source"/>

    [junit]                         <map attribute="service-id" property="source"/>

    [junit]                         <map attribute="before" property="followingNames"/>

    [junit]                         <map attribute="after" property="precedingNames"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.SymbolSources" uid="3">

    [junit]             <source before="hivemind.FactoryDefaults"

    [junit]                 name="hivemind.ApplicationDefaults" service-id="ApplicationDefaultsSymbolSource"/>

    [junit]             <source name="hivemind.FactoryDefaults" service-id="FactoryDefaultsSymbolSource"/>

    [junit]         </contribution>

    [junit]         <schema id="hivemind.Defaults" uid="4">

    [junit]             <element name="default">Provides a default symbol

    [junit]                     value.<attribute name="symbol" required="true">The

    [junit]                     id of the symbol to define a default value for.</attribute>

    [junit]                 <attribute name="value" required="true">The value for

    [junit]                     the symbol.</attribute>

    [junit]                 <conversion class="org.apache.hivemind.service.impl.FactoryDefault"/>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <configuration-point id="hivemind.FactoryDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="5">Extension point for

    [junit]             setting &quot;factory defaults&quot; for symbol values.</configuration-point>

    [junit]         <service-point id="hivemind.FactoryDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]             uid="6">SymbolSource implementation driven by the

    [junit]             FactoryDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="FactoryDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ApplicationDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="7">Extension point for

    [junit]             setting application defaults; these defaults will override

    [junit]             factory defaults specified in the FactoryDefaults

    [junit]             configuration point.</configuration-point>

    [junit]         <service-point id="hivemind.ApplicationDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]             uid="8">SymbolSource implementation driven by the

    [junit]             ApplicationDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ApplicationDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ClassFactory"

    [junit]             interface="org.apache.hivemind.service.ClassFactory"

    [junit]             uid="9">Wrapper around Javassist used to dynamically create

    [junit]             classes such as service interceptors.<create-instance

    [junit]                 class="org.apache.hivemind.service.impl.ClassFactoryImpl" model="primitive"/>

    [junit]         </service-point>

    [junit]         <schema id="hivemind.MethodFilter" uid="10">Used primarily as

    [junit]             parameters to interceptor factories (such as

    [junit]             LoggingInterceptor) to define which methods of service

    [junit]             interface are to be included and which excluded.<element

    [junit]                 name="include">Identifies a method, or set of methods,

    [junit]                 to be included.<attribute name="method"

    [junit]                     required="true">A method pattern used to identify

    [junit]                     the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="true"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]             <element name="exclude">Identifies a method, or set of

    [junit]                 methods, to be excluded.<attribute name="method"

    [junit]                     required="true">A method pattern used to identify

    [junit]                     the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="false"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <service-point id="hivemind.LoggingInterceptor"

    [junit]             interface="org.apache.hivemind.ServiceInterceptorFactory"

    [junit]             parameters-schema-id="hivemind.MethodFilter" uid="11">An

    [junit]             interceptor factory for adding method-level logging to a

    [junit]             service. Logging occurs at level DEBUG and uses the service

    [junit]             id as the logger. Method entry (with parameters) and method

    [junit]             exit (with return value) are logged, as are any

    [junit]                 exceptions.<invoke-factory model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.LoggingInterceptorFactory">

    [junit]                     <set-service property="factory" service-id="ClassFactory"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.BuilderFactory"

    [junit]             interface="org.apache.hivemind.ServiceImplementationFactory"

    [junit]             uid="12">Used to construct a service from a class name and

    [junit]             optional constructor parameters and properties.<parameters-schema>

    [junit]                 <element name="construct">A single construct element

    [junit]                     identifies the class to instantiate.<attribute

    [junit]                         name="class" required="true">The name of the

    [junit]                         class to instantiate.</attribute>

    [junit]                     <attribute name="messages-property">The name of a

    [junit]                         property to assign invoking module's messages to.</attribute>

    [junit]                     <attribute name="log-property">The name of a

    [junit]                         property to assign the Log instance for the

    [junit]                         service to. The Log instance is built from the

    [junit]                         service configuration point id.</attribute>

    [junit]                     <attribute name="service-id-property">The name of a

    [junit]                         property to assign the configuration point id of

    [junit]                         the service to.</attribute>

    [junit]                     <attribute name="initialize-method">The name of a

    [junit]                         public instance method (taking no parameters) to

    [junit]                         be invoked after the service is constructed.</attribute>

    [junit]                     <attribute name="error-handler-property">The name of

    [junit]                         a property to assign the module's ErrorHandler to.</attribute>

    [junit]                     <attribute name="class-resolver-property">The name

    [junit]                         of a property to assign the module's

    [junit]                         ClassResolver to.</attribute>

    [junit]                     <attribute name="autowire-services"

    [junit]                         translator="boolean,default=true">If true (the

    [junit]                         default), the BuilderFactory will attempt to

    [junit]                         connect unclaimed properties to services.</attribute>

    [junit]                     <rules>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderParameter"/>

    [junit]                         <read-attribute attribute="class" property="className"/>

    [junit]                         <read-attribute attribute="initialize-method" property="initializeMethod"/>

    [junit]                         <read-attribute attribute="autowire-services"

    [junit]                             property="autowireServices" skip-if-null="false"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                         <read-attribute attribute="messages-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="1" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                         <read-attribute attribute="log-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="2" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                         <read-attribute attribute="service-id-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="3" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="error-handler-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="4" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="class-resolver-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="5" method="addProperty"/>

    [junit]                     </rules>

    [junit]                     <element name="string">A string value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="int" name="int">An

    [junit]                         integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="long" name="long">A

    [junit]                         long (64-bit) integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                         content-translator="enumeration,java.lang.Boolean,true=TRUE,false=FALSE"

    [junit]                         name="boolean">A boolean value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="service"

    [junit]                         name="service">A constructor parameter providing

    [junit]                         the identified HiveMind service.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="configuration"

    [junit]                         name="configuration">A constructor parameter

    [junit]                         providing a HiveMind configuration point (as a List).<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="resource"

    [junit]                         name="resource">A Resource constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="log">Placeholder for a Log instance

    [junit]                         for the constructed service as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="error-handler">Placeholder for the

    [junit]                         module's ErrorHandler instance passed in as a

    [junit]                         constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="class-resolver">Placeholder for the

    [junit]                         module's ClassResolver instance passed in as a

    [junit]                         constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="messages">Placeholder for a Messages

    [junit]                         object (from the invoking module) as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="service-id">Placeholder for the

    [junit]                         service id (of the constructed service) as

    [junit]                         constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="object"

    [junit]                         name="object">Placeholder for an object provided

    [junit]                         by the object translator as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set">Configures a property of the

    [junit]                         service instance.<attribute name="property"

    [junit]                             required="true">The name of a property of

    [junit]                             the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true">The

    [junit]                             value to set the property to. The value will

    [junit]                             be converted to the type of the property.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderSmartPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="attributeValue"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-object">Configures a property of

    [junit]                         the service instance using an object.<attribute

    [junit]                             name="property" required="true">The name of

    [junit]                             a property of the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true"

    [junit]                             translator="object">The value to set the

    [junit]                             property to, in the form of a prefix and a

    [junit]                             locator for that prefix. Prefixes are

    [junit]                             defined by the ObjectProviders configuration

    [junit]                             point. Each prefix provides a different

    [junit]                             interpretation for the locator, such as a

    [junit]                             service id or class name.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-service">Configures a property of

    [junit]                         the service instance to another

    [junit]                             service.<attribute name="property"

    [junit]                             required="true">The name of the property of

    [junit]                             the service instance to configure.</attribute>

    [junit]                         <attribute name="service-id" required="true"

    [junit]                             translator="service">The id of the service.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="service-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-configuration">Configures a

    [junit]                         property of the service instance to the elements

    [junit]                         contributed to an configuration point.<attribute

    [junit]                             name="property" required="true">The name of

    [junit]                             the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="configuration-id"

    [junit]                             required="true"

    [junit]                             translator="configuration">The id of the

    [junit]                             configuration point to access.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="configuration-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-resource">Configures a property

    [junit]                         of the service instance to a resource.<attribute

    [junit]                             name="property" required="true">The name of

    [junit]                             the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="path" required="true"

    [junit]                             translator="resource">The path, relative to

    [junit]                             the module's deployment descriptor, of the resource.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="path" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="event-listener">Registers the new

    [junit]                         services as an event listener for events

    [junit]                         produced by the specified service.<attribute

    [junit]                             name="service-id" required="true"

    [junit]                             translator="service">The service which will

    [junit]                             produce events.</attribute>

    [junit]                         <attribute name="event-set">If given, the name

    [junit]                             of an event set for which the service will

    [junit]                             be registered. If omitted, the service will

    [junit]                             be registered for all events sets for which

    [junit]                             it implements the necessary listener interfaces.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.EventRegistration"/>

    [junit]                             <read-attribute attribute="service-id" property="producer"/>

    [junit]                             <read-attribute attribute="event-set" property="eventSetName"/>

    [junit]                             <invoke-parent depth="6" method="addEventRegistration"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                 </element>

    [junit]             </parameters-schema>

    [junit]             <create-instance

    [junit]                 class="org.apache.hivemind.service.impl.BuilderFactory" model="primitive"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadEventNotifier"

    [junit]             interface="org.apache.hivemind.service.ThreadEventNotifier"

    [junit]             uid="13">Service used by other services to be alerted when a

    [junit]             thread is cleaned up (typically, at the end of a request or

    [junit]                 transaction).<create-instance class="org.apache.hivemind.service.impl.ThreadEventNotifierImpl"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadLocalStorage"

    [junit]             interface="org.apache.hivemind.service.ThreadLocalStorage"

    [junit]             uid="14">Service which manages a thread-local map of data

    [junit]             items. This can be used for temporary storage of information

    [junit]             when local variables can't be used. All stored items are

    [junit]             released when the thread is cleaned up.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.ThreadLocalStorageImpl">

    [junit]                     <set-service property="notifier" service-id="ThreadEventNotifier"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ServiceModels"

    [junit]             uid="15">Defines service models, providing a name and a

    [junit]             class for each.<schema>Describes contributions that define

    [junit]                 new types of service models by providing service model

    [junit]                     factories.<element name="service-model">

    [junit]                     <attribute name="name" required="true">The name of

    [junit]                         the service model, which must be unique.</attribute>

    [junit]                     <attribute name="class" required="false"

    [junit]                         translator="instance">The name of the service

    [junit]                         model factory class to instantiate.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.ServiceModelContribution">

    [junit]                         <map attribute="class" property="factory"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.ServiceModels" uid="16">

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PrimitiveServiceModelFactory" name="primitive"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.SingletonServiceModelFactory" name="singleton"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.ThreadedServiceModelFactory" name="threaded"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PooledServiceModelFactory" name="pooled"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.Translators" uid="17">Used to

    [junit]             define new translators that can be used in contribution

    [junit]             conversion rules. Translators must have unique

    [junit]                 names.<schema>Maps translator names to translator

    [junit]                     classes.<element name="translator">Maps a translator

    [junit]                     name to a translator class.<attribute name="name"

    [junit]                         required="true">A unique name for a translator.</attribute>

    [junit]                     <attribute name="class" required="false"

    [junit]                         translator="class">The class to instantiate,

    [junit]                         which must implement the Translator interface.</attribute>

    [junit]                     <attribute name="service-id" required="false"

    [junit]                         translator="service">A service which implements

    [junit]                         the Translator interface.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.TranslatorContribution">

    [junit]                         <map attribute="class" property="translatorClass"/>

    [junit]                         <map attribute="service-id" property="translator"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.Translators" uid="18">

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.BooleanTranslator" name="boolean"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IntTranslator" name="int"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.EnumerationTranslator" name="enumeration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ConfigurationTranslator" name="configuration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ResourceTranslator" name="resource"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.LongTranslator" name="long"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.DoubleTranslator" name="double"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ServicePointTranslator" name="service-point"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.QualifiedIdTranslator" name="qualified-id"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IdListTranslator" name="id-list"/>

    [junit]             <translator name="object" service-id="ObjectTranslator"/>

    [junit]         </contribution>

    [junit]         <service-point id="hivemind.ShutdownCoordinator"

    [junit]             interface="org.apache.hivemind.ShutdownCoordinator"

    [junit]             uid="19">A source of event notifications for when the

    [junit]             Registry is shutdown.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.ShutdownCoordinatorImpl">

    [junit]                     <log/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.Startup" uid="20">A

    [junit]             configuration to which startup objects may be contributed

    [junit]             (as objects or services). Startup object must implement the

    [junit]             java.lang.Runnable interface. Order of execution is

    [junit]             expliclitly NOT defined.<schema>

    [junit]                 <element name="service">Defines a service that

    [junit]                     implements the Runnable interface.<attribute

    [junit]                         name="service-id" translator="service">The name

    [junit]                         of a service implementing the Runnable interface.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]                 <element name="runnable">Allows an instance of a class

    [junit]                     implementing Runnable to be contributed.<attribute

    [junit]                         name="class" translator="instance">The name of a

    [junit]                         class implementing Runnable.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="class"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.Startup"

    [junit]             interface="java.lang.Runnable" uid="21">A service which is

    [junit]             used to bootstrap HiveMind; it obtains the hivemind.Startup

    [junit]             configuration and runs each Runnable object or service

    [junit]                 within.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.StartupImpl">

    [junit]                     <set-configuration configuration-id="Startup" property="runnables"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.EagerLoad"

    [junit]             uid="22">Configuration to which services may be contributed.

    [junit]             The corresponding services are instantiated eagerly, as the

    [junit]             Registry is started. The order in which services are

    [junit]             instantiated is not specified. <schema>

    [junit]                 <element name="load">Identifies a service that will be

    [junit]                     eagerly loaded.<attribute name="service-id"

    [junit]                         required="true" translator="service-point"/>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.EagerLoad"

    [junit]             interface="java.lang.Runnable" uid="23">Service that

    [junit]             performs eager loading of other services. This service is

    [junit]             contributed into the hivemind.Startup

    [junit]                 configuration.<invoke-factory model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.EagerLoader">

    [junit]                     <set-configuration configuration-id="EagerLoad" property="servicePoints"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <contribution configuration-id="hivemind.Startup" uid="24">

    [junit]             <service service-id="EagerLoad"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.ObjectProviders"

    [junit]             uid="25">Services that can provide objects for the object translator.<schema>

    [junit]                 <element name="provider">

    [junit]                     <attribute name="prefix" required="true">The prefix

    [junit]                         used to identify the provider.</attribute>

    [junit]                     <attribute name="service-id" required="true"

    [junit]                         translator="service">The object providing service.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.service.impl.ObjectProviderContribution">

    [junit]                         <map attribute="service-id" property="provider"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.ObjectTranslator"

    [junit]             interface="org.apache.hivemind.schema.Translator"

    [junit]             uid="26">Translator that works with ObjectProviders to find

    [junit]             or create objects.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct

    [junit]                     class="org.apache.hivemind.service.impl.ObjectTranslator" initialize-method="initializeService">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ObjectProviders" property="contributions"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServiceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="27">ObjectProvider that can locate services. Mapped to

    [junit]             the service: prefix.<create-instance class="org.apache.hivemind.service.impl.ServiceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ConfigurationObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="28">ObjectProvider that can locate configurations.

    [junit]             Mapped to the configuration: prefix.<create-instance class="org.apache.hivemind.service.impl.ConfigurationObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ObjectInstanceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="29">ObjectProvider that will instantiate a new instance

    [junit]             of a provided class. Mapped to the instance:

    [junit]                 prefix.<create-instance class="org.apache.hivemind.service.impl.ObjectInstanceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServicePropertyObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="30">ObjectProvider that will extra a property from a

    [junit]             service.  Mapped to the service-property:

    [junit]                ...>

    [junit] junit.framework.ComparisonFailure: expected:<...

    [junit]             version="1.0.0">

    [junit]        

    [junit]   The master module for HiveMind, defining core, universal functionality.

 

    [junit]   <configuration-point

    [junit]             id="hivemind.SymbolSources" uid="2">

    [junit]               Provides a list of sources for values of substitution symbols.

    [junit]                 <schema>

    [junit]                 <element

    [junit]                         name="source">Describes a single source of symbol values.

    [junit]   <attribute

    [junit]                         name="name" required="true">

    [junit]   A unique name used

    [junit]   to identify the source, used when ordering the sources.</attribute>

    [junit]                     <attribute name="class" translator="instance">

    [junit]       Name of a class implementing the SymbolSource interface.</attribute>

    [junit]                     <attribute name="service-id" translator="service">

    [junit]   Service configuration id for a service which implements the SymbolSource

    [junit]   interface.</attribute>

    [junit]                     <attribute name="before">

    [junit]       A list of the names of other sources this source should

    [junit]   precede.</attribute>

    [junit]                     <attribute name="after">

    [junit]       A list of the names of other sources this source should

    [junit]   follow.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.SymbolSourceContribution">

    [junit]                         <map attribute="class" property="source"/>

    [junit]                         <map attribute="service-id" property="source"/>

    [junit]                         <map attribute="before" property="followingNames"/>

    [junit]                         <map attribute="after" property="precedingNames"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.SymbolSources" uid="3">

    [junit]             <source before="hivemind.FactoryDefaults"

    [junit]                 name="hivemind.ApplicationDefaults" service-id="ApplicationDefaultsSymbolSource"/>

    [junit]             <source name="hivemind.FactoryDefaults" service-id="FactoryDefaultsSymbolSource"/>

    [junit]         </contribution>

    [junit]         <schema id="hivemind.Defaults" uid="4">

    [junit]             <element

    [junit]                     name="default">Provides a default symbol value.<attribute

    [junit]                     name="symbol" required="true">The id of the symbol to define a default value for.</attribute>

    [junit]                 <attribute name="value" required="true">The value for the symbol.</attribute>

    [junit]                 <conversion class="org.apache.hivemind.service.impl.FactoryDefault"/>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <configuration-point id="hivemind.FactoryDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="5">Extension point for setting "factory defaults" for symbol values.</configuration-point>

    [junit]         <service-point id="hivemind.FactoryDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]                 uid="6">SymbolSource implementation driven by the FactoryDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="FactoryDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ApplicationDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="7">Extension point for setting application defaults; these defaults will override factory defaults specified in the FactoryDefaults configuration point.</configuration-point>

    [junit]         <service-point id="hivemind.ApplicationDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]                 uid="8">SymbolSource implementation driven by the ApplicationDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ApplicationDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ClassFactory"

    [junit]             interface="org.apache.hivemind.service.ClassFactory"

    [junit]                 uid="9">Wrapper around Javassist used to dynamically create classes such as service interceptors.<create-instance

    [junit]                 class="org.apache.hivemind.service.impl.ClassFactoryImpl" model="primitive"/>

    [junit]         </service-point>

    [junit]         <schema id="hivemind.MethodFilter"

    [junit]                 uid="10">Used primarily as parameters to interceptor factories (such as LoggingInterceptor) to define which methods of service interface are to be included and which excluded.<element

    [junit]                     name="include">Identifies a method, or set of methods, to be included.<attribute

    [junit]                     name="method" required="true">A method pattern used to identify the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="true"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]             <element

    [junit]                     name="exclude">Identifies a method, or set of methods, to be excluded.<attribute

    [junit]                     name="method" required="true">A method pattern used to identify the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="false"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <service-point id="hivemind.LoggingInterceptor"

    [junit]             interface="org.apache.hivemind.ServiceInterceptorFactory"

    [junit]             parameters-schema-id="hivemind.MethodFilter"

    [junit]                 uid="11">An interceptor factory for adding method-level logging to a service. Logging occurs at level DEBUG and uses the service id as the logger. Method entry (with parameters) and method exit (with return value) are logged, as are any exceptions.<invoke-factory

    [junit]                 model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.LoggingInterceptorFactory">

    [junit]                     <set-service property="factory" service-id="ClassFactory"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.BuilderFactory"

    [junit]             interface="org.apache.hivemind.ServiceImplementationFactory" uid="12">Used to construct a service from a class name and optional constructor parameters and properties.<parameters-schema>

    [junit]                 <element

    [junit]                         name="construct">A single construct element identifies the class to instantiate.<attribute

    [junit]                         name="class" required="true">The name of the class to instantiate.</attribute>

    [junit]                     <attribute name="messages-property">The name of a property to assign invoking module's messages to.</attribute>

    [junit]                     <attribute name="log-property">The name of a property to assign the Log instance for the service to. The Log instance is built from the service configuration point id.</attribute>

    [junit]                     <attribute name="service-id-property">The name of a property to assign the configuration point id of the service to.</attribute>

    [junit]                     <attribute name="initialize-method">The name of a public instance method (taking no parameters) to be invoked after the service is constructed.</attribute>

    [junit]                     <attribute name="error-handler-property">The name of a property to assign the module's ErrorHandler to.</attribute>

    [junit]                     <attribute name="class-resolver-property">The name of a property to assign the module's ClassResolver to.</attribute>

    [junit]                     <attribute name="autowire-services" translator="boolean,default=true">If true (the default), the BuilderFactory will attempt to connect unclaimed properties to services.</attribute>

    [junit]                     <rules>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderParameter"/>

    [junit]                         <read-attribute attribute="class" property="className"/>

    [junit]                         <read-attribute attribute="initialize-method" property="initializeMethod"/>

    [junit]                         <read-attribute attribute="autowire-services"

    [junit]                             property="autowireServices" skip-if-null="false"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                         <read-attribute attribute="messages-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="1" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                         <read-attribute attribute="log-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="2" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                         <read-attribute attribute="service-id-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="3" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="error-handler-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="4" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="class-resolver-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="5" method="addProperty"/>

    [junit]                     </rules>

    [junit]                     <element name="string">A string value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="int" name="int">An integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="long" name="long">A long (64-bit) integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                         content-translator="enumeration,java.lang.Boolean,true=TRUE,false=FALSE" name="boolean">A boolean value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="service" name="service">A constructor parameter providing the identified HiveMind service.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="configuration" name="configuration">A constructor parameter providing a HiveMind configuration point (as a List).<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="resource" name="resource">A Resource constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="log">Placeholder for a Log instance for the constructed service as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="error-handler">Placeholder for the module's ErrorHandler instance passed in as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="class-resolver">Placeholder for the module's ClassResolver instance passed in as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="messages">Placeholder for a Messages object (from the invoking module) as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="service-id">Placeholder for the service id (of the constructed service) as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="object" name="object">Placeholder for an object provided by the object translator as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set">Configures a property of the service instance.<attribute

    [junit]                             name="property" required="true">The name of a property of the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true">The value to set the property to. The value will be converted to the type of the property.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderSmartPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="attributeValue"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-object">Configures a property of the service instance using an object.<attribute

    [junit]                             name="property" required="true">The name of a property of the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true" translator="object">The value to set the property to, in the form of a prefix and a locator for that prefix. Prefixes are defined by the ObjectProviders configuration point. Each prefix provides a different interpretation for the locator, such as a service id or class name.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-service">Configures a property of the service instance to another service.<attribute

    [junit]                             name="property" required="true">The name of the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="service-id" required="true" translator="service">The id of the service.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="service-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-configuration">Configures a property of the service instance to the elements contributed to an configuration point.<attribute

    [junit]                             name="property" required="true">The name of the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="configuration-id"

    [junit]                             required="true" translator="configuration">The id of the configuration point to access.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="configuration-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-resource">Configures a property of the service instance to a resource.<attribute

    [junit]                             name="property" required="true">The name of the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="path" required="true" translator="resource">The path, relative to the module's deployment descriptor, of the resource.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="path" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="event-listener">Registers the new services as an event listener for events produced by the specified service.<attribute

    [junit]                             name="service-id" required="true" translator="service">The service which will produce events.</attribute>

    [junit]                         <attribute name="event-set">If given, the name of an event set for which the service will be registered. If omitted, the service will be registered for all events sets for which it implements the necessary listener interfaces.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.EventRegistration"/>

    [junit]                             <read-attribute attribute="service-id" property="producer"/>

    [junit]                             <read-attribute attribute="event-set" property="eventSetName"/>

    [junit]                             <invoke-parent depth="6" method="addEventRegistration"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                 </element>

    [junit]             </parameters-schema>

    [junit]             <create-instance

    [junit]                 class="org.apache.hivemind.service.impl.BuilderFactory" model="primitive"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadEventNotifier"

    [junit]             interface="org.apache.hivemind.service.ThreadEventNotifier"

    [junit]                 uid="13">Service used by other services to be alerted when a thread is cleaned up (typically, at the end of a request or transaction).<create-instance class="org.apache.hivemind.service.impl.ThreadEventNotifierImpl"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadLocalStorage"

    [junit]             interface="org.apache.hivemind.service.ThreadLocalStorage"

    [junit]                 uid="14">Service which manages a thread-local map of data items. This can be used for temporary storage of information when local variables can't be used. All stored items are released when the thread is cleaned up.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.ThreadLocalStorageImpl">

    [junit]                     <set-service property="notifier" service-id="ThreadEventNotifier"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ServiceModels"

    [junit]                     uid="15">Defines service models, providing a name and a class for each.<schema>Describes contributions that define new types of service models by providing service model factories.<element name="service-model">

    [junit]                     <attribute name="name" required="true">The name of the service model, which must be unique.</attribute>

    [junit]                     <attribute name="class" required="false" translator="instance">The name of the service model factory class to instantiate.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.ServiceModelContribution">

    [junit]                         <map attribute="class" property="factory"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.ServiceModels" uid="16">

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PrimitiveServiceModelFactory" name="primitive"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.SingletonServiceModelFactory" name="singleton"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.ThreadedServiceModelFactory" name="threaded"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PooledServiceModelFactory" name="pooled"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.Translators"

    [junit]                     uid="17">Used to define new translators that can be used in contribution conversion rules. Translators must have unique names.<schema>Maps translator names to translator classes.<element

    [junit]                         name="translator">Maps a translator name to a translator class.<attribute

    [junit]                         name="name" required="true">A unique name for a translator.</attribute>

    [junit]                     <attribute name="class" required="false" translator="class">The class to instantiate, which must implement the Translator interface.</attribute>

    [junit]                     <attribute name="service-id" required="false" translator="service">A service which implements the Translator interface.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.TranslatorContribution">

    [junit]                         <map attribute="class" property="translatorClass"/>

    [junit]                         <map attribute="service-id" property="translator"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.Translators" uid="18">

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.BooleanTranslator" name="boolean"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IntTranslator" name="int"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.EnumerationTranslator" name="enumeration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ConfigurationTranslator" name="configuration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ResourceTranslator" name="resource"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.LongTranslator" name="long"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.DoubleTranslator" name="double"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ServicePointTranslator" name="service-point"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.QualifiedIdTranslator" name="qualified-id"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IdListTranslator" name="id-list"/>

    [junit]             <translator name="object" service-id="ObjectTranslator"/>

    [junit]         </contribution>

    [junit]         <service-point id="hivemind.ShutdownCoordinator"

    [junit]             interface="org.apache.hivemind.ShutdownCoordinator"

    [junit]                 uid="19">A source of event notifications for when the Registry is shutdown.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.ShutdownCoordinatorImpl">

    [junit]                     <log/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.Startup" uid="20">A configuration to which startup objects may be contributed (as objects or services). Startup object must implement the java.lang.Runnable interface. Order of execution is expliclitly NOT defined.<schema>

    [junit]                 <element

    [junit]                         name="service">Defines a service that implements the Runnable interface.<attribute

    [junit]                         name="service-id" translator="service">The name of a service implementing the Runnable interface.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]                 <element

    [junit]                         name="runnable">Allows an instance of a class implementing Runnable to be contributed.<attribute

    [junit]                         name="class" translator="instance">The name of a class implementing Runnable.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="class"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.Startup"

    [junit]             interface="java.lang.Runnable"

    [junit]                 uid="21">A service which is used to bootstrap HiveMind; it obtains the hivemind.Startup configuration and runs each Runnable object or service within.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.StartupImpl">

    [junit]                     <set-configuration configuration-id="Startup" property="runnables"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.EagerLoad" uid="22">Configuration to which services may be contributed. The corresponding services are instantiated eagerly, as the Registry is started. The order in which services are instantiated is not specified. <schema>

    [junit]                 <element

    [junit]                         name="load">Identifies a service that will be eagerly loaded.<attribute

    [junit]                         name="service-id" required="true" translator="service-point"/>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.EagerLoad"

    [junit]             interface="java.lang.Runnable"

    [junit]                 uid="23">Service that performs eager loading of other services. This service is contributed into the hivemind.Startup configuration.<invoke-factory

    [junit]                 model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.EagerLoader">

    [junit]                     <set-configuration configuration-id="EagerLoad" property="servicePoints"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <contribution configuration-id="hivemind.Startup" uid="24">

    [junit]             <service service-id="EagerLoad"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.ObjectProviders" uid="25">Services that can provide objects for the object translator.<schema>

    [junit]                 <element name="provider">

    [junit]                     <attribute name="prefix" required="true">The prefix used to identify the provider.</attribute>

    [junit]                     <attribute name="service-id" required="true" translator="service">The object providing service.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.service.impl.ObjectProviderContribution">

    [junit]                         <map attribute="service-id" property="provider"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.ObjectTranslator"

    [junit]             interface="org.apache.hivemind.schema.Translator"

    [junit]                 uid="26">Translator that works with ObjectProviders to find or create objects.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct

    [junit]                     class="org.apache.hivemind.service.impl.ObjectTranslator" initialize-method="initializeService">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ObjectProviders" property="contributions"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServiceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="27">ObjectProvider that can locate services. Mapped to the service: prefix.<create-instance class="org.apache.hivemind.service.impl.ServiceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ConfigurationObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="28">ObjectProvider that can locate configurations. Mapped to the configuration: prefix.<create-instance class="org.apache.hivemind.service.impl.ConfigurationObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ObjectInstanceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="29">ObjectProvider that will instantiate a new instance of a provided class. Mapped to the instance: prefix.<create-instance class="org.apache.hivemind.service.impl.ObjectInstanceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServicePropertyObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="30">ObjectProvider that will extra a property from a service.  Mapped to the service-property:...> but was:<... version="1.0.0">            The master

    [junit]         module for HiveMind, defining core, universal functionality.

    [junit]             <configuration-point id="hivemind.SymbolSources" uid="2">

    [junit]             Provides a list of sources for values of substitution

    [junit]             symbols.                 <schema>

    [junit]                 <element name="source">Describes a single source of

    [junit]                     symbol values.   <attribute name="name"

    [junit]                         required="true">   A unique name used    to

    [junit]                         identify the source, used when ordering the sources.</attribute>

    [junit]                     <attribute name="class" translator="instance">

    [junit]                         Name of a class implementing the SymbolSource interface.</attribute>

    [junit]                     <attribute name="service-id" translator="service">

    [junit]                         Service configuration id for a service which

    [junit]                         implements the SymbolSource    interface.</attribute>

    [junit]                     <attribute name="before">       A list of the names

    [junit]                         of other sources this source should    precede.</attribute>

    [junit]                     <attribute name="after">       A list of the names

    [junit]                         of other sources this source should    follow.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.SymbolSourceContribution">

    [junit]                         <map attribute="class" property="source"/>

    [junit]                         <map attribute="service-id" property="source"/>

    [junit]                         <map attribute="before" property="followingNames"/>

    [junit]                         <map attribute="after" property="precedingNames"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.SymbolSources" uid="3">

    [junit]             <source before="hivemind.FactoryDefaults"

    [junit]                 name="hivemind.ApplicationDefaults" service-id="ApplicationDefaultsSymbolSource"/>

    [junit]             <source name="hivemind.FactoryDefaults" service-id="FactoryDefaultsSymbolSource"/>

    [junit]         </contribution>

    [junit]         <schema id="hivemind.Defaults" uid="4">

    [junit]             <element name="default">Provides a default symbol

    [junit]                     value.<attribute name="symbol" required="true">The

    [junit]                     id of the symbol to define a default value for.</attribute>

    [junit]                 <attribute name="value" required="true">The value for

    [junit]                     the symbol.</attribute>

    [junit]                 <conversion class="org.apache.hivemind.service.impl.FactoryDefault"/>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <configuration-point id="hivemind.FactoryDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="5">Extension point for

    [junit]             setting &quot;factory defaults&quot; for symbol values.</configuration-point>

    [junit]         <service-point id="hivemind.FactoryDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]             uid="6">SymbolSource implementation driven by the

    [junit]             FactoryDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="FactoryDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ApplicationDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="7">Extension point for

    [junit]             setting application defaults; these defaults will override

    [junit]             factory defaults specified in the FactoryDefaults

    [junit]             configuration point.</configuration-point>

    [junit]         <service-point id="hivemind.ApplicationDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]             uid="8">SymbolSource implementation driven by the

    [junit]             ApplicationDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ApplicationDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ClassFactory"

    [junit]             interface="org.apache.hivemind.service.ClassFactory"

    [junit]             uid="9">Wrapper around Javassist used to dynamically create

    [junit]             classes such as service interceptors.<create-instance

    [junit]                 class="org.apache.hivemind.service.impl.ClassFactoryImpl" model="primitive"/>

    [junit]         </service-point>

    [junit]         <schema id="hivemind.MethodFilter" uid="10">Used primarily as

    [junit]             parameters to interceptor factories (such as

    [junit]             LoggingInterceptor) to define which methods of service

    [junit]             interface are to be included and which excluded.<element

    [junit]                 name="include">Identifies a method, or set of methods,

    [junit]                 to be included.<attribute name="method"

    [junit]                     required="true">A method pattern used to identify

    [junit]                     the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="true"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]             <element name="exclude">Identifies a method, or set of

    [junit]                 methods, to be excluded.<attribute name="method"

    [junit]                     required="true">A method pattern used to identify

    [junit]                     the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="false"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <service-point id="hivemind.LoggingInterceptor"

    [junit]             interface="org.apache.hivemind.ServiceInterceptorFactory"

    [junit]             parameters-schema-id="hivemind.MethodFilter" uid="11">An

    [junit]             interceptor factory for adding method-level logging to a

    [junit]             service. Logging occurs at level DEBUG and uses the service

    [junit]             id as the logger. Method entry (with parameters) and method

    [junit]             exit (with return value) are logged, as are any

    [junit]                 exceptions.<invoke-factory model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.LoggingInterceptorFactory">

    [junit]                     <set-service property="factory" service-id="ClassFactory"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.BuilderFactory"

    [junit]             interface="org.apache.hivemind.ServiceImplementationFactory"

    [junit]             uid="12">Used to construct a service from a class name and

    [junit]             optional constructor parameters and properties.<parameters-schema>

    [junit]                 <element name="construct">A single construct element

    [junit]                     identifies the class to instantiate.<attribute

    [junit]                         name="class" required="true">The name of the

    [junit]                         class to instantiate.</attribute>

    [junit]                     <attribute name="messages-property">The name of a

    [junit]                         property to assign invoking module's messages to.</attribute>

    [junit]                     <attribute name="log-property">The name of a

    [junit]                         property to assign the Log instance for the

    [junit]                         service to. The Log instance is built from the

    [junit]                         service configuration point id.</attribute>

    [junit]                     <attribute name="service-id-property">The name of a

    [junit]                         property to assign the configuration point id of

    [junit]                         the service to.</attribute>

    [junit]                     <attribute name="initialize-method">The name of a

    [junit]                         public instance method (taking no parameters) to

    [junit]                         be invoked after the service is constructed.</attribute>

    [junit]                     <attribute name="error-handler-property">The name of

    [junit]                         a property to assign the module's ErrorHandler to.</attribute>

    [junit]                     <attribute name="class-resolver-property">The name

    [junit]                         of a property to assign the module's

    [junit]                         ClassResolver to.</attribute>

    [junit]                     <attribute name="autowire-services"

    [junit]                         translator="boolean,default=true">If true (the

    [junit]                         default), the BuilderFactory will attempt to

    [junit]                         connect unclaimed properties to services.</attribute>

    [junit]                     <rules>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderParameter"/>

    [junit]                         <read-attribute attribute="class" property="className"/>

    [junit]                         <read-attribute attribute="initialize-method" property="initializeMethod"/>

    [junit]                         <read-attribute attribute="autowire-services"

    [junit]                             property="autowireServices" skip-if-null="false"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                         <read-attribute attribute="messages-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="1" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                         <read-attribute attribute="log-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="2" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                         <read-attribute attribute="service-id-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="3" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="error-handler-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="4" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="class-resolver-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="5" method="addProperty"/>

    [junit]                     </rules>

    [junit]                     <element name="string">A string value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="int" name="int">An

    [junit]                         integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="long" name="long">A

    [junit]                         long (64-bit) integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                         content-translator="enumeration,java.lang.Boolean,true=TRUE,false=FALSE"

    [junit]                         name="boolean">A boolean value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="service"

    [junit]                         name="service">A constructor parameter providing

    [junit]                         the identified HiveMind service.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="configuration"

    [junit]                         name="configuration">A constructor parameter

    [junit]                         providing a HiveMind configuration point (as a List).<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="resource"

    [junit]                         name="resource">A Resource constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="log">Placeholder for a Log instance

    [junit]                         for the constructed service as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="error-handler">Placeholder for the

    [junit]                         module's ErrorHandler instance passed in as a

    [junit]                         constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="class-resolver">Placeholder for the

    [junit]                         module's ClassResolver instance passed in as a

    [junit]                         constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="messages">Placeholder for a Messages

    [junit]                         object (from the invoking module) as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="service-id">Placeholder for the

    [junit]                         service id (of the constructed service) as

    [junit]                         constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="object"

    [junit]                         name="object">Placeholder for an object provided

    [junit]                         by the object translator as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set">Configures a property of the

    [junit]                         service instance.<attribute name="property"

    [junit]                             required="true">The name of a property of

    [junit]                             the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true">The

    [junit]                             value to set the property to. The value will

    [junit]                             be converted to the type of the property.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderSmartPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="attributeValue"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-object">Configures a property of

    [junit]                         the service instance using an object.<attribute

    [junit]                             name="property" required="true">The name of

    [junit]                             a property of the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true"

    [junit]                             translator="object">The value to set the

    [junit]                             property to, in the form of a prefix and a

    [junit]                             locator for that prefix. Prefixes are

    [junit]                             defined by the ObjectProviders configuration

    [junit]                             point. Each prefix provides a different

    [junit]                             interpretation for the locator, such as a

    [junit]                             service id or class name.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-service">Configures a property of

    [junit]                         the service instance to another

    [junit]                             service.<attribute name="property"

    [junit]                             required="true">The name of the property of

    [junit]                             the service instance to configure.</attribute>

    [junit]                         <attribute name="service-id" required="true"

    [junit]                             translator="service">The id of the service.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="service-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-configuration">Configures a

    [junit]                         property of the service instance to the elements

    [junit]                         contributed to an configuration point.<attribute

    [junit]                             name="property" required="true">The name of

    [junit]                             the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="configuration-id"

    [junit]                             required="true"

    [junit]                             translator="configuration">The id of the

    [junit]                             configuration point to access.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="configuration-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-resource">Configures a property

    [junit]                         of the service instance to a resource.<attribute

    [junit]                             name="property" required="true">The name of

    [junit]                             the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="path" required="true"

    [junit]                             translator="resource">The path, relative to

    [junit]                             the module's deployment descriptor, of the resource.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="path" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="event-listener">Registers the new

    [junit]                         services as an event listener for events

    [junit]                         produced by the specified service.<attribute

    [junit]                             name="service-id" required="true"

    [junit]                             translator="service">The service which will

    [junit]                             produce events.</attribute>

    [junit]                         <attribute name="event-set">If given, the name

    [junit]                             of an event set for which the service will

    [junit]                             be registered. If omitted, the service will

    [junit]                             be registered for all events sets for which

    [junit]                             it implements the necessary listener interfaces.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.EventRegistration"/>

    [junit]                             <read-attribute attribute="service-id" property="producer"/>

    [junit]                             <read-attribute attribute="event-set" property="eventSetName"/>

    [junit]                             <invoke-parent depth="6" method="addEventRegistration"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                 </element>

    [junit]             </parameters-schema>

    [junit]             <create-instance

    [junit]                 class="org.apache.hivemind.service.impl.BuilderFactory" model="primitive"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadEventNotifier"

    [junit]             interface="org.apache.hivemind.service.ThreadEventNotifier"

    [junit]             uid="13">Service used by other services to be alerted when a

    [junit]             thread is cleaned up (typically, at the end of a request or

    [junit]                 transaction).<create-instance class="org.apache.hivemind.service.impl.ThreadEventNotifierImpl"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadLocalStorage"

    [junit]             interface="org.apache.hivemind.service.ThreadLocalStorage"

    [junit]             uid="14">Service which manages a thread-local map of data

    [junit]             items. This can be used for temporary storage of information

    [junit]             when local variables can't be used. All stored items are

    [junit]             released when the thread is cleaned up.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.ThreadLocalStorageImpl">

    [junit]                     <set-service property="notifier" service-id="ThreadEventNotifier"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ServiceModels"

    [junit]             uid="15">Defines service models, providing a name and a

    [junit]             class for each.<schema>Describes contributions that define

    [junit]                 new types of service models by providing service model

    [junit]                     factories.<element name="service-model">

    [junit]                     <attribute name="name" required="true">The name of

    [junit]                         the service model, which must be unique.</attribute>

    [junit]                     <attribute name="class" required="false"

    [junit]                         translator="instance">The name of the service

    [junit]                         model factory class to instantiate.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.ServiceModelContribution">

    [junit]                         <map attribute="class" property="factory"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.ServiceModels" uid="16">

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PrimitiveServiceModelFactory" name="primitive"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.SingletonServiceModelFactory" name="singleton"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.ThreadedServiceModelFactory" name="threaded"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PooledServiceModelFactory" name="pooled"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.Translators" uid="17">Used to

    [junit]             define new translators that can be used in contribution

    [junit]             conversion rules. Translators must have unique

    [junit]                 names.<schema>Maps translator names to translator

    [junit]                     classes.<element name="translator">Maps a translator

    [junit]                     name to a translator class.<attribute name="name"

    [junit]                         required="true">A unique name for a translator.</attribute>

    [junit]                     <attribute name="class" required="false"

    [junit]                         translator="class">The class to instantiate,

    [junit]                         which must implement the Translator interface.</attribute>

    [junit]                     <attribute name="service-id" required="false"

    [junit]                         translator="service">A service which implements

    [junit]                         the Translator interface.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.TranslatorContribution">

    [junit]                         <map attribute="class" property="translatorClass"/>

    [junit]                         <map attribute="service-id" property="translator"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.Translators" uid="18">

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.BooleanTranslator" name="boolean"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IntTranslator" name="int"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.EnumerationTranslator" name="enumeration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ConfigurationTranslator" name="configuration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ResourceTranslator" name="resource"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.LongTranslator" name="long"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.DoubleTranslator" name="double"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ServicePointTranslator" name="service-point"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.QualifiedIdTranslator" name="qualified-id"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IdListTranslator" name="id-list"/>

    [junit]             <translator name="object" service-id="ObjectTranslator"/>

    [junit]         </contribution>

    [junit]         <service-point id="hivemind.ShutdownCoordinator"

    [junit]             interface="org.apache.hivemind.ShutdownCoordinator"

    [junit]             uid="19">A source of event notifications for when the

    [junit]             Registry is shutdown.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.ShutdownCoordinatorImpl">

    [junit]                     <log/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.Startup" uid="20">A

    [junit]             configuration to which startup objects may be contributed

    [junit]             (as objects or services). Startup object must implement the

    [junit]             java.lang.Runnable interface. Order of execution is

    [junit]             expliclitly NOT defined.<schema>

    [junit]                 <element name="service">Defines a service that

    [junit]                     implements the Runnable interface.<attribute

    [junit]                         name="service-id" translator="service">The name

    [junit]                         of a service implementing the Runnable interface.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]                 <element name="runnable">Allows an instance of a class

    [junit]                     implementing Runnable to be contributed.<attribute

    [junit]                         name="class" translator="instance">The name of a

    [junit]                         class implementing Runnable.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="class"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.Startup"

    [junit]             interface="java.lang.Runnable" uid="21">A service which is

    [junit]             used to bootstrap HiveMind; it obtains the hivemind.Startup

    [junit]             configuration and runs each Runnable object or service

    [junit]                 within.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.StartupImpl">

    [junit]                     <set-configuration configuration-id="Startup" property="runnables"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.EagerLoad"

    [junit]             uid="22">Configuration to which services may be contributed.

    [junit]             The corresponding services are instantiated eagerly, as the

    [junit]             Registry is started. The order in which services are

    [junit]             instantiated is not specified. <schema>

    [junit]                 <element name="load">Identifies a service that will be

    [junit]                     eagerly loaded.<attribute name="service-id"

    [junit]                         required="true" translator="service-point"/>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.EagerLoad"

    [junit]             interface="java.lang.Runnable" uid="23">Service that

    [junit]             performs eager loading of other services. This service is

    [junit]             contributed into the hivemind.Startup

    [junit]                 configuration.<invoke-factory model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.EagerLoader">

    [junit]                     <set-configuration configuration-id="EagerLoad" property="servicePoints"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <contribution configuration-id="hivemind.Startup" uid="24">

    [junit]             <service service-id="EagerLoad"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.ObjectProviders"

    [junit]             uid="25">Services that can provide objects for the object translator.<schema>

    [junit]                 <element name="provider">

    [junit]                     <attribute name="prefix" required="true">The prefix

    [junit]                         used to identify the provider.</attribute>

    [junit]                     <attribute name="service-id" required="true"

    [junit]                         translator="service">The object providing service.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.service.impl.ObjectProviderContribution">

    [junit]                         <map attribute="service-id" property="provider"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.ObjectTranslator"

    [junit]             interface="org.apache.hivemind.schema.Translator"

    [junit]             uid="26">Translator that works with ObjectProviders to find

    [junit]             or create objects.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct

    [junit]                     class="org.apache.hivemind.service.impl.ObjectTranslator" initialize-method="initializeService">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ObjectProviders" property="contributions"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServiceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="27">ObjectProvider that can locate services. Mapped to

    [junit]             the service: prefix.<create-instance class="org.apache.hivemind.service.impl.ServiceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ConfigurationObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="28">ObjectProvider that can locate configurations.

    [junit]             Mapped to the configuration: prefix.<create-instance class="org.apache.hivemind.service.impl.ConfigurationObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ObjectInstanceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="29">ObjectProvider that will instantiate a new instance

    [junit]             of a provided class. Mapped to the instance:

    [junit]                 prefix.<create-instance class="org.apache.hivemind.service.impl.ObjectInstanceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServicePropertyObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="30">ObjectProvider that will extra a property from a

    [junit]             service.  Mapped to the service-property:

    [junit]                ...>

    [junit]         at hivemind.test.ant.TestConstructRegistry.compare(TestConstructRegistry.java:228)

    [junit]         at hivemind.test.ant.TestConstructRegistry.testBasic(TestConstructRegistry.java:127)

    [junit]         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    [junit]         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

    [junit]         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

 

 

    [junit] Testcase: testUptoDate(hivemind.test.ant.TestConstructRegistry):   FAILED

    [junit] expected:<...

    [junit]             version="1.0.0">

    [junit]        

    [junit]   The master module for HiveMind, defining core, universal functionality.

 

    [junit]   <configuration-point

    [junit]             id="hivemind.SymbolSources" uid="2">

    [junit]               Provides a list of sources for values of substitution symbols.

    [junit]                 <schema>

    [junit]                 <element

    [junit]                         name="source">Describes a single source of symbol values.

    [junit]   <attribute

    [junit]                         name="name" required="true">

    [junit]   A unique name used

    [junit]   to identify the source, used when ordering the sources.</attribute>

    [junit]                     <attribute name="class" translator="instance">

    [junit]       Name of a class implementing the SymbolSource interface.</attribute>

    [junit]                     <attribute name="service-id" translator="service">

    [junit]   Service configuration id for a service which implements the SymbolSource

    [junit]   interface.</attribute>

    [junit]                     <attribute name="before">

    [junit]       A list of the names of other sources this source should

    [junit]   precede.</attribute>

    [junit]                     <attribute name="after">

    [junit]       A list of the names of other sources this source should

    [junit]   follow.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.SymbolSourceContribution">

    [junit]                         <map attribute="class" property="source"/>

    [junit]                         <map attribute="service-id" property="source"/>

    [junit]                         <map attribute="before" property="followingNames"/>

    [junit]                         <map attribute="after" property="precedingNames"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.SymbolSources" uid="3">

    [junit]             <source before="hivemind.FactoryDefaults"

    [junit]                 name="hivemind.ApplicationDefaults" service-id="ApplicationDefaultsSymbolSource"/>

    [junit]             <source name="hivemind.FactoryDefaults" service-id="FactoryDefaultsSymbolSource"/>

    [junit]         </contribution>

    [junit]         <schema id="hivemind.Defaults" uid="4">

    [junit]             <element

    [junit]                     name="default">Provides a default symbol value.<attribute

    [junit]                     name="symbol" required="true">The id of the symbol to define a default value for.</attribute>

    [junit]                 <attribute name="value" required="true">The value for the symbol.</attribute>

    [junit]                 <conversion class="org.apache.hivemind.service.impl.FactoryDefault"/>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <configuration-point id="hivemind.FactoryDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="5">Extension point for setting "factory defaults" for symbol values.</configuration-point>

    [junit]         <service-point id="hivemind.FactoryDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]                 uid="6">SymbolSource implementation driven by the FactoryDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="FactoryDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ApplicationDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="7">Extension point for setting application defaults; these defaults will override factory defaults specified in the FactoryDefaults configuration point.</configuration-point>

    [junit]         <service-point id="hivemind.ApplicationDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]                 uid="8">SymbolSource implementation driven by the ApplicationDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ApplicationDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ClassFactory"

    [junit]             interface="org.apache.hivemind.service.ClassFactory"

    [junit]                 uid="9">Wrapper around Javassist used to dynamically create classes such as service interceptors.<create-instance

    [junit]                 class="org.apache.hivemind.service.impl.ClassFactoryImpl" model="primitive"/>

    [junit]         </service-point>

    [junit]         <schema id="hivemind.MethodFilter"

    [junit]                 uid="10">Used primarily as parameters to interceptor factories (such as LoggingInterceptor) to define which methods of service interface are to be included and which excluded.<element

    [junit]                     name="include">Identifies a method, or set of methods, to be included.<attribute

    [junit]                     name="method" required="true">A method pattern used to identify the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="true"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]             <element

    [junit]                     name="exclude">Identifies a method, or set of methods, to be excluded.<attribute

    [junit]                     name="method" required="true">A method pattern used to identify the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="false"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <service-point id="hivemind.LoggingInterceptor"

    [junit]             interface="org.apache.hivemind.ServiceInterceptorFactory"

    [junit]             parameters-schema-id="hivemind.MethodFilter"

    [junit]                 uid="11">An interceptor factory for adding method-level logging to a service. Logging occurs at level DEBUG and uses the service id as the logger. Method entry (with parameters) and method exit (with return value) are logged, as are any exceptions.<invoke-factory

    [junit]                 model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.LoggingInterceptorFactory">

    [junit]                     <set-service property="factory" service-id="ClassFactory"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.BuilderFactory"

    [junit]             interface="org.apache.hivemind.ServiceImplementationFactory" uid="12">Used to construct a service from a class name and optional constructor parameters and properties.<parameters-schema>

    [junit]                 <element

    [junit]                         name="construct">A single construct element identifies the class to instantiate.<attribute

    [junit]                         name="class" required="true">The name of the class to instantiate.</attribute>

    [junit]                     <attribute name="messages-property">The name of a property to assign invoking module's messages to.</attribute>

    [junit]                     <attribute name="log-property">The name of a property to assign the Log instance for the service to. The Log instance is built from the service configuration point id.</attribute>

    [junit]                     <attribute name="service-id-property">The name of a property to assign the configuration point id of the service to.</attribute>

    [junit]                     <attribute name="initialize-method">The name of a public instance method (taking no parameters) to be invoked after the service is constructed.</attribute>

    [junit]                     <attribute name="error-handler-property">The name of a property to assign the module's ErrorHandler to.</attribute>

    [junit]                     <attribute name="class-resolver-property">The name of a property to assign the module's ClassResolver to.</attribute>

    [junit]                     <attribute name="autowire-services" translator="boolean,default=true">If true (the default), the BuilderFactory will attempt to connect unclaimed properties to services.</attribute>

    [junit]                     <rules>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderParameter"/>

    [junit]                         <read-attribute attribute="class" property="className"/>

    [junit]                         <read-attribute attribute="initialize-method" property="initializeMethod"/>

    [junit]                         <read-attribute attribute="autowire-services"

    [junit]                             property="autowireServices" skip-if-null="false"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                         <read-attribute attribute="messages-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="1" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                         <read-attribute attribute="log-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="2" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                         <read-attribute attribute="service-id-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="3" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="error-handler-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="4" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="class-resolver-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="5" method="addProperty"/>

    [junit]                     </rules>

    [junit]                     <element name="string">A string value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="int" name="int">An integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="long" name="long">A long (64-bit) integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                         content-translator="enumeration,java.lang.Boolean,true=TRUE,false=FALSE" name="boolean">A boolean value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="service" name="service">A constructor parameter providing the identified HiveMind service.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="configuration" name="configuration">A constructor parameter providing a HiveMind configuration point (as a List).<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="resource" name="resource">A Resource constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="log">Placeholder for a Log instance for the constructed service as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="error-handler">Placeholder for the module's ErrorHandler instance passed in as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="class-resolver">Placeholder for the module's ClassResolver instance passed in as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="messages">Placeholder for a Messages object (from the invoking module) as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="service-id">Placeholder for the service id (of the constructed service) as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="object" name="object">Placeholder for an object provided by the object translator as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set">Configures a property of the service instance.<attribute

    [junit]                             name="property" required="true">The name of a property of the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true">The value to set the property to. The value will be converted to the type of the property.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderSmartPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="attributeValue"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-object">Configures a property of the service instance using an object.<attribute

    [junit]                             name="property" required="true">The name of a property of the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true" translator="object">The value to set the property to, in the form of a prefix and a locator for that prefix. Prefixes are defined by the ObjectProviders configuration point. Each prefix provides a different interpretation for the locator, such as a service id or class name.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-service">Configures a property of the service instance to another service.<attribute

    [junit]                             name="property" required="true">The name of the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="service-id" required="true" translator="service">The id of the service.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="service-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-configuration">Configures a property of the service instance to the elements contributed to an configuration point.<attribute

    [junit]                             name="property" required="true">The name of the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="configuration-id"

    [junit]                             required="true" translator="configuration">The id of the configuration point to access.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="configuration-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-resource">Configures a property of the service instance to a resource.<attribute

    [junit]                             name="property" required="true">The name of the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="path" required="true" translator="resource">The path, relative to the module's deployment descriptor, of the resource.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="path" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="event-listener">Registers the new services as an event listener for events produced by the specified service.<attribute

    [junit]                             name="service-id" required="true" translator="service">The service which will produce events.</attribute>

    [junit]                         <attribute name="event-set">If given, the name of an event set for which the service will be registered. If omitted, the service will be registered for all events sets for which it implements the necessary listener interfaces.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.EventRegistration"/>

    [junit]                             <read-attribute attribute="service-id" property="producer"/>

    [junit]                             <read-attribute attribute="event-set" property="eventSetName"/>

    [junit]                             <invoke-parent depth="6" method="addEventRegistration"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                 </element>

    [junit]             </parameters-schema>

    [junit]             <create-instance

    [junit]                 class="org.apache.hivemind.service.impl.BuilderFactory" model="primitive"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadEventNotifier"

    [junit]             interface="org.apache.hivemind.service.ThreadEventNotifier"

    [junit]                 uid="13">Service used by other services to be alerted when a thread is cleaned up (typically, at the end of a request or transaction).<create-instance class="org.apache.hivemind.service.impl.ThreadEventNotifierImpl"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadLocalStorage"

    [junit]             interface="org.apache.hivemind.service.ThreadLocalStorage"

    [junit]                 uid="14">Service which manages a thread-local map of data items. This can be used for temporary storage of information when local variables can't be used. All stored items are released when the thread is cleaned up.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.ThreadLocalStorageImpl">

    [junit]                     <set-service property="notifier" service-id="ThreadEventNotifier"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ServiceModels"

    [junit]                     uid="15">Defines service models, providing a name and a class for each.<schema>Describes contributions that define new types of service models by providing service model factories.<element name="service-model">

    [junit]                     <attribute name="name" required="true">The name of the service model, which must be unique.</attribute>

    [junit]                     <attribute name="class" required="false" translator="instance">The name of the service model factory class to instantiate.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.ServiceModelContribution">

    [junit]                         <map attribute="class" property="factory"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.ServiceModels" uid="16">

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PrimitiveServiceModelFactory" name="primitive"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.SingletonServiceModelFactory" name="singleton"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.ThreadedServiceModelFactory" name="threaded"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PooledServiceModelFactory" name="pooled"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.Translators"

    [junit]                     uid="17">Used to define new translators that can be used in contribution conversion rules. Translators must have unique names.<schema>Maps translator names to translator classes.<element

    [junit]                         name="translator">Maps a translator name to a translator class.<attribute

    [junit]                         name="name" required="true">A unique name for a translator.</attribute>

    [junit]                     <attribute name="class" required="false" translator="class">The class to instantiate, which must implement the Translator interface.</attribute>

    [junit]                     <attribute name="service-id" required="false" translator="service">A service which implements the Translator interface.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.TranslatorContribution">

    [junit]                         <map attribute="class" property="translatorClass"/>

    [junit]                         <map attribute="service-id" property="translator"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.Translators" uid="18">

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.BooleanTranslator" name="boolean"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IntTranslator" name="int"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.EnumerationTranslator" name="enumeration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ConfigurationTranslator" name="configuration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ResourceTranslator" name="resource"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.LongTranslator" name="long"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.DoubleTranslator" name="double"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ServicePointTranslator" name="service-point"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.QualifiedIdTranslator" name="qualified-id"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IdListTranslator" name="id-list"/>

    [junit]             <translator name="object" service-id="ObjectTranslator"/>

    [junit]         </contribution>

    [junit]         <service-point id="hivemind.ShutdownCoordinator"

    [junit]             interface="org.apache.hivemind.ShutdownCoordinator"

    [junit]                 uid="19">A source of event notifications for when the Registry is shutdown.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.ShutdownCoordinatorImpl">

    [junit]                     <log/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.Startup" uid="20">A configuration to which startup objects may be contributed (as objects or services). Startup object must implement the java.lang.Runnable interface. Order of execution is expliclitly NOT defined.<schema>

    [junit]                 <element

    [junit]                         name="service">Defines a service that implements the Runnable interface.<attribute

    [junit]                         name="service-id" translator="service">The name of a service implementing the Runnable interface.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]                 <element

    [junit]                         name="runnable">Allows an instance of a class implementing Runnable to be contributed.<attribute

    [junit]                         name="class" translator="instance">The name of a class implementing Runnable.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="class"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.Startup"

    [junit]             interface="java.lang.Runnable"

    [junit]                 uid="21">A service which is used to bootstrap HiveMind; it obtains the hivemind.Startup configuration and runs each Runnable object or service within.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.StartupImpl">

    [junit]                     <set-configuration configuration-id="Startup" property="runnables"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.EagerLoad" uid="22">Configuration to which services may be contributed. The corresponding services are instantiated eagerly, as the Registry is started. The order in which services are instantiated is not specified. <schema>

    [junit]                 <element

    [junit]                         name="load">Identifies a service that will be eagerly loaded.<attribute

    [junit]                         name="service-id" required="true" translator="service-point"/>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.EagerLoad"

    [junit]             interface="java.lang.Runnable"

    [junit]                 uid="23">Service that performs eager loading of other services. This service is contributed into the hivemind.Startup configuration.<invoke-factory

    [junit]                 model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.EagerLoader">

    [junit]                     <set-configuration configuration-id="EagerLoad" property="servicePoints"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <contribution configuration-id="hivemind.Startup" uid="24">

    [junit]             <service service-id="EagerLoad"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.ObjectProviders" uid="25">Services that can provide objects for the object translator.<schema>

    [junit]                 <element name="provider">

    [junit]                     <attribute name="prefix" required="true">The prefix used to identify the provider.</attribute>

    [junit]                     <attribute name="service-id" required="true" translator="service">The object providing service.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.service.impl.ObjectProviderContribution">

    [junit]                         <map attribute="service-id" property="provider"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.ObjectTranslator"

    [junit]             interface="org.apache.hivemind.schema.Translator"

    [junit]                 uid="26">Translator that works with ObjectProviders to find or create objects.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct

    [junit]                     class="org.apache.hivemind.service.impl.ObjectTranslator" initialize-method="initializeService">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ObjectProviders" property="contributions"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServiceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="27">ObjectProvider that can locate services. Mapped to the service: prefix.<create-instance class="org.apache.hivemind.service.impl.ServiceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ConfigurationObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="28">ObjectProvider that can locate configurations. Mapped to the configuration: prefix.<create-instance class="org.apache.hivemind.service.impl.ConfigurationObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ObjectInstanceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="29">ObjectProvider that will instantiate a new instance of a provided class. Mapped to the instance: prefix.<create-instance class="org.apache.hivemind.service.impl.ObjectInstanceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServicePropertyObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="30">ObjectProvider that will extra a property from a service.  Mapped to the service-property:...> but was:<... version="1.0.0">            The master

    [junit]         module for HiveMind, defining core, universal functionality.

    [junit]             <configuration-point id="hivemind.SymbolSources" uid="2">

    [junit]             Provides a list of sources for values of substitution

    [junit]             symbols.                 <schema>

    [junit]                 <element name="source">Describes a single source of

    [junit]                     symbol values.   <attribute name="name"

    [junit]                         required="true">   A unique name used    to

    [junit]                         identify the source, used when ordering the sources.</attribute>

    [junit]                     <attribute name="class" translator="instance">

    [junit]                         Name of a class implementing the SymbolSource interface.</attribute>

    [junit]                     <attribute name="service-id" translator="service">

    [junit]                         Service configuration id for a service which

    [junit]                         implements the SymbolSource    interface.</attribute>

    [junit]                     <attribute name="before">       A list of the names

    [junit]                         of other sources this source should    precede.</attribute>

    [junit]                     <attribute name="after">       A list of the names

    [junit]                         of other sources this source should    follow.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.SymbolSourceContribution">

    [junit]                         <map attribute="class" property="source"/>

    [junit]                         <map attribute="service-id" property="source"/>

    [junit]                         <map attribute="before" property="followingNames"/>

    [junit]                         <map attribute="after" property="precedingNames"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.SymbolSources" uid="3">

    [junit]             <source before="hivemind.FactoryDefaults"

    [junit]                 name="hivemind.ApplicationDefaults" service-id="ApplicationDefaultsSymbolSource"/>

    [junit]             <source name="hivemind.FactoryDefaults" service-id="FactoryDefaultsSymbolSource"/>

    [junit]         </contribution>

    [junit]         <schema id="hivemind.Defaults" uid="4">

    [junit]             <element name="default">Provides a default symbol

    [junit]                     value.<attribute name="symbol" required="true">The

    [junit]                     id of the symbol to define a default value for.</attribute>

    [junit]                 <attribute name="value" required="true">The value for

    [junit]                     the symbol.</attribute>

    [junit]                 <conversion class="org.apache.hivemind.service.impl.FactoryDefault"/>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <configuration-point id="hivemind.FactoryDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="5">Extension point for

    [junit]             setting &quot;factory defaults&quot; for symbol values.</configuration-point>

    [junit]         <service-point id="hivemind.FactoryDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]             uid="6">SymbolSource implementation driven by the

    [junit]             FactoryDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="FactoryDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ApplicationDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="7">Extension point for

    [junit]             setting application defaults; these defaults will override

    [junit]             factory defaults specified in the FactoryDefaults

    [junit]             configuration point.</configuration-point>

    [junit]         <service-point id="hivemind.ApplicationDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]             uid="8">SymbolSource implementation driven by the

    [junit]             ApplicationDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ApplicationDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ClassFactory"

    [junit]             interface="org.apache.hivemind.service.ClassFactory"

    [junit]             uid="9">Wrapper around Javassist used to dynamically create

    [junit]             classes such as service interceptors.<create-instance

    [junit]                 class="org.apache.hivemind.service.impl.ClassFactoryImpl" model="primitive"/>

    [junit]         </service-point>

    [junit]         <schema id="hivemind.MethodFilter" uid="10">Used primarily as

    [junit]             parameters to interceptor factories (such as

    [junit]             LoggingInterceptor) to define which methods of service

    [junit]             interface are to be included and which excluded.<element

    [junit]                 name="include">Identifies a method, or set of methods,

    [junit]                 to be included.<attribute name="method"

    [junit]                     required="true">A method pattern used to identify

    [junit]                     the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="true"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]             <element name="exclude">Identifies a method, or set of

    [junit]                 methods, to be excluded.<attribute name="method"

    [junit]                     required="true">A method pattern used to identify

    [junit]                     the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="false"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <service-point id="hivemind.LoggingInterceptor"

    [junit]             interface="org.apache.hivemind.ServiceInterceptorFactory"

    [junit]             parameters-schema-id="hivemind.MethodFilter" uid="11">An

    [junit]             interceptor factory for adding method-level logging to a

    [junit]             service. Logging occurs at level DEBUG and uses the service

    [junit]             id as the logger. Method entry (with parameters) and method

    [junit]             exit (with return value) are logged, as are any

    [junit]                 exceptions.<invoke-factory model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.LoggingInterceptorFactory">

    [junit]                     <set-service property="factory" service-id="ClassFactory"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.BuilderFactory"

    [junit]             interface="org.apache.hivemind.ServiceImplementationFactory"

    [junit]             uid="12">Used to construct a service from a class name and

    [junit]             optional constructor parameters and properties.<parameters-schema>

    [junit]                 <element name="construct">A single construct element

    [junit]                     identifies the class to instantiate.<attribute

    [junit]                         name="class" required="true">The name of the

    [junit]                         class to instantiate.</attribute>

    [junit]                     <attribute name="messages-property">The name of a

    [junit]                         property to assign invoking module's messages to.</attribute>

    [junit]                     <attribute name="log-property">The name of a

    [junit]                         property to assign the Log instance for the

    [junit]                         service to. The Log instance is built from the

    [junit]                         service configuration point id.</attribute>

    [junit]                     <attribute name="service-id-property">The name of a

    [junit]                         property to assign the configuration point id of

    [junit]                         the service to.</attribute>

    [junit]                     <attribute name="initialize-method">The name of a

    [junit]                         public instance method (taking no parameters) to

    [junit]                         be invoked after the service is constructed.</attribute>

    [junit]                     <attribute name="error-handler-property">The name of

    [junit]                         a property to assign the module's ErrorHandler to.</attribute>

    [junit]                     <attribute name="class-resolver-property">The name

    [junit]                         of a property to assign the module's

    [junit]                         ClassResolver to.</attribute>

    [junit]                     <attribute name="autowire-services"

    [junit]                         translator="boolean,default=true">If true (the

    [junit]                         default), the BuilderFactory will attempt to

    [junit]                         connect unclaimed properties to services.</attribute>

    [junit]                     <rules>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderParameter"/>

    [junit]                         <read-attribute attribute="class" property="className"/>

    [junit]                         <read-attribute attribute="initialize-method" property="initializeMethod"/>

    [junit]                         <read-attribute attribute="autowire-services"

    [junit]                             property="autowireServices" skip-if-null="false"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                         <read-attribute attribute="messages-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="1" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                         <read-attribute attribute="log-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="2" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                         <read-attribute attribute="service-id-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="3" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="error-handler-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="4" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="class-resolver-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="5" method="addProperty"/>

    [junit]                     </rules>

    [junit]                     <element name="string">A string value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="int" name="int">An

    [junit]                         integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="long" name="long">A

    [junit]                         long (64-bit) integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                         content-translator="enumeration,java.lang.Boolean,true=TRUE,false=FALSE"

    [junit]                         name="boolean">A boolean value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="service"

    [junit]                         name="service">A constructor parameter providing

    [junit]                         the identified HiveMind service.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="configuration"

    [junit]                         name="configuration">A constructor parameter

    [junit]                         providing a HiveMind configuration point (as a List).<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="resource"

    [junit]                         name="resource">A Resource constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="log">Placeholder for a Log instance

    [junit]                         for the constructed service as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="error-handler">Placeholder for the

    [junit]                         module's ErrorHandler instance passed in as a

    [junit]                         constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="class-resolver">Placeholder for the

    [junit]                         module's ClassResolver instance passed in as a

    [junit]                         constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="messages">Placeholder for a Messages

    [junit]                         object (from the invoking module) as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="service-id">Placeholder for the

    [junit]                         service id (of the constructed service) as

    [junit]                         constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="object"

    [junit]                         name="object">Placeholder for an object provided

    [junit]                         by the object translator as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set">Configures a property of the

    [junit]                         service instance.<attribute name="property"

    [junit]                             required="true">The name of a property of

    [junit]                             the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true">The

    [junit]                             value to set the property to. The value will

    [junit]                             be converted to the type of the property.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderSmartPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="attributeValue"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-object">Configures a property of

    [junit]                         the service instance using an object.<attribute

    [junit]                             name="property" required="true">The name of

    [junit]                             a property of the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true"

    [junit]                             translator="object">The value to set the

    [junit]                             property to, in the form of a prefix and a

    [junit]                             locator for that prefix. Prefixes are

    [junit]                             defined by the ObjectProviders configuration

    [junit]                             point. Each prefix provides a different

    [junit]                             interpretation for the locator, such as a

    [junit]                             service id or class name.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-service">Configures a property of

    [junit]                         the service instance to another

    [junit]                             service.<attribute name="property"

    [junit]                             required="true">The name of the property of

    [junit]                             the service instance to configure.</attribute>

    [junit]                         <attribute name="service-id" required="true"

    [junit]                             translator="service">The id of the service.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="service-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-configuration">Configures a

    [junit]                         property of the service instance to the elements

    [junit]                         contributed to an configuration point.<attribute

    [junit]                             name="property" required="true">The name of

    [junit]                             the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="configuration-id"

    [junit]                             required="true"

    [junit]                             translator="configuration">The id of the

    [junit]                             configuration point to access.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="configuration-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-resource">Configures a property

    [junit]                         of the service instance to a resource.<attribute

    [junit]                             name="property" required="true">The name of

    [junit]                             the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="path" required="true"

    [junit]                             translator="resource">The path, relative to

    [junit]                             the module's deployment descriptor, of the resource.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="path" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="event-listener">Registers the new

    [junit]                         services as an event listener for events

    [junit]                         produced by the specified service.<attribute

    [junit]                             name="service-id" required="true"

    [junit]                             translator="service">The service which will

    [junit]                             produce events.</attribute>

    [junit]                         <attribute name="event-set">If given, the name

    [junit]                             of an event set for which the service will

    [junit]                             be registered. If omitted, the service will

    [junit]                             be registered for all events sets for which

    [junit]                             it implements the necessary listener interfaces.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.EventRegistration"/>

    [junit]                             <read-attribute attribute="service-id" property="producer"/>

    [junit]                             <read-attribute attribute="event-set" property="eventSetName"/>

    [junit]                             <invoke-parent depth="6" method="addEventRegistration"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                 </element>

    [junit]             </parameters-schema>

    [junit]             <create-instance

    [junit]                 class="org.apache.hivemind.service.impl.BuilderFactory" model="primitive"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadEventNotifier"

    [junit]             interface="org.apache.hivemind.service.ThreadEventNotifier"

    [junit]             uid="13">Service used by other services to be alerted when a

    [junit]             thread is cleaned up (typically, at the end of a request or

    [junit]                 transaction).<create-instance class="org.apache.hivemind.service.impl.ThreadEventNotifierImpl"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadLocalStorage"

    [junit]             interface="org.apache.hivemind.service.ThreadLocalStorage"

    [junit]             uid="14">Service which manages a thread-local map of data

    [junit]             items. This can be used for temporary storage of information

    [junit]             when local variables can't be used. All stored items are

    [junit]             released when the thread is cleaned up.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.ThreadLocalStorageImpl">

    [junit]                     <set-service property="notifier" service-id="ThreadEventNotifier"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ServiceModels"

    [junit]             uid="15">Defines service models, providing a name and a

    [junit]             class for each.<schema>Describes contributions that define

    [junit]                 new types of service models by providing service model

    [junit]                     factories.<element name="service-model">

    [junit]                     <attribute name="name" required="true">The name of

    [junit]                         the service model, which must be unique.</attribute>

    [junit]                     <attribute name="class" required="false"

    [junit]                         translator="instance">The name of the service

    [junit]                         model factory class to instantiate.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.ServiceModelContribution">

    [junit]                         <map attribute="class" property="factory"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.ServiceModels" uid="16">

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PrimitiveServiceModelFactory" name="primitive"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.SingletonServiceModelFactory" name="singleton"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.ThreadedServiceModelFactory" name="threaded"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PooledServiceModelFactory" name="pooled"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.Translators" uid="17">Used to

    [junit]             define new translators that can be used in contribution

    [junit]             conversion rules. Translators must have unique

    [junit]                 names.<schema>Maps translator names to translator

    [junit]                     classes.<element name="translator">Maps a translator

    [junit]                     name to a translator class.<attribute name="name"

    [junit]                         required="true">A unique name for a translator.</attribute>

    [junit]                     <attribute name="class" required="false"

    [junit]                         translator="class">The class to instantiate,

    [junit]                         which must implement the Translator interface.</attribute>

    [junit]                     <attribute name="service-id" required="false"

    [junit]                         translator="service">A service which implements

    [junit]                         the Translator interface.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.TranslatorContribution">

    [junit]                         <map attribute="class" property="translatorClass"/>

    [junit]                         <map attribute="service-id" property="translator"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.Translators" uid="18">

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.BooleanTranslator" name="boolean"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IntTranslator" name="int"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.EnumerationTranslator" name="enumeration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ConfigurationTranslator" name="configuration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ResourceTranslator" name="resource"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.LongTranslator" name="long"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.DoubleTranslator" name="double"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ServicePointTranslator" name="service-point"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.QualifiedIdTranslator" name="qualified-id"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IdListTranslator" name="id-list"/>

    [junit]             <translator name="object" service-id="ObjectTranslator"/>

    [junit]         </contribution>

    [junit]         <service-point id="hivemind.ShutdownCoordinator"

    [junit]             interface="org.apache.hivemind.ShutdownCoordinator"

    [junit]             uid="19">A source of event notifications for when the

    [junit]             Registry is shutdown.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.ShutdownCoordinatorImpl">

    [junit]                     <log/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.Startup" uid="20">A

    [junit]             configuration to which startup objects may be contributed

    [junit]             (as objects or services). Startup object must implement the

    [junit]             java.lang.Runnable interface. Order of execution is

    [junit]             expliclitly NOT defined.<schema>

    [junit]                 <element name="service">Defines a service that

    [junit]                     implements the Runnable interface.<attribute

    [junit]                         name="service-id" translator="service">The name

    [junit]                         of a service implementing the Runnable interface.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]                 <element name="runnable">Allows an instance of a class

    [junit]                     implementing Runnable to be contributed.<attribute

    [junit]                         name="class" translator="instance">The name of a

    [junit]                         class implementing Runnable.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="class"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.Startup"

    [junit]             interface="java.lang.Runnable" uid="21">A service which is

    [junit]             used to bootstrap HiveMind; it obtains the hivemind.Startup

    [junit]             configuration and runs each Runnable object or service

    [junit]                 within.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.StartupImpl">

    [junit]                     <set-configuration configuration-id="Startup" property="runnables"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.EagerLoad"

    [junit]             uid="22">Configuration to which services may be contributed.

    [junit]             The corresponding services are instantiated eagerly, as the

    [junit]             Registry is started. The order in which services are

    [junit]             instantiated is not specified. <schema>

    [junit]                 <element name="load">Identifies a service that will be

    [junit]                     eagerly loaded.<attribute name="service-id"

    [junit]                         required="true" translator="service-point"/>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.EagerLoad"

    [junit]             interface="java.lang.Runnable" uid="23">Service that

    [junit]             performs eager loading of other services. This service is

    [junit]             contributed into the hivemind.Startup

    [junit]                 configuration.<invoke-factory model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.EagerLoader">

    [junit]                     <set-configuration configuration-id="EagerLoad" property="servicePoints"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <contribution configuration-id="hivemind.Startup" uid="24">

    [junit]             <service service-id="EagerLoad"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.ObjectProviders"

    [junit]             uid="25">Services that can provide objects for the object translator.<schema>

    [junit]                 <element name="provider">

    [junit]                     <attribute name="prefix" required="true">The prefix

    [junit]                         used to identify the provider.</attribute>

    [junit]                     <attribute name="service-id" required="true"

    [junit]                         translator="service">The object providing service.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.service.impl.ObjectProviderContribution">

    [junit]                         <map attribute="service-id" property="provider"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.ObjectTranslator"

    [junit]             interface="org.apache.hivemind.schema.Translator"

    [junit]             uid="26">Translator that works with ObjectProviders to find

    [junit]             or create objects.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct

    [junit]                     class="org.apache.hivemind.service.impl.ObjectTranslator" initialize-method="initializeService">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ObjectProviders" property="contributions"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServiceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="27">ObjectProvider that can locate services. Mapped to

    [junit]             the service: prefix.<create-instance class="org.apache.hivemind.service.impl.ServiceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ConfigurationObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="28">ObjectProvider that can locate configurations.

    [junit]             Mapped to the configuration: prefix.<create-instance class="org.apache.hivemind.service.impl.ConfigurationObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ObjectInstanceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="29">ObjectProvider that will instantiate a new instance

    [junit]             of a provided class. Mapped to the instance:

    [junit]                 prefix.<create-instance class="org.apache.hivemind.service.impl.ObjectInstanceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServicePropertyObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="30">ObjectProvider that will extra a property from a

    [junit]             service.  Mapped to the service-property:

    [junit]                ...>

    [junit] junit.framework.ComparisonFailure: expected:<...

    [junit]             version="1.0.0">

    [junit]        

    [junit]   The master module for HiveMind, defining core, universal functionality.

 

    [junit]   <configuration-point

    [junit]             id="hivemind.SymbolSources" uid="2">

    [junit]               Provides a list of sources for values of substitution symbols.

    [junit]                 <schema>

    [junit]                 <element

    [junit]                         name="source">Describes a single source of symbol values.

    [junit]   <attribute

    [junit]                         name="name" required="true">

    [junit]   A unique name used

    [junit]   to identify the source, used when ordering the sources.</attribute>

    [junit]                     <attribute name="class" translator="instance">

    [junit]       Name of a class implementing the SymbolSource interface.</attribute>

    [junit]                     <attribute name="service-id" translator="service">

    [junit]   Service configuration id for a service which implements the SymbolSource

    [junit]   interface.</attribute>

    [junit]                     <attribute name="before">

    [junit]       A list of the names of other sources this source should

    [junit]   precede.</attribute>

    [junit]                     <attribute name="after">

    [junit]       A list of the names of other sources this source should

    [junit]   follow.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.SymbolSourceContribution">

    [junit]                         <map attribute="class" property="source"/>

    [junit]                         <map attribute="service-id" property="source"/>

    [junit]                         <map attribute="before" property="followingNames"/>

    [junit]                         <map attribute="after" property="precedingNames"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.SymbolSources" uid="3">

    [junit]             <source before="hivemind.FactoryDefaults"

    [junit]                 name="hivemind.ApplicationDefaults" service-id="ApplicationDefaultsSymbolSource"/>

    [junit]             <source name="hivemind.FactoryDefaults" service-id="FactoryDefaultsSymbolSource"/>

    [junit]         </contribution>

    [junit]         <schema id="hivemind.Defaults" uid="4">

    [junit]             <element

    [junit]                     name="default">Provides a default symbol value.<attribute

    [junit]                     name="symbol" required="true">The id of the symbol to define a default value for.</attribute>

    [junit]                 <attribute name="value" required="true">The value for the symbol.</attribute>

    [junit]                 <conversion class="org.apache.hivemind.service.impl.FactoryDefault"/>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <configuration-point id="hivemind.FactoryDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="5">Extension point for setting "factory defaults" for symbol values.</configuration-point>

    [junit]         <service-point id="hivemind.FactoryDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]                 uid="6">SymbolSource implementation driven by the FactoryDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="FactoryDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ApplicationDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="7">Extension point for setting application defaults; these defaults will override factory defaults specified in the FactoryDefaults configuration point.</configuration-point>

    [junit]         <service-point id="hivemind.ApplicationDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]                 uid="8">SymbolSource implementation driven by the ApplicationDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ApplicationDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ClassFactory"

    [junit]             interface="org.apache.hivemind.service.ClassFactory"

    [junit]                 uid="9">Wrapper around Javassist used to dynamically create classes such as service interceptors.<create-instance

    [junit]                 class="org.apache.hivemind.service.impl.ClassFactoryImpl" model="primitive"/>

    [junit]         </service-point>

    [junit]         <schema id="hivemind.MethodFilter"

    [junit]                 uid="10">Used primarily as parameters to interceptor factories (such as LoggingInterceptor) to define which methods of service interface are to be included and which excluded.<element

    [junit]                     name="include">Identifies a method, or set of methods, to be included.<attribute

    [junit]                     name="method" required="true">A method pattern used to identify the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="true"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]             <element

    [junit]                     name="exclude">Identifies a method, or set of methods, to be excluded.<attribute

    [junit]                     name="method" required="true">A method pattern used to identify the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="false"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <service-point id="hivemind.LoggingInterceptor"

    [junit]             interface="org.apache.hivemind.ServiceInterceptorFactory"

    [junit]             parameters-schema-id="hivemind.MethodFilter"

    [junit]                 uid="11">An interceptor factory for adding method-level logging to a service. Logging occurs at level DEBUG and uses the service id as the logger. Method entry (with parameters) and method exit (with return value) are logged, as are any exceptions.<invoke-factory

    [junit]                 model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.LoggingInterceptorFactory">

    [junit]                     <set-service property="factory" service-id="ClassFactory"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.BuilderFactory"

    [junit]             interface="org.apache.hivemind.ServiceImplementationFactory" uid="12">Used to construct a service from a class name and optional constructor parameters and properties.<parameters-schema>

    [junit]                 <element

    [junit]                         name="construct">A single construct element identifies the class to instantiate.<attribute

    [junit]                         name="class" required="true">The name of the class to instantiate.</attribute>

    [junit]                     <attribute name="messages-property">The name of a property to assign invoking module's messages to.</attribute>

    [junit]                     <attribute name="log-property">The name of a property to assign the Log instance for the service to. The Log instance is built from the service configuration point id.</attribute>

    [junit]                     <attribute name="service-id-property">The name of a property to assign the configuration point id of the service to.</attribute>

    [junit]                     <attribute name="initialize-method">The name of a public instance method (taking no parameters) to be invoked after the service is constructed.</attribute>

    [junit]                     <attribute name="error-handler-property">The name of a property to assign the module's ErrorHandler to.</attribute>

    [junit]                     <attribute name="class-resolver-property">The name of a property to assign the module's ClassResolver to.</attribute>

    [junit]                     <attribute name="autowire-services" translator="boolean,default=true">If true (the default), the BuilderFactory will attempt to connect unclaimed properties to services.</attribute>

    [junit]                     <rules>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderParameter"/>

    [junit]                         <read-attribute attribute="class" property="className"/>

    [junit]                         <read-attribute attribute="initialize-method" property="initializeMethod"/>

    [junit]                         <read-attribute attribute="autowire-services"

    [junit]                             property="autowireServices" skip-if-null="false"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                         <read-attribute attribute="messages-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="1" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                         <read-attribute attribute="log-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="2" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                         <read-attribute attribute="service-id-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="3" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="error-handler-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="4" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="class-resolver-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="5" method="addProperty"/>

    [junit]                     </rules>

    [junit]                     <element name="string">A string value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="int" name="int">An integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="long" name="long">A long (64-bit) integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                         content-translator="enumeration,java.lang.Boolean,true=TRUE,false=FALSE" name="boolean">A boolean value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="service" name="service">A constructor parameter providing the identified HiveMind service.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="configuration" name="configuration">A constructor parameter providing a HiveMind configuration point (as a List).<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="resource" name="resource">A Resource constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="log">Placeholder for a Log instance for the constructed service as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="error-handler">Placeholder for the module's ErrorHandler instance passed in as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="class-resolver">Placeholder for the module's ClassResolver instance passed in as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="messages">Placeholder for a Messages object (from the invoking module) as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="service-id">Placeholder for the service id (of the constructed service) as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="object" name="object">Placeholder for an object provided by the object translator as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set">Configures a property of the service instance.<attribute

    [junit]                             name="property" required="true">The name of a property of the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true">The value to set the property to. The value will be converted to the type of the property.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderSmartPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="attributeValue"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-object">Configures a property of the service instance using an object.<attribute

    [junit]                             name="property" required="true">The name of a property of the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true" translator="object">The value to set the property to, in the form of a prefix and a locator for that prefix. Prefixes are defined by the ObjectProviders configuration point. Each prefix provides a different interpretation for the locator, such as a service id or class name.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-service">Configures a property of the service instance to another service.<attribute

    [junit]                             name="property" required="true">The name of the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="service-id" required="true" translator="service">The id of the service.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="service-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-configuration">Configures a property of the service instance to the elements contributed to an configuration point.<attribute

    [junit]                             name="property" required="true">The name of the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="configuration-id"

    [junit]                             required="true" translator="configuration">The id of the configuration point to access.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="configuration-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-resource">Configures a property of the service instance to a resource.<attribute

    [junit]                             name="property" required="true">The name of the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="path" required="true" translator="resource">The path, relative to the module's deployment descriptor, of the resource.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="path" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="event-listener">Registers the new services as an event listener for events produced by the specified service.<attribute

    [junit]                             name="service-id" required="true" translator="service">The service which will produce events.</attribute>

    [junit]                         <attribute name="event-set">If given, the name of an event set for which the service will be registered. If omitted, the service will be registered for all events sets for which it implements the necessary listener interfaces.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.EventRegistration"/>

    [junit]                             <read-attribute attribute="service-id" property="producer"/>

    [junit]                             <read-attribute attribute="event-set" property="eventSetName"/>

    [junit]                             <invoke-parent depth="6" method="addEventRegistration"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                 </element>

    [junit]             </parameters-schema>

    [junit]             <create-instance

    [junit]                 class="org.apache.hivemind.service.impl.BuilderFactory" model="primitive"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadEventNotifier"

    [junit]             interface="org.apache.hivemind.service.ThreadEventNotifier"

    [junit]                 uid="13">Service used by other services to be alerted when a thread is cleaned up (typically, at the end of a request or transaction).<create-instance class="org.apache.hivemind.service.impl.ThreadEventNotifierImpl"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadLocalStorage"

    [junit]             interface="org.apache.hivemind.service.ThreadLocalStorage"

    [junit]                 uid="14">Service which manages a thread-local map of data items. This can be used for temporary storage of information when local variables can't be used. All stored items are released when the thread is cleaned up.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.ThreadLocalStorageImpl">

    [junit]                     <set-service property="notifier" service-id="ThreadEventNotifier"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ServiceModels"

    [junit]                     uid="15">Defines service models, providing a name and a class for each.<schema>Describes contributions that define new types of service models by providing service model factories.<element name="service-model">

    [junit]                     <attribute name="name" required="true">The name of the service model, which must be unique.</attribute>

    [junit]                     <attribute name="class" required="false" translator="instance">The name of the service model factory class to instantiate.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.ServiceModelContribution">

    [junit]                         <map attribute="class" property="factory"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.ServiceModels" uid="16">

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PrimitiveServiceModelFactory" name="primitive"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.SingletonServiceModelFactory" name="singleton"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.ThreadedServiceModelFactory" name="threaded"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PooledServiceModelFactory" name="pooled"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.Translators"

    [junit]                     uid="17">Used to define new translators that can be used in contribution conversion rules. Translators must have unique names.<schema>Maps translator names to translator classes.<element

    [junit]                         name="translator">Maps a translator name to a translator class.<attribute

    [junit]                         name="name" required="true">A unique name for a translator.</attribute>

    [junit]                     <attribute name="class" required="false" translator="class">The class to instantiate, which must implement the Translator interface.</attribute>

    [junit]                     <attribute name="service-id" required="false" translator="service">A service which implements the Translator interface.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.TranslatorContribution">

    [junit]                         <map attribute="class" property="translatorClass"/>

    [junit]                         <map attribute="service-id" property="translator"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.Translators" uid="18">

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.BooleanTranslator" name="boolean"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IntTranslator" name="int"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.EnumerationTranslator" name="enumeration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ConfigurationTranslator" name="configuration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ResourceTranslator" name="resource"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.LongTranslator" name="long"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.DoubleTranslator" name="double"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ServicePointTranslator" name="service-point"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.QualifiedIdTranslator" name="qualified-id"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IdListTranslator" name="id-list"/>

    [junit]             <translator name="object" service-id="ObjectTranslator"/>

    [junit]         </contribution>

    [junit]         <service-point id="hivemind.ShutdownCoordinator"

    [junit]             interface="org.apache.hivemind.ShutdownCoordinator"

    [junit]                 uid="19">A source of event notifications for when the Registry is shutdown.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.ShutdownCoordinatorImpl">

    [junit]                     <log/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.Startup" uid="20">A configuration to which startup objects may be contributed (as objects or services). Startup object must implement the java.lang.Runnable interface. Order of execution is expliclitly NOT defined.<schema>

    [junit]                 <element

    [junit]                         name="service">Defines a service that implements the Runnable interface.<attribute

    [junit]                         name="service-id" translator="service">The name of a service implementing the Runnable interface.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]                 <element

    [junit]                         name="runnable">Allows an instance of a class implementing Runnable to be contributed.<attribute

    [junit]                         name="class" translator="instance">The name of a class implementing Runnable.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="class"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.Startup"

    [junit]             interface="java.lang.Runnable"

    [junit]                 uid="21">A service which is used to bootstrap HiveMind; it obtains the hivemind.Startup configuration and runs each Runnable object or service within.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.StartupImpl">

    [junit]                     <set-configuration configuration-id="Startup" property="runnables"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.EagerLoad" uid="22">Configuration to which services may be contributed. The corresponding services are instantiated eagerly, as the Registry is started. The order in which services are instantiated is not specified. <schema>

    [junit]                 <element

    [junit]                         name="load">Identifies a service that will be eagerly loaded.<attribute

    [junit]                         name="service-id" required="true" translator="service-point"/>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.EagerLoad"

    [junit]             interface="java.lang.Runnable"

    [junit]                 uid="23">Service that performs eager loading of other services. This service is contributed into the hivemind.Startup configuration.<invoke-factory

    [junit]                 model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.EagerLoader">

    [junit]                     <set-configuration configuration-id="EagerLoad" property="servicePoints"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <contribution configuration-id="hivemind.Startup" uid="24">

    [junit]             <service service-id="EagerLoad"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.ObjectProviders" uid="25">Services that can provide objects for the object translator.<schema>

    [junit]                 <element name="provider">

    [junit]                     <attribute name="prefix" required="true">The prefix used to identify the provider.</attribute>

    [junit]                     <attribute name="service-id" required="true" translator="service">The object providing service.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.service.impl.ObjectProviderContribution">

    [junit]                         <map attribute="service-id" property="provider"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.ObjectTranslator"

    [junit]             interface="org.apache.hivemind.schema.Translator"

    [junit]                 uid="26">Translator that works with ObjectProviders to find or create objects.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct

    [junit]                     class="org.apache.hivemind.service.impl.ObjectTranslator" initialize-method="initializeService">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ObjectProviders" property="contributions"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServiceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="27">ObjectProvider that can locate services. Mapped to the service: prefix.<create-instance class="org.apache.hivemind.service.impl.ServiceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ConfigurationObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="28">ObjectProvider that can locate configurations. Mapped to the configuration: prefix.<create-instance class="org.apache.hivemind.service.impl.ConfigurationObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ObjectInstanceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="29">ObjectProvider that will instantiate a new instance of a provided class. Mapped to the instance: prefix.<create-instance class="org.apache.hivemind.service.impl.ObjectInstanceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServicePropertyObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="30">ObjectProvider that will extra a property from a service.  Mapped to the service-property:...> but was:<... version="1.0.0">            The master

    [junit]         module for HiveMind, defining core, universal functionality.

    [junit]             <configuration-point id="hivemind.SymbolSources" uid="2">

    [junit]             Provides a list of sources for values of substitution

    [junit]             symbols.                 <schema>

    [junit]                 <element name="source">Describes a single source of

    [junit]                     symbol values.   <attribute name="name"

    [junit]                         required="true">   A unique name used    to

    [junit]                         identify the source, used when ordering the sources.</attribute>

    [junit]                     <attribute name="class" translator="instance">

    [junit]                         Name of a class implementing the SymbolSource interface.</attribute>

    [junit]                     <attribute name="service-id" translator="service">

    [junit]                         Service configuration id for a service which

    [junit]                         implements the SymbolSource    interface.</attribute>

    [junit]                     <attribute name="before">       A list of the names

    [junit]                         of other sources this source should    precede.</attribute>

    [junit]                     <attribute name="after">       A list of the names

    [junit]                         of other sources this source should    follow.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.SymbolSourceContribution">

    [junit]                         <map attribute="class" property="source"/>

    [junit]                         <map attribute="service-id" property="source"/>

    [junit]                         <map attribute="before" property="followingNames"/>

    [junit]                         <map attribute="after" property="precedingNames"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.SymbolSources" uid="3">

    [junit]             <source before="hivemind.FactoryDefaults"

    [junit]                 name="hivemind.ApplicationDefaults" service-id="ApplicationDefaultsSymbolSource"/>

    [junit]             <source name="hivemind.FactoryDefaults" service-id="FactoryDefaultsSymbolSource"/>

    [junit]         </contribution>

    [junit]         <schema id="hivemind.Defaults" uid="4">

    [junit]             <element name="default">Provides a default symbol

    [junit]                     value.<attribute name="symbol" required="true">The

    [junit]                     id of the symbol to define a default value for.</attribute>

    [junit]                 <attribute name="value" required="true">The value for

    [junit]                     the symbol.</attribute>

    [junit]                 <conversion class="org.apache.hivemind.service.impl.FactoryDefault"/>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <configuration-point id="hivemind.FactoryDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="5">Extension point for

    [junit]             setting &quot;factory defaults&quot; for symbol values.</configuration-point>

    [junit]         <service-point id="hivemind.FactoryDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]             uid="6">SymbolSource implementation driven by the

    [junit]             FactoryDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="FactoryDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ApplicationDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="7">Extension point for

    [junit]             setting application defaults; these defaults will override

    [junit]             factory defaults specified in the FactoryDefaults

    [junit]             configuration point.</configuration-point>

    [junit]         <service-point id="hivemind.ApplicationDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]             uid="8">SymbolSource implementation driven by the

    [junit]             ApplicationDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ApplicationDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ClassFactory"

    [junit]             interface="org.apache.hivemind.service.ClassFactory"

    [junit]             uid="9">Wrapper around Javassist used to dynamically create

    [junit]             classes such as service interceptors.<create-instance

    [junit]                 class="org.apache.hivemind.service.impl.ClassFactoryImpl" model="primitive"/>

    [junit]         </service-point>

    [junit]         <schema id="hivemind.MethodFilter" uid="10">Used primarily as

    [junit]             parameters to interceptor factories (such as

    [junit]             LoggingInterceptor) to define which methods of service

    [junit]             interface are to be included and which excluded.<element

    [junit]                 name="include">Identifies a method, or set of methods,

    [junit]                 to be included.<attribute name="method"

    [junit]                     required="true">A method pattern used to identify

    [junit]                     the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="true"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]             <element name="exclude">Identifies a method, or set of

    [junit]                 methods, to be excluded.<attribute name="method"

    [junit]                     required="true">A method pattern used to identify

    [junit]                     the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="false"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <service-point id="hivemind.LoggingInterceptor"

    [junit]             interface="org.apache.hivemind.ServiceInterceptorFactory"

    [junit]             parameters-schema-id="hivemind.MethodFilter" uid="11">An

    [junit]             interceptor factory for adding method-level logging to a

    [junit]             service. Logging occurs at level DEBUG and uses the service

    [junit]             id as the logger. Method entry (with parameters) and method

    [junit]             exit (with return value) are logged, as are any

    [junit]                 exceptions.<invoke-factory model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.LoggingInterceptorFactory">

    [junit]                     <set-service property="factory" service-id="ClassFactory"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.BuilderFactory"

    [junit]             interface="org.apache.hivemind.ServiceImplementationFactory"

    [junit]             uid="12">Used to construct a service from a class name and

    [junit]             optional constructor parameters and properties.<parameters-schema>

    [junit]                 <element name="construct">A single construct element

    [junit]                     identifies the class to instantiate.<attribute

    [junit]                         name="class" required="true">The name of the

    [junit]                         class to instantiate.</attribute>

    [junit]                     <attribute name="messages-property">The name of a

    [junit]                         property to assign invoking module's messages to.</attribute>

    [junit]                     <attribute name="log-property">The name of a

    [junit]                         property to assign the Log instance for the

    [junit]                         service to. The Log instance is built from the

    [junit]                         service configuration point id.</attribute>

    [junit]                     <attribute name="service-id-property">The name of a

    [junit]                         property to assign the configuration point id of

    [junit]                         the service to.</attribute>

    [junit]                     <attribute name="initialize-method">The name of a

    [junit]                         public instance method (taking no parameters) to

    [junit]                         be invoked after the service is constructed.</attribute>

    [junit]                     <attribute name="error-handler-property">The name of

    [junit]                         a property to assign the module's ErrorHandler to.</attribute>

    [junit]                     <attribute name="class-resolver-property">The name

    [junit]                         of a property to assign the module's

    [junit]                         ClassResolver to.</attribute>

    [junit]                     <attribute name="autowire-services"

    [junit]                         translator="boolean,default=true">If true (the

    [junit]                         default), the BuilderFactory will attempt to

    [junit]                         connect unclaimed properties to services.</attribute>

    [junit]                     <rules>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderParameter"/>

    [junit]                         <read-attribute attribute="class" property="className"/>

    [junit]                         <read-attribute attribute="initialize-method" property="initializeMethod"/>

    [junit]                         <read-attribute attribute="autowire-services"

    [junit]                             property="autowireServices" skip-if-null="false"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                         <read-attribute attribute="messages-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="1" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                         <read-attribute attribute="log-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="2" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                         <read-attribute attribute="service-id-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="3" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="error-handler-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="4" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="class-resolver-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="5" method="addProperty"/>

    [junit]                     </rules>

    [junit]                     <element name="string">A string value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="int" name="int">An

    [junit]                         integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="long" name="long">A

    [junit]                         long (64-bit) integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                         content-translator="enumeration,java.lang.Boolean,true=TRUE,false=FALSE"

    [junit]                         name="boolean">A boolean value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="service"

    [junit]                         name="service">A constructor parameter providing

    [junit]                         the identified HiveMind service.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="configuration"

    [junit]                         name="configuration">A constructor parameter

    [junit]                         providing a HiveMind configuration point (as a List).<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="resource"

    [junit]                         name="resource">A Resource constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="log">Placeholder for a Log instance

    [junit]                         for the constructed service as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="error-handler">Placeholder for the

    [junit]                         module's ErrorHandler instance passed in as a

    [junit]                         constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="class-resolver">Placeholder for the

    [junit]                         module's ClassResolver instance passed in as a

    [junit]                         constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="messages">Placeholder for a Messages

    [junit]                         object (from the invoking module) as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="service-id">Placeholder for the

    [junit]                         service id (of the constructed service) as

    [junit]                         constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="object"

    [junit]                         name="object">Placeholder for an object provided

    [junit]                         by the object translator as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set">Configures a property of the

    [junit]                         service instance.<attribute name="property"

    [junit]                             required="true">The name of a property of

    [junit]                             the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true">The

    [junit]                             value to set the property to. The value will

    [junit]                             be converted to the type of the property.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderSmartPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="attributeValue"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-object">Configures a property of

    [junit]                         the service instance using an object.<attribute

    [junit]                             name="property" required="true">The name of

    [junit]                             a property of the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true"

    [junit]                             translator="object">The value to set the

    [junit]                             property to, in the form of a prefix and a

    [junit]                             locator for that prefix. Prefixes are

    [junit]                             defined by the ObjectProviders configuration

    [junit]                             point. Each prefix provides a different

    [junit]                             interpretation for the locator, such as a

    [junit]                             service id or class name.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-service">Configures a property of

    [junit]                         the service instance to another

    [junit]                             service.<attribute name="property"

    [junit]                             required="true">The name of the property of

    [junit]                             the service instance to configure.</attribute>

    [junit]                         <attribute name="service-id" required="true"

    [junit]                             translator="service">The id of the service.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="service-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-configuration">Configures a

    [junit]                         property of the service instance to the elements

    [junit]                         contributed to an configuration point.<attribute

    [junit]                             name="property" required="true">The name of

    [junit]                             the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="configuration-id"

    [junit]                             required="true"

    [junit]                             translator="configuration">The id of the

    [junit]                             configuration point to access.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="configuration-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-resource">Configures a property

    [junit]                         of the service instance to a resource.<attribute

    [junit]                             name="property" required="true">The name of

    [junit]                             the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="path" required="true"

    [junit]                             translator="resource">The path, relative to

    [junit]                             the module's deployment descriptor, of the resource.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="path" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="event-listener">Registers the new

    [junit]                         services as an event listener for events

    [junit]                         produced by the specified service.<attribute

    [junit]                             name="service-id" required="true"

    [junit]                             translator="service">The service which will

    [junit]                             produce events.</attribute>

    [junit]                         <attribute name="event-set">If given, the name

    [junit]                             of an event set for which the service will

    [junit]                             be registered. If omitted, the service will

    [junit]                             be registered for all events sets for which

    [junit]                             it implements the necessary listener interfaces.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.EventRegistration"/>

    [junit]                             <read-attribute attribute="service-id" property="producer"/>

    [junit]                             <read-attribute attribute="event-set" property="eventSetName"/>

    [junit]                             <invoke-parent depth="6" method="addEventRegistration"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                 </element>

    [junit]             </parameters-schema>

    [junit]             <create-instance

    [junit]                 class="org.apache.hivemind.service.impl.BuilderFactory" model="primitive"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadEventNotifier"

    [junit]             interface="org.apache.hivemind.service.ThreadEventNotifier"

    [junit]             uid="13">Service used by other services to be alerted when a

    [junit]             thread is cleaned up (typically, at the end of a request or

    [junit]                 transaction).<create-instance class="org.apache.hivemind.service.impl.ThreadEventNotifierImpl"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadLocalStorage"

    [junit]             interface="org.apache.hivemind.service.ThreadLocalStorage"

    [junit]             uid="14">Service which manages a thread-local map of data

    [junit]             items. This can be used for temporary storage of information

    [junit]             when local variables can't be used. All stored items are

    [junit]             released when the thread is cleaned up.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.ThreadLocalStorageImpl">

    [junit]                     <set-service property="notifier" service-id="ThreadEventNotifier"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ServiceModels"

    [junit]             uid="15">Defines service models, providing a name and a

    [junit]             class for each.<schema>Describes contributions that define

    [junit]                 new types of service models by providing service model

    [junit]                     factories.<element name="service-model">

    [junit]                     <attribute name="name" required="true">The name of

    [junit]                         the service model, which must be unique.</attribute>

    [junit]                     <attribute name="class" required="false"

    [junit]                         translator="instance">The name of the service

    [junit]                         model factory class to instantiate.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.ServiceModelContribution">

    [junit]                         <map attribute="class" property="factory"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.ServiceModels" uid="16">

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PrimitiveServiceModelFactory" name="primitive"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.SingletonServiceModelFactory" name="singleton"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.ThreadedServiceModelFactory" name="threaded"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PooledServiceModelFactory" name="pooled"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.Translators" uid="17">Used to

    [junit]             define new translators that can be used in contribution

    [junit]             conversion rules. Translators must have unique

    [junit]                 names.<schema>Maps translator names to translator

    [junit]                     classes.<element name="translator">Maps a translator

    [junit]                     name to a translator class.<attribute name="name"

    [junit]                         required="true">A unique name for a translator.</attribute>

    [junit]                     <attribute name="class" required="false"

    [junit]                         translator="class">The class to instantiate,

    [junit]                         which must implement the Translator interface.</attribute>

    [junit]                     <attribute name="service-id" required="false"

    [junit]                         translator="service">A service which implements

    [junit]                         the Translator interface.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.TranslatorContribution">

    [junit]                         <map attribute="class" property="translatorClass"/>

    [junit]                         <map attribute="service-id" property="translator"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.Translators" uid="18">

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.BooleanTranslator" name="boolean"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IntTranslator" name="int"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.EnumerationTranslator" name="enumeration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ConfigurationTranslator" name="configuration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ResourceTranslator" name="resource"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.LongTranslator" name="long"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.DoubleTranslator" name="double"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ServicePointTranslator" name="service-point"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.QualifiedIdTranslator" name="qualified-id"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IdListTranslator" name="id-list"/>

    [junit]             <translator name="object" service-id="ObjectTranslator"/>

    [junit]         </contribution>

    [junit]         <service-point id="hivemind.ShutdownCoordinator"

    [junit]             interface="org.apache.hivemind.ShutdownCoordinator"

    [junit]             uid="19">A source of event notifications for when the

    [junit]             Registry is shutdown.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.ShutdownCoordinatorImpl">

    [junit]                     <log/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.Startup" uid="20">A

    [junit]             configuration to which startup objects may be contributed

    [junit]             (as objects or services). Startup object must implement the

    [junit]             java.lang.Runnable interface. Order of execution is

    [junit]             expliclitly NOT defined.<schema>

    [junit]                 <element name="service">Defines a service that

    [junit]                     implements the Runnable interface.<attribute

    [junit]                         name="service-id" translator="service">The name

    [junit]                         of a service implementing the Runnable interface.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]                 <element name="runnable">Allows an instance of a class

    [junit]                     implementing Runnable to be contributed.<attribute

    [junit]                         name="class" translator="instance">The name of a

    [junit]                         class implementing Runnable.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="class"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.Startup"

    [junit]             interface="java.lang.Runnable" uid="21">A service which is

    [junit]             used to bootstrap HiveMind; it obtains the hivemind.Startup

    [junit]             configuration and runs each Runnable object or service

    [junit]                 within.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.StartupImpl">

    [junit]                     <set-configuration configuration-id="Startup" property="runnables"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.EagerLoad"

    [junit]             uid="22">Configuration to which services may be contributed.

    [junit]             The corresponding services are instantiated eagerly, as the

    [junit]             Registry is started. The order in which services are

    [junit]             instantiated is not specified. <schema>

    [junit]                 <element name="load">Identifies a service that will be

    [junit]                     eagerly loaded.<attribute name="service-id"

    [junit]                         required="true" translator="service-point"/>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.EagerLoad"

    [junit]             interface="java.lang.Runnable" uid="23">Service that

    [junit]             performs eager loading of other services. This service is

    [junit]             contributed into the hivemind.Startup

    [junit]                 configuration.<invoke-factory model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.EagerLoader">

    [junit]                     <set-configuration configuration-id="EagerLoad" property="servicePoints"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <contribution configuration-id="hivemind.Startup" uid="24">

    [junit]             <service service-id="EagerLoad"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.ObjectProviders"

    [junit]             uid="25">Services that can provide objects for the object translator.<schema>

    [junit]                 <element name="provider">

    [junit]                     <attribute name="prefix" required="true">The prefix

    [junit]                         used to identify the provider.</attribute>

    [junit]                     <attribute name="service-id" required="true"

    [junit]                         translator="service">The object providing service.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.service.impl.ObjectProviderContribution">

    [junit]                         <map attribute="service-id" property="provider"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.ObjectTranslator"

    [junit]             interface="org.apache.hivemind.schema.Translator"

    [junit]             uid="26">Translator that works with ObjectProviders to find

    [junit]             or create objects.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct

    [junit]                     class="org.apache.hivemind.service.impl.ObjectTranslator" initialize-method="initializeService">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ObjectProviders" property="contributions"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServiceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="27">ObjectProvider that can locate services. Mapped to

    [junit]             the service: prefix.<create-instance class="org.apache.hivemind.service.impl.ServiceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ConfigurationObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="28">ObjectProvider that can locate configurations.

    [junit]             Mapped to the configuration: prefix.<create-instance class="org.apache.hivemind.service.impl.ConfigurationObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ObjectInstanceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="29">ObjectProvider that will instantiate a new instance

    [junit]             of a provided class. Mapped to the instance:

    [junit]                 prefix.<create-instance class="org.apache.hivemind.service.impl.ObjectInstanceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServicePropertyObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="30">ObjectProvider that will extra a property from a

    [junit]             service.  Mapped to the service-property:

    [junit]                ...>

    [junit]         at hivemind.test.ant.TestConstructRegistry.compare(TestConstructRegistry.java:228)

    [junit]         at hivemind.test.ant.TestConstructRegistry.testUptoDate(TestConstructRegistry.java:183)

    [junit]         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    [junit]         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

    [junit]         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

 

 

    [junit] Testcase: testJars(hivemind.test.ant.TestConstructRegistry):   FAILED

    [junit] expected:<...

    [junit]             version="1.0.0">

    [junit]        

    [junit]   The master module for HiveMind, defining core, universal functionality.

 

    [junit]   <configuration-point

    [junit]             id="hivemind.SymbolSources" uid="2">

    [junit]               Provides a list of sources for values of substitution symbols.

    [junit]                 <schema>

    [junit]                 <element

    [junit]                         name="source">Describes a single source of symbol values.

    [junit]   <attribute

    [junit]                         name="name" required="true">

    [junit]   A unique name used

    [junit]   to identify the source, used when ordering the sources.</attribute>

    [junit]                     <attribute name="class" translator="instance">

    [junit]       Name of a class implementing the SymbolSource interface.</attribute>

    [junit]                     <attribute name="service-id" translator="service">

    [junit]   Service configuration id for a service which implements the SymbolSource

    [junit]   interface.</attribute>

    [junit]                     <attribute name="before">

    [junit]       A list of the names of other sources this source should

    [junit]   precede.</attribute>

    [junit]                     <attribute name="after">

    [junit]       A list of the names of other sources this source should

    [junit]   follow.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.SymbolSourceContribution">

    [junit]                         <map attribute="class" property="source"/>

    [junit]                         <map attribute="service-id" property="source"/>

    [junit]                         <map attribute="before" property="followingNames"/>

    [junit]                         <map attribute="after" property="precedingNames"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.SymbolSources" uid="3">

    [junit]             <source before="hivemind.FactoryDefaults"

    [junit]                 name="hivemind.ApplicationDefaults" service-id="ApplicationDefaultsSymbolSource"/>

    [junit]             <source name="hivemind.FactoryDefaults" service-id="FactoryDefaultsSymbolSource"/>

    [junit]         </contribution>

    [junit]         <schema id="hivemind.Defaults" uid="4">

    [junit]             <element

    [junit]                     name="default">Provides a default symbol value.<attribute

    [junit]                     name="symbol" required="true">The id of the symbol to define a default value for.</attribute>

    [junit]                 <attribute name="value" required="true">The value for the symbol.</attribute>

    [junit]                 <conversion class="org.apache.hivemind.service.impl.FactoryDefault"/>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <configuration-point id="hivemind.FactoryDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="5">Extension point for setting "factory defaults" for symbol values.</configuration-point>

    [junit]         <service-point id="hivemind.FactoryDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]                 uid="6">SymbolSource implementation driven by the FactoryDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="FactoryDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ApplicationDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="7">Extension point for setting application defaults; these defaults will override factory defaults specified in the FactoryDefaults configuration point.</configuration-point>

    [junit]         <service-point id="hivemind.ApplicationDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]                 uid="8">SymbolSource implementation driven by the ApplicationDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ApplicationDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ClassFactory"

    [junit]             interface="org.apache.hivemind.service.ClassFactory"

    [junit]                 uid="9">Wrapper around Javassist used to dynamically create classes such as service interceptors.<create-instance

    [junit]                 class="org.apache.hivemind.service.impl.ClassFactoryImpl" model="primitive"/>

    [junit]         </service-point>

    [junit]         <schema id="hivemind.MethodFilter"

    [junit]                 uid="10">Used primarily as parameters to interceptor factories (such as LoggingInterceptor) to define which methods of service interface are to be included and which excluded.<element

    [junit]                     name="include">Identifies a method, or set of methods, to be included.<attribute

    [junit]                     name="method" required="true">A method pattern used to identify the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="true"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]             <element

    [junit]                     name="exclude">Identifies a method, or set of methods, to be excluded.<attribute

    [junit]                     name="method" required="true">A method pattern used to identify the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="false"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <service-point id="hivemind.LoggingInterceptor"

    [junit]             interface="org.apache.hivemind.ServiceInterceptorFactory"

    [junit]             parameters-schema-id="hivemind.MethodFilter"

    [junit]                 uid="11">An interceptor factory for adding method-level logging to a service. Logging occurs at level DEBUG and uses the service id as the logger. Method entry (with parameters) and method exit (with return value) are logged, as are any exceptions.<invoke-factory

    [junit]                 model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.LoggingInterceptorFactory">

    [junit]                     <set-service property="factory" service-id="ClassFactory"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.BuilderFactory"

    [junit]             interface="org.apache.hivemind.ServiceImplementationFactory" uid="12">Used to construct a service from a class name and optional constructor parameters and properties.<parameters-schema>

    [junit]                 <element

    [junit]                         name="construct">A single construct element identifies the class to instantiate.<attribute

    [junit]                         name="class" required="true">The name of the class to instantiate.</attribute>

    [junit]                     <attribute name="messages-property">The name of a property to assign invoking module's messages to.</attribute>

    [junit]                     <attribute name="log-property">The name of a property to assign the Log instance for the service to. The Log instance is built from the service configuration point id.</attribute>

    [junit]                     <attribute name="service-id-property">The name of a property to assign the configuration point id of the service to.</attribute>

    [junit]                     <attribute name="initialize-method">The name of a public instance method (taking no parameters) to be invoked after the service is constructed.</attribute>

    [junit]                     <attribute name="error-handler-property">The name of a property to assign the module's ErrorHandler to.</attribute>

    [junit]                     <attribute name="class-resolver-property">The name of a property to assign the module's ClassResolver to.</attribute>

    [junit]                     <attribute name="autowire-services" translator="boolean,default=true">If true (the default), the BuilderFactory will attempt to connect unclaimed properties to services.</attribute>

    [junit]                     <rules>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderParameter"/>

    [junit]                         <read-attribute attribute="class" property="className"/>

    [junit]                         <read-attribute attribute="initialize-method" property="initializeMethod"/>

    [junit]                         <read-attribute attribute="autowire-services"

    [junit]                             property="autowireServices" skip-if-null="false"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                         <read-attribute attribute="messages-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="1" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                         <read-attribute attribute="log-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="2" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                         <read-attribute attribute="service-id-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="3" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="error-handler-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="4" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="class-resolver-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="5" method="addProperty"/>

    [junit]                     </rules>

    [junit]                     <element name="string">A string value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="int" name="int">An integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="long" name="long">A long (64-bit) integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                         content-translator="enumeration,java.lang.Boolean,true=TRUE,false=FALSE" name="boolean">A boolean value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="service" name="service">A constructor parameter providing the identified HiveMind service.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="configuration" name="configuration">A constructor parameter providing a HiveMind configuration point (as a List).<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="resource" name="resource">A Resource constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="log">Placeholder for a Log instance for the constructed service as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="error-handler">Placeholder for the module's ErrorHandler instance passed in as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="class-resolver">Placeholder for the module's ClassResolver instance passed in as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="messages">Placeholder for a Messages object (from the invoking module) as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="service-id">Placeholder for the service id (of the constructed service) as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="object" name="object">Placeholder for an object provided by the object translator as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set">Configures a property of the service instance.<attribute

    [junit]                             name="property" required="true">The name of a property of the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true">The value to set the property to. The value will be converted to the type of the property.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderSmartPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="attributeValue"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-object">Configures a property of the service instance using an object.<attribute

    [junit]                             name="property" required="true">The name of a property of the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true" translator="object">The value to set the property to, in the form of a prefix and a locator for that prefix. Prefixes are defined by the ObjectProviders configuration point. Each prefix provides a different interpretation for the locator, such as a service id or class name.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-service">Configures a property of the service instance to another service.<attribute

    [junit]                             name="property" required="true">The name of the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="service-id" required="true" translator="service">The id of the service.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="service-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-configuration">Configures a property of the service instance to the elements contributed to an configuration point.<attribute

    [junit]                             name="property" required="true">The name of the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="configuration-id"

    [junit]                             required="true" translator="configuration">The id of the configuration point to access.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="configuration-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-resource">Configures a property of the service instance to a resource.<attribute

    [junit]                             name="property" required="true">The name of the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="path" required="true" translator="resource">The path, relative to the module's deployment descriptor, of the resource.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="path" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="event-listener">Registers the new services as an event listener for events produced by the specified service.<attribute

    [junit]                             name="service-id" required="true" translator="service">The service which will produce events.</attribute>

    [junit]                         <attribute name="event-set">If given, the name of an event set for which the service will be registered. If omitted, the service will be registered for all events sets for which it implements the necessary listener interfaces.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.EventRegistration"/>

    [junit]                             <read-attribute attribute="service-id" property="producer"/>

    [junit]                             <read-attribute attribute="event-set" property="eventSetName"/>

    [junit]                             <invoke-parent depth="6" method="addEventRegistration"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                 </element>

    [junit]             </parameters-schema>

    [junit]             <create-instance

    [junit]                 class="org.apache.hivemind.service.impl.BuilderFactory" model="primitive"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadEventNotifier"

    [junit]             interface="org.apache.hivemind.service.ThreadEventNotifier"

    [junit]                 uid="13">Service used by other services to be alerted when a thread is cleaned up (typically, at the end of a request or transaction).<create-instance class="org.apache.hivemind.service.impl.ThreadEventNotifierImpl"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadLocalStorage"

    [junit]             interface="org.apache.hivemind.service.ThreadLocalStorage"

    [junit]                 uid="14">Service which manages a thread-local map of data items. This can be used for temporary storage of information when local variables can't be used. All stored items are released when the thread is cleaned up.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.ThreadLocalStorageImpl">

    [junit]                     <set-service property="notifier" service-id="ThreadEventNotifier"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ServiceModels"

    [junit]                     uid="15">Defines service models, providing a name and a class for each.<schema>Describes contributions that define new types of service models by providing service model factories.<element name="service-model">

    [junit]                     <attribute name="name" required="true">The name of the service model, which must be unique.</attribute>

    [junit]                     <attribute name="class" required="false" translator="instance">The name of the service model factory class to instantiate.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.ServiceModelContribution">

    [junit]                         <map attribute="class" property="factory"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.ServiceModels" uid="16">

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PrimitiveServiceModelFactory" name="primitive"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.SingletonServiceModelFactory" name="singleton"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.ThreadedServiceModelFactory" name="threaded"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PooledServiceModelFactory" name="pooled"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.Translators"

    [junit]                     uid="17">Used to define new translators that can be used in contribution conversion rules. Translators must have unique names.<schema>Maps translator names to translator classes.<element

    [junit]                         name="translator">Maps a translator name to a translator class.<attribute

    [junit]                         name="name" required="true">A unique name for a translator.</attribute>

    [junit]                     <attribute name="class" required="false" translator="class">The class to instantiate, which must implement the Translator interface.</attribute>

    [junit]                     <attribute name="service-id" required="false" translator="service">A service which implements the Translator interface.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.TranslatorContribution">

    [junit]                         <map attribute="class" property="translatorClass"/>

    [junit]                         <map attribute="service-id" property="translator"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.Translators" uid="18">

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.BooleanTranslator" name="boolean"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IntTranslator" name="int"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.EnumerationTranslator" name="enumeration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ConfigurationTranslator" name="configuration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ResourceTranslator" name="resource"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.LongTranslator" name="long"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.DoubleTranslator" name="double"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ServicePointTranslator" name="service-point"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.QualifiedIdTranslator" name="qualified-id"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IdListTranslator" name="id-list"/>

    [junit]             <translator name="object" service-id="ObjectTranslator"/>

    [junit]         </contribution>

    [junit]         <service-point id="hivemind.ShutdownCoordinator"

    [junit]             interface="org.apache.hivemind.ShutdownCoordinator"

    [junit]                 uid="19">A source of event notifications for when the Registry is shutdown.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.ShutdownCoordinatorImpl">

    [junit]                     <log/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.Startup" uid="20">A configuration to which startup objects may be contributed (as objects or services). Startup object must implement the java.lang.Runnable interface. Order of execution is expliclitly NOT defined.<schema>

    [junit]                 <element

    [junit]                         name="service">Defines a service that implements the Runnable interface.<attribute

    [junit]                         name="service-id" translator="service">The name of a service implementing the Runnable interface.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]                 <element

    [junit]                         name="runnable">Allows an instance of a class implementing Runnable to be contributed.<attribute

    [junit]                         name="class" translator="instance">The name of a class implementing Runnable.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="class"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.Startup"

    [junit]             interface="java.lang.Runnable"

    [junit]                 uid="21">A service which is used to bootstrap HiveMind; it obtains the hivemind.Startup configuration and runs each Runnable object or service within.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.StartupImpl">

    [junit]                     <set-configuration configuration-id="Startup" property="runnables"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.EagerLoad" uid="22">Configuration to which services may be contributed. The corresponding services are instantiated eagerly, as the Registry is started. The order in which services are instantiated is not specified. <schema>

    [junit]                 <element

    [junit]                         name="load">Identifies a service that will be eagerly loaded.<attribute

    [junit]                         name="service-id" required="true" translator="service-point"/>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.EagerLoad"

    [junit]             interface="java.lang.Runnable"

    [junit]                 uid="23">Service that performs eager loading of other services. This service is contributed into the hivemind.Startup configuration.<invoke-factory

    [junit]                 model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.EagerLoader">

    [junit]                     <set-configuration configuration-id="EagerLoad" property="servicePoints"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <contribution configuration-id="hivemind.Startup" uid="24">

    [junit]             <service service-id="EagerLoad"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.ObjectProviders" uid="25">Services that can provide objects for the object translator.<schema>

    [junit]                 <element name="provider">

    [junit]                     <attribute name="prefix" required="true">The prefix used to identify the provider.</attribute>

    [junit]                     <attribute name="service-id" required="true" translator="service">The object providing service.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.service.impl.ObjectProviderContribution">

    [junit]                         <map attribute="service-id" property="provider"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.ObjectTranslator"

    [junit]             interface="org.apache.hivemind.schema.Translator"

    [junit]                 uid="26">Translator that works with ObjectProviders to find or create objects.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct

    [junit]                     class="org.apache.hivemind.service.impl.ObjectTranslator" initialize-method="initializeService">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ObjectProviders" property="contributions"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServiceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="27">ObjectProvider that can locate services. Mapped to the service: prefix.<create-instance class="org.apache.hivemind.service.impl.ServiceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ConfigurationObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="28">ObjectProvider that can locate configurations. Mapped to the configuration: prefix.<create-instance class="org.apache.hivemind.service.impl.ConfigurationObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ObjectInstanceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="29">ObjectProvider that will instantiate a new instance of a provided class. Mapped to the instance: prefix.<create-instance class="org.apache.hivemind.service.impl.ObjectInstanceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServicePropertyObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="30">ObjectProvider that will extra a property from a service.  Mapped to the service-property:...> but was:<... version="1.0.0">            The master

    [junit]         module for HiveMind, defining core, universal functionality.

    [junit]             <configuration-point id="hivemind.SymbolSources" uid="2">

    [junit]             Provides a list of sources for values of substitution

    [junit]             symbols.                 <schema>

    [junit]                 <element name="source">Describes a single source of

    [junit]                     symbol values.   <attribute name="name"

    [junit]                         required="true">   A unique name used    to

    [junit]                         identify the source, used when ordering the sources.</attribute>

    [junit]                     <attribute name="class" translator="instance">

    [junit]                         Name of a class implementing the SymbolSource interface.</attribute>

    [junit]                     <attribute name="service-id" translator="service">

    [junit]                         Service configuration id for a service which

    [junit]                         implements the SymbolSource    interface.</attribute>

    [junit]                     <attribute name="before">       A list of the names

    [junit]                         of other sources this source should    precede.</attribute>

    [junit]                     <attribute name="after">       A list of the names

    [junit]                         of other sources this source should    follow.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.SymbolSourceContribution">

    [junit]                         <map attribute="class" property="source"/>

    [junit]                         <map attribute="service-id" property="source"/>

    [junit]                         <map attribute="before" property="followingNames"/>

    [junit]                         <map attribute="after" property="precedingNames"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.SymbolSources" uid="3">

    [junit]             <source before="hivemind.FactoryDefaults"

    [junit]                 name="hivemind.ApplicationDefaults" service-id="ApplicationDefaultsSymbolSource"/>

    [junit]             <source name="hivemind.FactoryDefaults" service-id="FactoryDefaultsSymbolSource"/>

    [junit]         </contribution>

    [junit]         <schema id="hivemind.Defaults" uid="4">

    [junit]             <element name="default">Provides a default symbol

    [junit]                     value.<attribute name="symbol" required="true">The

    [junit]                     id of the symbol to define a default value for.</attribute>

    [junit]                 <attribute name="value" required="true">The value for

    [junit]                     the symbol.</attribute>

    [junit]                 <conversion class="org.apache.hivemind.service.impl.FactoryDefault"/>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <configuration-point id="hivemind.FactoryDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="5">Extension point for

    [junit]             setting &quot;factory defaults&quot; for symbol values.</configuration-point>

    [junit]         <service-point id="hivemind.FactoryDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]             uid="6">SymbolSource implementation driven by the

    [junit]             FactoryDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="FactoryDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ApplicationDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="7">Extension point for

    [junit]             setting application defaults; these defaults will override

    [junit]             factory defaults specified in the FactoryDefaults

    [junit]             configuration point.</configuration-point>

    [junit]         <service-point id="hivemind.ApplicationDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]             uid="8">SymbolSource implementation driven by the

    [junit]             ApplicationDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ApplicationDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ClassFactory"

    [junit]             interface="org.apache.hivemind.service.ClassFactory"

    [junit]             uid="9">Wrapper around Javassist used to dynamically create

    [junit]             classes such as service interceptors.<create-instance

    [junit]                 class="org.apache.hivemind.service.impl.ClassFactoryImpl" model="primitive"/>

    [junit]         </service-point>

    [junit]         <schema id="hivemind.MethodFilter" uid="10">Used primarily as

    [junit]             parameters to interceptor factories (such as

    [junit]             LoggingInterceptor) to define which methods of service

    [junit]             interface are to be included and which excluded.<element

    [junit]                 name="include">Identifies a method, or set of methods,

    [junit]                 to be included.<attribute name="method"

    [junit]                     required="true">A method pattern used to identify

    [junit]                     the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="true"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]             <element name="exclude">Identifies a method, or set of

    [junit]                 methods, to be excluded.<attribute name="method"

    [junit]                     required="true">A method pattern used to identify

    [junit]                     the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="false"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <service-point id="hivemind.LoggingInterceptor"

    [junit]             interface="org.apache.hivemind.ServiceInterceptorFactory"

    [junit]             parameters-schema-id="hivemind.MethodFilter" uid="11">An

    [junit]             interceptor factory for adding method-level logging to a

    [junit]             service. Logging occurs at level DEBUG and uses the service

    [junit]             id as the logger. Method entry (with parameters) and method

    [junit]             exit (with return value) are logged, as are any

    [junit]                 exceptions.<invoke-factory model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.LoggingInterceptorFactory">

    [junit]                     <set-service property="factory" service-id="ClassFactory"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.BuilderFactory"

    [junit]             interface="org.apache.hivemind.ServiceImplementationFactory"

    [junit]             uid="12">Used to construct a service from a class name and

    [junit]             optional constructor parameters and properties.<parameters-schema>

    [junit]                 <element name="construct">A single construct element

    [junit]                     identifies the class to instantiate.<attribute

    [junit]                         name="class" required="true">The name of the

    [junit]                         class to instantiate.</attribute>

    [junit]                     <attribute name="messages-property">The name of a

    [junit]                         property to assign invoking module's messages to.</attribute>

    [junit]                     <attribute name="log-property">The name of a

    [junit]                         property to assign the Log instance for the

    [junit]                         service to. The Log instance is built from the

    [junit]                         service configuration point id.</attribute>

    [junit]                     <attribute name="service-id-property">The name of a

    [junit]                         property to assign the configuration point id of

    [junit]                         the service to.</attribute>

    [junit]                     <attribute name="initialize-method">The name of a

    [junit]                         public instance method (taking no parameters) to

    [junit]                         be invoked after the service is constructed.</attribute>

    [junit]                     <attribute name="error-handler-property">The name of

    [junit]                         a property to assign the module's ErrorHandler to.</attribute>

    [junit]                     <attribute name="class-resolver-property">The name

    [junit]                         of a property to assign the module's

    [junit]                         ClassResolver to.</attribute>

    [junit]                     <attribute name="autowire-services"

    [junit]                         translator="boolean,default=true">If true (the

    [junit]                         default), the BuilderFactory will attempt to

    [junit]                         connect unclaimed properties to services.</attribute>

    [junit]                     <rules>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderParameter"/>

    [junit]                         <read-attribute attribute="class" property="className"/>

    [junit]                         <read-attribute attribute="initialize-method" property="initializeMethod"/>

    [junit]                         <read-attribute attribute="autowire-services"

    [junit]                             property="autowireServices" skip-if-null="false"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                         <read-attribute attribute="messages-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="1" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                         <read-attribute attribute="log-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="2" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                         <read-attribute attribute="service-id-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="3" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="error-handler-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="4" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="class-resolver-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="5" method="addProperty"/>

    [junit]                     </rules>

    [junit]                     <element name="string">A string value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="int" name="int">An

    [junit]                         integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="long" name="long">A

    [junit]                         long (64-bit) integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                         content-translator="enumeration,java.lang.Boolean,true=TRUE,false=FALSE"

    [junit]                         name="boolean">A boolean value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="service"

    [junit]                         name="service">A constructor parameter providing

    [junit]                         the identified HiveMind service.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="configuration"

    [junit]                         name="configuration">A constructor parameter

    [junit]                         providing a HiveMind configuration point (as a List).<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="resource"

    [junit]                         name="resource">A Resource constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="log">Placeholder for a Log instance

    [junit]                         for the constructed service as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="error-handler">Placeholder for the

    [junit]                         module's ErrorHandler instance passed in as a

    [junit]                         constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="class-resolver">Placeholder for the

    [junit]                         module's ClassResolver instance passed in as a

    [junit]                         constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="messages">Placeholder for a Messages

    [junit]                         object (from the invoking module) as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="service-id">Placeholder for the

    [junit]                         service id (of the constructed service) as

    [junit]                         constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="object"

    [junit]                         name="object">Placeholder for an object provided

    [junit]                         by the object translator as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set">Configures a property of the

    [junit]                         service instance.<attribute name="property"

    [junit]                             required="true">The name of a property of

    [junit]                             the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true">The

    [junit]                             value to set the property to. The value will

    [junit]                             be converted to the type of the property.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderSmartPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="attributeValue"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-object">Configures a property of

    [junit]                         the service instance using an object.<attribute

    [junit]                             name="property" required="true">The name of

    [junit]                             a property of the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true"

    [junit]                             translator="object">The value to set the

    [junit]                             property to, in the form of a prefix and a

    [junit]                             locator for that prefix. Prefixes are

    [junit]                             defined by the ObjectProviders configuration

    [junit]                             point. Each prefix provides a different

    [junit]                             interpretation for the locator, such as a

    [junit]                             service id or class name.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-service">Configures a property of

    [junit]                         the service instance to another

    [junit]                             service.<attribute name="property"

    [junit]                             required="true">The name of the property of

    [junit]                             the service instance to configure.</attribute>

    [junit]                         <attribute name="service-id" required="true"

    [junit]                             translator="service">The id of the service.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="service-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-configuration">Configures a

    [junit]                         property of the service instance to the elements

    [junit]                         contributed to an configuration point.<attribute

    [junit]                             name="property" required="true">The name of

    [junit]                             the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="configuration-id"

    [junit]                             required="true"

    [junit]                             translator="configuration">The id of the

    [junit]                             configuration point to access.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="configuration-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-resource">Configures a property

    [junit]                         of the service instance to a resource.<attribute

    [junit]                             name="property" required="true">The name of

    [junit]                             the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="path" required="true"

    [junit]                             translator="resource">The path, relative to

    [junit]                             the module's deployment descriptor, of the resource.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="path" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="event-listener">Registers the new

    [junit]                         services as an event listener for events

    [junit]                         produced by the specified service.<attribute

    [junit]                             name="service-id" required="true"

    [junit]                             translator="service">The service which will

    [junit]                             produce events.</attribute>

    [junit]                         <attribute name="event-set">If given, the name

    [junit]                             of an event set for which the service will

    [junit]                             be registered. If omitted, the service will

    [junit]                             be registered for all events sets for which

    [junit]                             it implements the necessary listener interfaces.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.EventRegistration"/>

    [junit]                             <read-attribute attribute="service-id" property="producer"/>

    [junit]                             <read-attribute attribute="event-set" property="eventSetName"/>

    [junit]                             <invoke-parent depth="6" method="addEventRegistration"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                 </element>

    [junit]             </parameters-schema>

    [junit]             <create-instance

    [junit]                 class="org.apache.hivemind.service.impl.BuilderFactory" model="primitive"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadEventNotifier"

    [junit]             interface="org.apache.hivemind.service.ThreadEventNotifier"

    [junit]             uid="13">Service used by other services to be alerted when a

    [junit]             thread is cleaned up (typically, at the end of a request or

    [junit]                 transaction).<create-instance class="org.apache.hivemind.service.impl.ThreadEventNotifierImpl"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadLocalStorage"

    [junit]             interface="org.apache.hivemind.service.ThreadLocalStorage"

    [junit]             uid="14">Service which manages a thread-local map of data

    [junit]             items. This can be used for temporary storage of information

    [junit]             when local variables can't be used. All stored items are

    [junit]             released when the thread is cleaned up.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.ThreadLocalStorageImpl">

    [junit]                     <set-service property="notifier" service-id="ThreadEventNotifier"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ServiceModels"

    [junit]             uid="15">Defines service models, providing a name and a

    [junit]             class for each.<schema>Describes contributions that define

    [junit]                 new types of service models by providing service model

    [junit]                     factories.<element name="service-model">

    [junit]                     <attribute name="name" required="true">The name of

    [junit]                         the service model, which must be unique.</attribute>

    [junit]                     <attribute name="class" required="false"

    [junit]                         translator="instance">The name of the service

    [junit]                         model factory class to instantiate.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.ServiceModelContribution">

    [junit]                         <map attribute="class" property="factory"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.ServiceModels" uid="16">

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PrimitiveServiceModelFactory" name="primitive"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.SingletonServiceModelFactory" name="singleton"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.ThreadedServiceModelFactory" name="threaded"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PooledServiceModelFactory" name="pooled"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.Translators" uid="17">Used to

    [junit]             define new translators that can be used in contribution

    [junit]             conversion rules. Translators must have unique

    [junit]                 names.<schema>Maps translator names to translator

    [junit]                     classes.<element name="translator">Maps a translator

    [junit]                     name to a translator class.<attribute name="name"

    [junit]                         required="true">A unique name for a translator.</attribute>

    [junit]                     <attribute name="class" required="false"

    [junit]                         translator="class">The class to instantiate,

    [junit]                         which must implement the Translator interface.</attribute>

    [junit]                     <attribute name="service-id" required="false"

    [junit]                         translator="service">A service which implements

    [junit]                         the Translator interface.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.TranslatorContribution">

    [junit]                         <map attribute="class" property="translatorClass"/>

    [junit]                         <map attribute="service-id" property="translator"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.Translators" uid="18">

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.BooleanTranslator" name="boolean"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IntTranslator" name="int"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.EnumerationTranslator" name="enumeration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ConfigurationTranslator" name="configuration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ResourceTranslator" name="resource"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.LongTranslator" name="long"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.DoubleTranslator" name="double"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ServicePointTranslator" name="service-point"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.QualifiedIdTranslator" name="qualified-id"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IdListTranslator" name="id-list"/>

    [junit]             <translator name="object" service-id="ObjectTranslator"/>

    [junit]         </contribution>

    [junit]         <service-point id="hivemind.ShutdownCoordinator"

    [junit]             interface="org.apache.hivemind.ShutdownCoordinator"

    [junit]             uid="19">A source of event notifications for when the

    [junit]             Registry is shutdown.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.ShutdownCoordinatorImpl">

    [junit]                     <log/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.Startup" uid="20">A

    [junit]             configuration to which startup objects may be contributed

    [junit]             (as objects or services). Startup object must implement the

    [junit]             java.lang.Runnable interface. Order of execution is

    [junit]             expliclitly NOT defined.<schema>

    [junit]                 <element name="service">Defines a service that

    [junit]                     implements the Runnable interface.<attribute

    [junit]                         name="service-id" translator="service">The name

    [junit]                         of a service implementing the Runnable interface.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]                 <element name="runnable">Allows an instance of a class

    [junit]                     implementing Runnable to be contributed.<attribute

    [junit]                         name="class" translator="instance">The name of a

    [junit]                         class implementing Runnable.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="class"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.Startup"

    [junit]             interface="java.lang.Runnable" uid="21">A service which is

    [junit]             used to bootstrap HiveMind; it obtains the hivemind.Startup

    [junit]             configuration and runs each Runnable object or service

    [junit]                 within.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.StartupImpl">

    [junit]                     <set-configuration configuration-id="Startup" property="runnables"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.EagerLoad"

    [junit]             uid="22">Configuration to which services may be contributed.

    [junit]             The corresponding services are instantiated eagerly, as the

    [junit]             Registry is started. The order in which services are

    [junit]             instantiated is not specified. <schema>

    [junit]                 <element name="load">Identifies a service that will be

    [junit]                     eagerly loaded.<attribute name="service-id"

    [junit]                         required="true" translator="service-point"/>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.EagerLoad"

    [junit]             interface="java.lang.Runnable" uid="23">Service that

    [junit]             performs eager loading of other services. This service is

    [junit]             contributed into the hivemind.Startup

    [junit]                 configuration.<invoke-factory model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.EagerLoader">

    [junit]                     <set-configuration configuration-id="EagerLoad" property="servicePoints"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <contribution configuration-id="hivemind.Startup" uid="24">

    [junit]             <service service-id="EagerLoad"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.ObjectProviders"

    [junit]             uid="25">Services that can provide objects for the object translator.<schema>

    [junit]                 <element name="provider">

    [junit]                     <attribute name="prefix" required="true">The prefix

    [junit]                         used to identify the provider.</attribute>

    [junit]                     <attribute name="service-id" required="true"

    [junit]                         translator="service">The object providing service.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.service.impl.ObjectProviderContribution">

    [junit]                         <map attribute="service-id" property="provider"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.ObjectTranslator"

    [junit]             interface="org.apache.hivemind.schema.Translator"

    [junit]             uid="26">Translator that works with ObjectProviders to find

    [junit]             or create objects.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct

    [junit]                     class="org.apache.hivemind.service.impl.ObjectTranslator" initialize-method="initializeService">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ObjectProviders" property="contributions"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServiceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="27">ObjectProvider that can locate services. Mapped to

    [junit]             the service: prefix.<create-instance class="org.apache.hivemind.service.impl.ServiceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ConfigurationObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="28">ObjectProvider that can locate configurations.

    [junit]             Mapped to the configuration: prefix.<create-instance class="org.apache.hivemind.service.impl.ConfigurationObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ObjectInstanceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="29">ObjectProvider that will instantiate a new instance

    [junit]             of a provided class. Mapped to the instance:

    [junit]                 prefix.<create-instance class="org.apache.hivemind.service.impl.ObjectInstanceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServicePropertyObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="30">ObjectProvider that will extra a property from a

    [junit]             service.  Mapped to the service-property:

    [junit]                ...>

    [junit] junit.framework.ComparisonFailure: expected:<...

    [junit]             version="1.0.0">

    [junit]        

    [junit]   The master module for HiveMind, defining core, universal functionality.

 

    [junit]   <configuration-point

    [junit]             id="hivemind.SymbolSources" uid="2">

    [junit]               Provides a list of sources for values of substitution symbols.

    [junit]                 <schema>

    [junit]                 <element

    [junit]                         name="source">Describes a single source of symbol values.

    [junit]   <attribute

    [junit]                         name="name" required="true">

    [junit]   A unique name used

    [junit]   to identify the source, used when ordering the sources.</attribute>

    [junit]                     <attribute name="class" translator="instance">

    [junit]       Name of a class implementing the SymbolSource interface.</attribute>

    [junit]                     <attribute name="service-id" translator="service">

    [junit]   Service configuration id for a service which implements the SymbolSource

    [junit]   interface.</attribute>

    [junit]                     <attribute name="before">

    [junit]       A list of the names of other sources this source should

    [junit]   precede.</attribute>

    [junit]                     <attribute name="after">

    [junit]       A list of the names of other sources this source should

    [junit]   follow.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.SymbolSourceContribution">

    [junit]                         <map attribute="class" property="source"/>

    [junit]                         <map attribute="service-id" property="source"/>

    [junit]                         <map attribute="before" property="followingNames"/>

    [junit]                         <map attribute="after" property="precedingNames"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.SymbolSources" uid="3">

    [junit]             <source before="hivemind.FactoryDefaults"

    [junit]                 name="hivemind.ApplicationDefaults" service-id="ApplicationDefaultsSymbolSource"/>

    [junit]             <source name="hivemind.FactoryDefaults" service-id="FactoryDefaultsSymbolSource"/>

    [junit]         </contribution>

    [junit]         <schema id="hivemind.Defaults" uid="4">

    [junit]             <element

    [junit]                     name="default">Provides a default symbol value.<attribute

    [junit]                     name="symbol" required="true">The id of the symbol to define a default value for.</attribute>

    [junit]                 <attribute name="value" required="true">The value for the symbol.</attribute>

    [junit]                 <conversion class="org.apache.hivemind.service.impl.FactoryDefault"/>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <configuration-point id="hivemind.FactoryDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="5">Extension point for setting "factory defaults" for symbol values.</configuration-point>

    [junit]         <service-point id="hivemind.FactoryDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]                 uid="6">SymbolSource implementation driven by the FactoryDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="FactoryDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ApplicationDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="7">Extension point for setting application defaults; these defaults will override factory defaults specified in the FactoryDefaults configuration point.</configuration-point>

    [junit]         <service-point id="hivemind.ApplicationDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]                 uid="8">SymbolSource implementation driven by the ApplicationDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ApplicationDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ClassFactory"

    [junit]             interface="org.apache.hivemind.service.ClassFactory"

    [junit]                 uid="9">Wrapper around Javassist used to dynamically create classes such as service interceptors.<create-instance

    [junit]                 class="org.apache.hivemind.service.impl.ClassFactoryImpl" model="primitive"/>

    [junit]         </service-point>

    [junit]         <schema id="hivemind.MethodFilter"

    [junit]                 uid="10">Used primarily as parameters to interceptor factories (such as LoggingInterceptor) to define which methods of service interface are to be included and which excluded.<element

    [junit]                     name="include">Identifies a method, or set of methods, to be included.<attribute

    [junit]                     name="method" required="true">A method pattern used to identify the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="true"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]             <element

    [junit]                     name="exclude">Identifies a method, or set of methods, to be excluded.<attribute

    [junit]                     name="method" required="true">A method pattern used to identify the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="false"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <service-point id="hivemind.LoggingInterceptor"

    [junit]             interface="org.apache.hivemind.ServiceInterceptorFactory"

    [junit]             parameters-schema-id="hivemind.MethodFilter"

    [junit]                 uid="11">An interceptor factory for adding method-level logging to a service. Logging occurs at level DEBUG and uses the service id as the logger. Method entry (with parameters) and method exit (with return value) are logged, as are any exceptions.<invoke-factory

    [junit]                 model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.LoggingInterceptorFactory">

    [junit]                     <set-service property="factory" service-id="ClassFactory"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.BuilderFactory"

    [junit]             interface="org.apache.hivemind.ServiceImplementationFactory" uid="12">Used to construct a service from a class name and optional constructor parameters and properties.<parameters-schema>

    [junit]                 <element

    [junit]                         name="construct">A single construct element identifies the class to instantiate.<attribute

    [junit]                         name="class" required="true">The name of the class to instantiate.</attribute>

    [junit]                     <attribute name="messages-property">The name of a property to assign invoking module's messages to.</attribute>

    [junit]                     <attribute name="log-property">The name of a property to assign the Log instance for the service to. The Log instance is built from the service configuration point id.</attribute>

    [junit]                     <attribute name="service-id-property">The name of a property to assign the configuration point id of the service to.</attribute>

    [junit]                     <attribute name="initialize-method">The name of a public instance method (taking no parameters) to be invoked after the service is constructed.</attribute>

    [junit]                     <attribute name="error-handler-property">The name of a property to assign the module's ErrorHandler to.</attribute>

    [junit]                     <attribute name="class-resolver-property">The name of a property to assign the module's ClassResolver to.</attribute>

    [junit]                     <attribute name="autowire-services" translator="boolean,default=true">If true (the default), the BuilderFactory will attempt to connect unclaimed properties to services.</attribute>

    [junit]                     <rules>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderParameter"/>

    [junit]                         <read-attribute attribute="class" property="className"/>

    [junit]                         <read-attribute attribute="initialize-method" property="initializeMethod"/>

    [junit]                         <read-attribute attribute="autowire-services"

    [junit]                             property="autowireServices" skip-if-null="false"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                         <read-attribute attribute="messages-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="1" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                         <read-attribute attribute="log-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="2" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                         <read-attribute attribute="service-id-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="3" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="error-handler-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="4" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="class-resolver-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="5" method="addProperty"/>

    [junit]                     </rules>

    [junit]                     <element name="string">A string value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="int" name="int">An integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="long" name="long">A long (64-bit) integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                         content-translator="enumeration,java.lang.Boolean,true=TRUE,false=FALSE" name="boolean">A boolean value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="service" name="service">A constructor parameter providing the identified HiveMind service.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="configuration" name="configuration">A constructor parameter providing a HiveMind configuration point (as a List).<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="resource" name="resource">A Resource constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="log">Placeholder for a Log instance for the constructed service as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="error-handler">Placeholder for the module's ErrorHandler instance passed in as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="class-resolver">Placeholder for the module's ClassResolver instance passed in as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="messages">Placeholder for a Messages object (from the invoking module) as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="service-id">Placeholder for the service id (of the constructed service) as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="object" name="object">Placeholder for an object provided by the object translator as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set">Configures a property of the service instance.<attribute

    [junit]                             name="property" required="true">The name of a property of the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true">The value to set the property to. The value will be converted to the type of the property.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderSmartPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="attributeValue"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-object">Configures a property of the service instance using an object.<attribute

    [junit]                             name="property" required="true">The name of a property of the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true" translator="object">The value to set the property to, in the form of a prefix and a locator for that prefix. Prefixes are defined by the ObjectProviders configuration point. Each prefix provides a different interpretation for the locator, such as a service id or class name.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-service">Configures a property of the service instance to another service.<attribute

    [junit]                             name="property" required="true">The name of the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="service-id" required="true" translator="service">The id of the service.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="service-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-configuration">Configures a property of the service instance to the elements contributed to an configuration point.<attribute

    [junit]                             name="property" required="true">The name of the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="configuration-id"

    [junit]                             required="true" translator="configuration">The id of the configuration point to access.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="configuration-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="set-resource">Configures a property of the service instance to a resource.<attribute

    [junit]                             name="property" required="true">The name of the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="path" required="true" translator="resource">The path, relative to the module's deployment descriptor, of the resource.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="path" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                             name="event-listener">Registers the new services as an event listener for events produced by the specified service.<attribute

    [junit]                             name="service-id" required="true" translator="service">The service which will produce events.</attribute>

    [junit]                         <attribute name="event-set">If given, the name of an event set for which the service will be registered. If omitted, the service will be registered for all events sets for which it implements the necessary listener interfaces.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.EventRegistration"/>

    [junit]                             <read-attribute attribute="service-id" property="producer"/>

    [junit]                             <read-attribute attribute="event-set" property="eventSetName"/>

    [junit]                             <invoke-parent depth="6" method="addEventRegistration"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                 </element>

    [junit]             </parameters-schema>

    [junit]             <create-instance

    [junit]                 class="org.apache.hivemind.service.impl.BuilderFactory" model="primitive"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadEventNotifier"

    [junit]             interface="org.apache.hivemind.service.ThreadEventNotifier"

    [junit]                 uid="13">Service used by other services to be alerted when a thread is cleaned up (typically, at the end of a request or transaction).<create-instance class="org.apache.hivemind.service.impl.ThreadEventNotifierImpl"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadLocalStorage"

    [junit]             interface="org.apache.hivemind.service.ThreadLocalStorage"

    [junit]                 uid="14">Service which manages a thread-local map of data items. This can be used for temporary storage of information when local variables can't be used. All stored items are released when the thread is cleaned up.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.ThreadLocalStorageImpl">

    [junit]                     <set-service property="notifier" service-id="ThreadEventNotifier"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ServiceModels"

    [junit]                     uid="15">Defines service models, providing a name and a class for each.<schema>Describes contributions that define new types of service models by providing service model factories.<element name="service-model">

    [junit]                     <attribute name="name" required="true">The name of the service model, which must be unique.</attribute>

    [junit]                     <attribute name="class" required="false" translator="instance">The name of the service model factory class to instantiate.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.ServiceModelContribution">

    [junit]                         <map attribute="class" property="factory"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.ServiceModels" uid="16">

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PrimitiveServiceModelFactory" name="primitive"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.SingletonServiceModelFactory" name="singleton"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.ThreadedServiceModelFactory" name="threaded"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PooledServiceModelFactory" name="pooled"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.Translators"

    [junit]                     uid="17">Used to define new translators that can be used in contribution conversion rules. Translators must have unique names.<schema>Maps translator names to translator classes.<element

    [junit]                         name="translator">Maps a translator name to a translator class.<attribute

    [junit]                         name="name" required="true">A unique name for a translator.</attribute>

    [junit]                     <attribute name="class" required="false" translator="class">The class to instantiate, which must implement the Translator interface.</attribute>

    [junit]                     <attribute name="service-id" required="false" translator="service">A service which implements the Translator interface.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.TranslatorContribution">

    [junit]                         <map attribute="class" property="translatorClass"/>

    [junit]                         <map attribute="service-id" property="translator"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.Translators" uid="18">

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.BooleanTranslator" name="boolean"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IntTranslator" name="int"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.EnumerationTranslator" name="enumeration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ConfigurationTranslator" name="configuration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ResourceTranslator" name="resource"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.LongTranslator" name="long"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.DoubleTranslator" name="double"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ServicePointTranslator" name="service-point"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.QualifiedIdTranslator" name="qualified-id"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IdListTranslator" name="id-list"/>

    [junit]             <translator name="object" service-id="ObjectTranslator"/>

    [junit]         </contribution>

    [junit]         <service-point id="hivemind.ShutdownCoordinator"

    [junit]             interface="org.apache.hivemind.ShutdownCoordinator"

    [junit]                 uid="19">A source of event notifications for when the Registry is shutdown.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.ShutdownCoordinatorImpl">

    [junit]                     <log/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.Startup" uid="20">A configuration to which startup objects may be contributed (as objects or services). Startup object must implement the java.lang.Runnable interface. Order of execution is expliclitly NOT defined.<schema>

    [junit]                 <element

    [junit]                         name="service">Defines a service that implements the Runnable interface.<attribute

    [junit]                         name="service-id" translator="service">The name of a service implementing the Runnable interface.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]                 <element

    [junit]                         name="runnable">Allows an instance of a class implementing Runnable to be contributed.<attribute

    [junit]                         name="class" translator="instance">The name of a class implementing Runnable.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="class"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.Startup"

    [junit]             interface="java.lang.Runnable"

    [junit]                 uid="21">A service which is used to bootstrap HiveMind; it obtains the hivemind.Startup configuration and runs each Runnable object or service within.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.StartupImpl">

    [junit]                     <set-configuration configuration-id="Startup" property="runnables"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.EagerLoad" uid="22">Configuration to which services may be contributed. The corresponding services are instantiated eagerly, as the Registry is started. The order in which services are instantiated is not specified. <schema>

    [junit]                 <element

    [junit]                         name="load">Identifies a service that will be eagerly loaded.<attribute

    [junit]                         name="service-id" required="true" translator="service-point"/>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.EagerLoad"

    [junit]             interface="java.lang.Runnable"

    [junit]                 uid="23">Service that performs eager loading of other services. This service is contributed into the hivemind.Startup configuration.<invoke-factory

    [junit]                 model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.EagerLoader">

    [junit]                     <set-configuration configuration-id="EagerLoad" property="servicePoints"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <contribution configuration-id="hivemind.Startup" uid="24">

    [junit]             <service service-id="EagerLoad"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.ObjectProviders" uid="25">Services that can provide objects for the object translator.<schema>

    [junit]                 <element name="provider">

    [junit]                     <attribute name="prefix" required="true">The prefix used to identify the provider.</attribute>

    [junit]                     <attribute name="service-id" required="true" translator="service">The object providing service.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.service.impl.ObjectProviderContribution">

    [junit]                         <map attribute="service-id" property="provider"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.ObjectTranslator"

    [junit]             interface="org.apache.hivemind.schema.Translator"

    [junit]                 uid="26">Translator that works with ObjectProviders to find or create objects.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct

    [junit]                     class="org.apache.hivemind.service.impl.ObjectTranslator" initialize-method="initializeService">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ObjectProviders" property="contributions"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServiceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="27">ObjectProvider that can locate services. Mapped to the service: prefix.<create-instance class="org.apache.hivemind.service.impl.ServiceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ConfigurationObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="28">ObjectProvider that can locate configurations. Mapped to the configuration: prefix.<create-instance class="org.apache.hivemind.service.impl.ConfigurationObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ObjectInstanceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="29">ObjectProvider that will instantiate a new instance of a provided class. Mapped to the instance: prefix.<create-instance class="org.apache.hivemind.service.impl.ObjectInstanceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServicePropertyObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]                 uid="30">ObjectProvider that will extra a property from a service.  Mapped to the service-property:...> but was:<... version="1.0.0">            The master

    [junit]         module for HiveMind, defining core, universal functionality.

    [junit]             <configuration-point id="hivemind.SymbolSources" uid="2">

    [junit]             Provides a list of sources for values of substitution

    [junit]             symbols.                 <schema>

    [junit]                 <element name="source">Describes a single source of

    [junit]                     symbol values.   <attribute name="name"

    [junit]                         required="true">   A unique name used    to

    [junit]                         identify the source, used when ordering the sources.</attribute>

    [junit]                     <attribute name="class" translator="instance">

    [junit]                         Name of a class implementing the SymbolSource interface.</attribute>

    [junit]                     <attribute name="service-id" translator="service">

    [junit]                         Service configuration id for a service which

    [junit]                         implements the SymbolSource    interface.</attribute>

    [junit]                     <attribute name="before">       A list of the names

    [junit]                         of other sources this source should    precede.</attribute>

    [junit]                     <attribute name="after">       A list of the names

    [junit]                         of other sources this source should    follow.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.SymbolSourceContribution">

    [junit]                         <map attribute="class" property="source"/>

    [junit]                         <map attribute="service-id" property="source"/>

    [junit]                         <map attribute="before" property="followingNames"/>

    [junit]                         <map attribute="after" property="precedingNames"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.SymbolSources" uid="3">

    [junit]             <source before="hivemind.FactoryDefaults"

    [junit]                 name="hivemind.ApplicationDefaults" service-id="ApplicationDefaultsSymbolSource"/>

    [junit]             <source name="hivemind.FactoryDefaults" service-id="FactoryDefaultsSymbolSource"/>

    [junit]         </contribution>

    [junit]         <schema id="hivemind.Defaults" uid="4">

    [junit]             <element name="default">Provides a default symbol

    [junit]                     value.<attribute name="symbol" required="true">The

    [junit]                     id of the symbol to define a default value for.</attribute>

    [junit]                 <attribute name="value" required="true">The value for

    [junit]                     the symbol.</attribute>

    [junit]                 <conversion class="org.apache.hivemind.service.impl.FactoryDefault"/>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <configuration-point id="hivemind.FactoryDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="5">Extension point for

    [junit]             setting &quot;factory defaults&quot; for symbol values.</configuration-point>

    [junit]         <service-point id="hivemind.FactoryDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]             uid="6">SymbolSource implementation driven by the

    [junit]             FactoryDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="FactoryDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ApplicationDefaults"

    [junit]             schema-id="hivemind.Defaults" uid="7">Extension point for

    [junit]             setting application defaults; these defaults will override

    [junit]             factory defaults specified in the FactoryDefaults

    [junit]             configuration point.</configuration-point>

    [junit]         <service-point id="hivemind.ApplicationDefaultsSymbolSource"

    [junit]             interface="org.apache.hivemind.SymbolSource"

    [junit]             uid="8">SymbolSource implementation driven by the

    [junit]             ApplicationDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ApplicationDefaults" property="defaults"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ClassFactory"

    [junit]             interface="org.apache.hivemind.service.ClassFactory"

    [junit]             uid="9">Wrapper around Javassist used to dynamically create

    [junit]             classes such as service interceptors.<create-instance

    [junit]                 class="org.apache.hivemind.service.impl.ClassFactoryImpl" model="primitive"/>

    [junit]         </service-point>

    [junit]         <schema id="hivemind.MethodFilter" uid="10">Used primarily as

    [junit]             parameters to interceptor factories (such as

    [junit]             LoggingInterceptor) to define which methods of service

    [junit]             interface are to be included and which excluded.<element

    [junit]                 name="include">Identifies a method, or set of methods,

    [junit]                 to be included.<attribute name="method"

    [junit]                     required="true">A method pattern used to identify

    [junit]                     the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="true"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]             <element name="exclude">Identifies a method, or set of

    [junit]                 methods, to be excluded.<attribute name="method"

    [junit]                     required="true">A method pattern used to identify

    [junit]                     the affected methods.</attribute>

    [junit]                 <rules>

    [junit]                     <create-object class="org.apache.hivemind.service.MethodContribution"/>

    [junit]                     <set-property property="include" value="false"/>

    [junit]                     <read-attribute attribute="method" property="methodPattern"/>

    [junit]                     <invoke-parent method="addElement"/>

    [junit]                 </rules>

    [junit]             </element>

    [junit]         </schema>

    [junit]         <service-point id="hivemind.LoggingInterceptor"

    [junit]             interface="org.apache.hivemind.ServiceInterceptorFactory"

    [junit]             parameters-schema-id="hivemind.MethodFilter" uid="11">An

    [junit]             interceptor factory for adding method-level logging to a

    [junit]             service. Logging occurs at level DEBUG and uses the service

    [junit]             id as the logger. Method entry (with parameters) and method

    [junit]             exit (with return value) are logged, as are any

    [junit]                 exceptions.<invoke-factory model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.LoggingInterceptorFactory">

    [junit]                     <set-service property="factory" service-id="ClassFactory"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.BuilderFactory"

    [junit]             interface="org.apache.hivemind.ServiceImplementationFactory"

    [junit]             uid="12">Used to construct a service from a class name and

    [junit]             optional constructor parameters and properties.<parameters-schema>

    [junit]                 <element name="construct">A single construct element

    [junit]                     identifies the class to instantiate.<attribute

    [junit]                         name="class" required="true">The name of the

    [junit]                         class to instantiate.</attribute>

    [junit]                     <attribute name="messages-property">The name of a

    [junit]                         property to assign invoking module's messages to.</attribute>

    [junit]                     <attribute name="log-property">The name of a

    [junit]                         property to assign the Log instance for the

    [junit]                         service to. The Log instance is built from the

    [junit]                         service configuration point id.</attribute>

    [junit]                     <attribute name="service-id-property">The name of a

    [junit]                         property to assign the configuration point id of

    [junit]                         the service to.</attribute>

    [junit]                     <attribute name="initialize-method">The name of a

    [junit]                         public instance method (taking no parameters) to

    [junit]                         be invoked after the service is constructed.</attribute>

    [junit]                     <attribute name="error-handler-property">The name of

    [junit]                         a property to assign the module's ErrorHandler to.</attribute>

    [junit]                     <attribute name="class-resolver-property">The name

    [junit]                         of a property to assign the module's

    [junit]                         ClassResolver to.</attribute>

    [junit]                     <attribute name="autowire-services"

    [junit]                         translator="boolean,default=true">If true (the

    [junit]                         default), the BuilderFactory will attempt to

    [junit]                         connect unclaimed properties to services.</attribute>

    [junit]                     <rules>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderParameter"/>

    [junit]                         <read-attribute attribute="class" property="className"/>

    [junit]                         <read-attribute attribute="initialize-method" property="initializeMethod"/>

    [junit]                         <read-attribute attribute="autowire-services"

    [junit]                             property="autowireServices" skip-if-null="false"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                         <read-attribute attribute="messages-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="1" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                         <read-attribute attribute="log-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="2" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                         <read-attribute attribute="service-id-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="3" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="error-handler-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="4" method="addProperty"/>

    [junit]                         <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                         <read-attribute

    [junit]                             attribute="class-resolver-property" property="propertyName"/>

    [junit]                         <invoke-parent depth="5" method="addProperty"/>

    [junit]                     </rules>

    [junit]                     <element name="string">A string value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="int" name="int">An

    [junit]                         integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="long" name="long">A

    [junit]                         long (64-bit) integer value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element

    [junit]                         content-translator="enumeration,java.lang.Boolean,true=TRUE,false=FALSE"

    [junit]                         name="boolean">A boolean value constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="service"

    [junit]                         name="service">A constructor parameter providing

    [junit]                         the identified HiveMind service.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="configuration"

    [junit]                         name="configuration">A constructor parameter

    [junit]                         providing a HiveMind configuration point (as a List).<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="resource"

    [junit]                         name="resource">A Resource constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="log">Placeholder for a Log instance

    [junit]                         for the constructed service as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="error-handler">Placeholder for the

    [junit]                         module's ErrorHandler instance passed in as a

    [junit]                         constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="class-resolver">Placeholder for the

    [junit]                         module's ClassResolver instance passed in as a

    [junit]                         constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="messages">Placeholder for a Messages

    [junit]                         object (from the invoking module) as constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="service-id">Placeholder for the

    [junit]                         service id (of the constructed service) as

    [junit]                         constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element content-translator="object"

    [junit]                         name="object">Placeholder for an object provided

    [junit]                         by the object translator as a constructor parameter.<rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-content property="value"/>

    [junit]                             <invoke-parent depth="6" method="addParameter"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set">Configures a property of the

    [junit]                         service instance.<attribute name="property"

    [junit]                             required="true">The name of a property of

    [junit]                             the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true">The

    [junit]                             value to set the property to. The value will

    [junit]                             be converted to the type of the property.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderSmartPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="attributeValue"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-object">Configures a property of

    [junit]                         the service instance using an object.<attribute

    [junit]                             name="property" required="true">The name of

    [junit]                             a property of the service instance to configure.</attribute>

    [junit]                         <attribute name="value" required="true"

    [junit]                             translator="object">The value to set the

    [junit]                             property to, in the form of a prefix and a

    [junit]                             locator for that prefix. Prefixes are

    [junit]                             defined by the ObjectProviders configuration

    [junit]                             point. Each prefix provides a different

    [junit]                             interpretation for the locator, such as a

    [junit]                             service id or class name.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="value" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-service">Configures a property of

    [junit]                         the service instance to another

    [junit]                             service.<attribute name="property"

    [junit]                             required="true">The name of the property of

    [junit]                             the service instance to configure.</attribute>

    [junit]                         <attribute name="service-id" required="true"

    [junit]                             translator="service">The id of the service.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="service-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-configuration">Configures a

    [junit]                         property of the service instance to the elements

    [junit]                         contributed to an configuration point.<attribute

    [junit]                             name="property" required="true">The name of

    [junit]                             the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="configuration-id"

    [junit]                             required="true"

    [junit]                             translator="configuration">The id of the

    [junit]                             configuration point to access.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="configuration-id" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="set-resource">Configures a property

    [junit]                         of the service instance to a resource.<attribute

    [junit]                             name="property" required="true">The name of

    [junit]                             the property of the service instance to configure.</attribute>

    [junit]                         <attribute name="path" required="true"

    [junit]                             translator="resource">The path, relative to

    [junit]                             the module's deployment descriptor, of the resource.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>

    [junit]                             <read-attribute attribute="property" property="propertyName"/>

    [junit]                             <read-attribute attribute="path" property="value"/>

    [junit]                             <invoke-parent depth="6" method="addProperty"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                     <element name="event-listener">Registers the new

    [junit]                         services as an event listener for events

    [junit]                         produced by the specified service.<attribute

    [junit]                             name="service-id" required="true"

    [junit]                             translator="service">The service which will

    [junit]                             produce events.</attribute>

    [junit]                         <attribute name="event-set">If given, the name

    [junit]                             of an event set for which the service will

    [junit]                             be registered. If omitted, the service will

    [junit]                             be registered for all events sets for which

    [junit]                             it implements the necessary listener interfaces.</attribute>

    [junit]                         <rules>

    [junit]                             <create-object class="org.apache.hivemind.service.impl.EventRegistration"/>

    [junit]                             <read-attribute attribute="service-id" property="producer"/>

    [junit]                             <read-attribute attribute="event-set" property="eventSetName"/>

    [junit]                             <invoke-parent depth="6" method="addEventRegistration"/>

    [junit]                         </rules>

    [junit]                     </element>

    [junit]                 </element>

    [junit]             </parameters-schema>

    [junit]             <create-instance

    [junit]                 class="org.apache.hivemind.service.impl.BuilderFactory" model="primitive"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadEventNotifier"

    [junit]             interface="org.apache.hivemind.service.ThreadEventNotifier"

    [junit]             uid="13">Service used by other services to be alerted when a

    [junit]             thread is cleaned up (typically, at the end of a request or

    [junit]                 transaction).<create-instance class="org.apache.hivemind.service.impl.ThreadEventNotifierImpl"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ThreadLocalStorage"

    [junit]             interface="org.apache.hivemind.service.ThreadLocalStorage"

    [junit]             uid="14">Service which manages a thread-local map of data

    [junit]             items. This can be used for temporary storage of information

    [junit]             when local variables can't be used. All stored items are

    [junit]             released when the thread is cleaned up.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.ThreadLocalStorageImpl">

    [junit]                     <set-service property="notifier" service-id="ThreadEventNotifier"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.ServiceModels"

    [junit]             uid="15">Defines service models, providing a name and a

    [junit]             class for each.<schema>Describes contributions that define

    [junit]                 new types of service models by providing service model

    [junit]                     factories.<element name="service-model">

    [junit]                     <attribute name="name" required="true">The name of

    [junit]                         the service model, which must be unique.</attribute>

    [junit]                     <attribute name="class" required="false"

    [junit]                         translator="instance">The name of the service

    [junit]                         model factory class to instantiate.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.ServiceModelContribution">

    [junit]                         <map attribute="class" property="factory"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.ServiceModels" uid="16">

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PrimitiveServiceModelFactory" name="primitive"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.SingletonServiceModelFactory" name="singleton"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.ThreadedServiceModelFactory" name="threaded"/>

    [junit]             <service-model

    [junit]                 class="org.apache.hivemind.impl.servicemodel.PooledServiceModelFactory" name="pooled"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.Translators" uid="17">Used to

    [junit]             define new translators that can be used in contribution

    [junit]             conversion rules. Translators must have unique

    [junit]                 names.<schema>Maps translator names to translator

    [junit]                     classes.<element name="translator">Maps a translator

    [junit]                     name to a translator class.<attribute name="name"

    [junit]                         required="true">A unique name for a translator.</attribute>

    [junit]                     <attribute name="class" required="false"

    [junit]                         translator="class">The class to instantiate,

    [junit]                         which must implement the Translator interface.</attribute>

    [junit]                     <attribute name="service-id" required="false"

    [junit]                         translator="service">A service which implements

    [junit]                         the Translator interface.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.impl.TranslatorContribution">

    [junit]                         <map attribute="class" property="translatorClass"/>

    [junit]                         <map attribute="service-id" property="translator"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <contribution configuration-id="hivemind.Translators" uid="18">

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.BooleanTranslator" name="boolean"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IntTranslator" name="int"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.EnumerationTranslator" name="enumeration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ConfigurationTranslator" name="configuration"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ResourceTranslator" name="resource"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.LongTranslator" name="long"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.DoubleTranslator" name="double"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.ServicePointTranslator" name="service-point"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.QualifiedIdTranslator" name="qualified-id"/>

    [junit]             <translator

    [junit]                 class="org.apache.hivemind.schema.rules.IdListTranslator" name="id-list"/>

    [junit]             <translator name="object" service-id="ObjectTranslator"/>

    [junit]         </contribution>

    [junit]         <service-point id="hivemind.ShutdownCoordinator"

    [junit]             interface="org.apache.hivemind.ShutdownCoordinator"

    [junit]             uid="19">A source of event notifications for when the

    [junit]             Registry is shutdown.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.ShutdownCoordinatorImpl">

    [junit]                     <log/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.Startup" uid="20">A

    [junit]             configuration to which startup objects may be contributed

    [junit]             (as objects or services). Startup object must implement the

    [junit]             java.lang.Runnable interface. Order of execution is

    [junit]             expliclitly NOT defined.<schema>

    [junit]                 <element name="service">Defines a service that

    [junit]                     implements the Runnable interface.<attribute

    [junit]                         name="service-id" translator="service">The name

    [junit]                         of a service implementing the Runnable interface.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]                 <element name="runnable">Allows an instance of a class

    [junit]                     implementing Runnable to be contributed.<attribute

    [junit]                         name="class" translator="instance">The name of a

    [junit]                         class implementing Runnable.</attribute>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="class"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.Startup"

    [junit]             interface="java.lang.Runnable" uid="21">A service which is

    [junit]             used to bootstrap HiveMind; it obtains the hivemind.Startup

    [junit]             configuration and runs each Runnable object or service

    [junit]                 within.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.impl.StartupImpl">

    [junit]                     <set-configuration configuration-id="Startup" property="runnables"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <configuration-point id="hivemind.EagerLoad"

    [junit]             uid="22">Configuration to which services may be contributed.

    [junit]             The corresponding services are instantiated eagerly, as the

    [junit]             Registry is started. The order in which services are

    [junit]             instantiated is not specified. <schema>

    [junit]                 <element name="load">Identifies a service that will be

    [junit]                     eagerly loaded.<attribute name="service-id"

    [junit]                         required="true" translator="service-point"/>

    [junit]                     <rules>

    [junit]                         <push-attribute attribute="service-id"/>

    [junit]                         <invoke-parent method="addElement"/>

    [junit]                     </rules>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.EagerLoad"

    [junit]             interface="java.lang.Runnable" uid="23">Service that

    [junit]             performs eager loading of other services. This service is

    [junit]             contributed into the hivemind.Startup

    [junit]                 configuration.<invoke-factory model="primitive" service-id="hivemind.BuilderFactory">

    [junit]                 <construct class="org.apache.hivemind.service.impl.EagerLoader">

    [junit]                     <set-configuration configuration-id="EagerLoad" property="servicePoints"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <contribution configuration-id="hivemind.Startup" uid="24">

    [junit]             <service service-id="EagerLoad"/>

    [junit]         </contribution>

    [junit]         <configuration-point id="hivemind.ObjectProviders"

    [junit]             uid="25">Services that can provide objects for the object translator.<schema>

    [junit]                 <element name="provider">

    [junit]                     <attribute name="prefix" required="true">The prefix

    [junit]                         used to identify the provider.</attribute>

    [junit]                     <attribute name="service-id" required="true"

    [junit]                         translator="service">The object providing service.</attribute>

    [junit]                     <conversion class="org.apache.hivemind.service.impl.ObjectProviderContribution">

    [junit]                         <map attribute="service-id" property="provider"/>

    [junit]                     </conversion>

    [junit]                 </element>

    [junit]             </schema>

    [junit]         </configuration-point>

    [junit]         <service-point id="hivemind.ObjectTranslator"

    [junit]             interface="org.apache.hivemind.schema.Translator"

    [junit]             uid="26">Translator that works with ObjectProviders to find

    [junit]             or create objects.<invoke-factory service-id="hivemind.BuilderFactory">

    [junit]                 <construct

    [junit]                     class="org.apache.hivemind.service.impl.ObjectTranslator" initialize-method="initializeService">

    [junit]                     <set-configuration

    [junit]                         configuration-id="ObjectProviders" property="contributions"/>

    [junit]                 </construct>

    [junit]             </invoke-factory>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServiceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="27">ObjectProvider that can locate services. Mapped to

    [junit]             the service: prefix.<create-instance class="org.apache.hivemind.service.impl.ServiceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ConfigurationObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="28">ObjectProvider that can locate configurations.

    [junit]             Mapped to the configuration: prefix.<create-instance class="org.apache.hivemind.service.impl.ConfigurationObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ObjectInstanceObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="29">ObjectProvider that will instantiate a new instance

    [junit]             of a provided class. Mapped to the instance:

    [junit]                 prefix.<create-instance class="org.apache.hivemind.service.impl.ObjectInstanceObjectProvider"/>

    [junit]         </service-point>

    [junit]         <service-point id="hivemind.ServicePropertyObjectProvider"

    [junit]             interface="org.apache.hivemind.service.ObjectProvider"

    [junit]             uid="30">ObjectProvider that will extra a property from a

    [junit]             service.  Mapped to the service-property:

    [junit]                ...>

    [junit]         at hivemind.test.ant.TestConstructRegistry.compare(TestConstructRegistry.java:228)

    [junit]         at hivemind.test.ant.TestConstructRegistry.testJars(TestConstructRegistry.java:218)

    [junit]         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    [junit]         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

    [junit]         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

Reply via email to