You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@hivemind.apache.org by Christopher Cheng <my...@chrishome.com> on 2004/11/14 11:43:32 UTC

Ant build error

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:2
28)

    [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:2
28)

    [junit]         at
hivemind.test.ant.TestConstructRegistry.testUptoDate(TestConstructRegistry.j
ava: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:2
28)

    [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)