|
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 "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
[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 "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
[junit]
FactoryDefaults configuration point.<invoke-factory
service-id="hivemind.BuilderFactory">
[junit]
<construct
class="org.apache.hivemind.service.impl.DefaultsSymbolSource">
[junit]
<set-configuration
[junit]
configuration-id="FactoryDefaults" property="defaults"/> [junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <configuration-point
id="hivemind.ApplicationDefaults"
[junit]
schema-id="hivemind.Defaults" uid="7">Extension point
for
[junit]
setting application defaults; these defaults will override
[junit]
factory defaults specified in the FactoryDefaults
[junit]
configuration point.</configuration-point>
[junit] <service-point
id="hivemind.ApplicationDefaultsSymbolSource"
[junit]
interface="org.apache.hivemind.SymbolSource"
[junit]
uid="8">SymbolSource implementation driven by the
[junit]
ApplicationDefaults configuration point.<invoke-factory
service-id="hivemind.BuilderFactory">
[junit]
<construct
class="org.apache.hivemind.service.impl.DefaultsSymbolSource">
[junit]
<set-configuration
[junit]
configuration-id="ApplicationDefaults"
property="defaults"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <service-point
id="hivemind.ClassFactory" [junit] interface="org.apache.hivemind.service.ClassFactory"
[junit]
uid="9">Wrapper around Javassist used to dynamically create
[junit]
classes such as service interceptors.<create-instance
[junit]
class="org.apache.hivemind.service.impl.ClassFactoryImpl"
model="primitive"/>
[junit] </service-point>
[junit] <schema
id="hivemind.MethodFilter" uid="10">Used primarily as
[junit]
parameters to interceptor factories (such as
[junit]
LoggingInterceptor) to define which methods of service
[junit]
interface are to be included and which excluded.<element
[junit]
name="include">Identifies a method, or set of methods,
[junit]
to be included.<attribute name="method"
[junit]
required="true">A method pattern used to identify
[junit]
the affected methods.</attribute>
[junit]
<rules>
[junit]
<create-object
class="org.apache.hivemind.service.MethodContribution"/>
[junit]
<set-property property="include" value="true"/>
[junit] <read-attribute
attribute="method" property="methodPattern"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="exclude">Identifies a method, or set of
[junit]
methods, to be excluded.<attribute name="method"
[junit]
required="true">A method pattern used to identify
[junit]
the affected methods.</attribute>
[junit]
<rules>
[junit]
<create-object
class="org.apache.hivemind.service.MethodContribution"/>
[junit]
<set-property property="include" value="false"/>
[junit]
<read-attribute attribute="method"
property="methodPattern"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit] </schema>
[junit] <service-point
id="hivemind.LoggingInterceptor"
[junit]
interface="org.apache.hivemind.ServiceInterceptorFactory"
[junit]
parameters-schema-id="hivemind.MethodFilter" uid="11">An
[junit]
interceptor factory for adding method-level logging to a
[junit]
service. Logging occurs at level DEBUG and uses the service
[junit]
id as the logger. Method entry (with parameters) and method [junit]
exit (with return value) are logged, as are any
[junit]
exceptions.<invoke-factory model="primitive"
service-id="hivemind.BuilderFactory">
[junit]
<construct class="org.apache.hivemind.service.impl.LoggingInterceptorFactory">
[junit]
<set-service property="factory"
service-id="ClassFactory"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <service-point
id="hivemind.BuilderFactory"
[junit]
interface="org.apache.hivemind.ServiceImplementationFactory"
[junit]
uid="12">Used to construct a service from a class name and
[junit]
optional constructor parameters and properties.<parameters-schema>
[junit]
<element name="construct">A single construct element
[junit]
identifies the class to instantiate.<attribute
[junit]
name="class" required="true">The name of the
[junit]
class to instantiate.</attribute>
[junit]
<attribute name="messages-property">The name of a
[junit]
property to assign invoking module's messages to.</attribute>
[junit]
<attribute name="log-property">The name of a
[junit]
property to assign the Log instance for the
[junit]
service to. The Log instance is built from the
[junit]
service configuration point id.</attribute>
[junit]
<attribute name="service-id-property">The name of a
[junit]
property to assign the configuration point id of
[junit]
the service to.</attribute>
[junit]
<attribute name="initialize-method">The name of a
[junit]
public instance method (taking no parameters) to
[junit]
be invoked after the service is constructed.</attribute>
[junit]
<attribute name="error-handler-property">The name of
[junit]
a property to assign the module's ErrorHandler to.</attribute>
[junit]
<attribute name="class-resolver-property">The name
[junit]
of a property to assign the module's
[junit]
ClassResolver to.</attribute> [junit] <attribute
name="autowire-services"
[junit]
translator="boolean,default=true">If true (the
[junit]
default), the BuilderFactory will attempt to
[junit]
connect unclaimed properties to services.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderParameter"/>
[junit]
<read-attribute attribute="class"
property="className"/>
[junit]
<read-attribute attribute="initialize-method"
property="initializeMethod"/>
[junit]
<read-attribute attribute="autowire-services"
[junit] property="autowireServices"
skip-if-null="false"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>
[junit]
<read-attribute attribute="messages-property"
property="propertyName"/>
[junit]
<invoke-parent depth="1" method="addProperty"/>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>
[junit]
<read-attribute attribute="log-property"
property="propertyName"/>
[junit]
<invoke-parent depth="2" method="addProperty"/>
[junit] <create-object
class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>
[junit]
<read-attribute attribute="service-id-property"
property="propertyName"/>
[junit]
<invoke-parent depth="3" method="addProperty"/>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>
[junit]
<read-attribute
[junit]
attribute="error-handler-property" property="propertyName"/>
[junit]
<invoke-parent depth="4" method="addProperty"/>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>
[junit]
<read-attribute
[junit]
attribute="class-resolver-property" property="propertyName"/>
[junit]
<invoke-parent depth="5" method="addProperty"/>
[junit]
</rules>
[junit]
<element name="string">A string value constructor
parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules> [junit] </element>
[junit]
<element content-translator="int" name="int">An
[junit]
integer value constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="long" name="long">A
[junit]
long (64-bit) integer value constructor parameter.<rules>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/> [junit]
</rules>
[junit]
</element>
[junit]
<element
[junit]
content-translator="enumeration,java.lang.Boolean,true=TRUE,false=FALSE"
[junit]
name="boolean">A boolean value constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="service"
[junit]
name="service">A constructor parameter providing
[junit]
the identified HiveMind service.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="configuration"
[junit]
name="configuration">A constructor parameter
[junit]
providing a HiveMind configuration point (as a List).<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent
depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="resource"
[junit]
name="resource">A Resource constructor
parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/> [junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="log">Placeholder for a Log instance
[junit]
for the constructed service as constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="error-handler">Placeholder for the
[junit]
module's ErrorHandler instance passed in as a
[junit]
constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit] <element
name="class-resolver">Placeholder for the
[junit]
module's ClassResolver instance passed in as a
[junit]
constructor parameter.<rules>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element> [junit]
<element name="messages">Placeholder for a Messages
[junit]
object (from the invoking module) as constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="service-id">Placeholder for the
[junit]
service id (of the constructed service) as
[junit]
constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules> [junit]
</element>
[junit]
<element content-translator="object"
[junit]
name="object">Placeholder for an object provided
[junit]
by the object translator as a constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent
depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="set">Configures a property of the
[junit]
service
instance.<attribute name="property"
[junit]
required="true">The name of a property of
[junit]
the service instance to configure.</attribute>
[junit]
<attribute name="value"
required="true">The
[junit]
value to set the property to. The value will
[junit]
be converted to the type of the property.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderSmartPropertyFacet"/>
[junit]
<read-attribute attribute="property" property="propertyName"/> [junit] <read-attribute
attribute="value" property="attributeValue"/>
[junit]
<invoke-parent depth="6" method="addProperty"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="set-object">Configures a property of
[junit]
the service instance using an object.<attribute
[junit]
name="property" required="true">The name of
[junit]
a property of the service instance to configure.</attribute>
[junit]
<attribute name="value" required="true"
[junit]
translator="object">The value to set the
[junit]
property to, in the form of a prefix and a
[junit]
locator for that prefix. Prefixes are [junit]
defined by the ObjectProviders configuration
[junit]
point. Each prefix provides a different
[junit]
interpretation for the locator, such as a
[junit] service
id or class name.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-attribute
attribute="property" property="propertyName"/>
[junit]
<read-attribute attribute="value" property="value"/>
[junit]
<invoke-parent depth="6" method="addProperty"/> [junit]
</rules>
[junit]
</element>
[junit]
<element name="set-service">Configures a property of
[junit]
the service instance to another
[junit] service.<attribute
name="property"
[junit]
required="true">The name of the property of
[junit]
the service instance to configure.</attribute>
[junit]
<attribute name="service-id"
required="true"
[junit]
translator="service">The id of the service.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-attribute attribute="property" property="propertyName"/>
[junit]
<read-attribute attribute="service-id" property="value"/>
[junit]
<invoke-parent depth="6" method="addProperty"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="set-configuration">Configures a
[junit]
property of the service instance to the elements
[junit]
contributed to an configuration point.<attribute
[junit]
name="property" required="true">The name of [junit]
the property of the service instance to configure.</attribute>
[junit]
<attribute name="configuration-id"
[junit]
required="true"
[junit]
translator="configuration">The
id of the
[junit]
configuration point to access.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-attribute attribute="property" property="propertyName"/>
[junit]
<read-attribute attribute="configuration-id" property="value"/> [junit]
<invoke-parent depth="6" method="addProperty"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="set-resource">Configures a property [junit]
of the service instance to a resource.<attribute
[junit]
name="property" required="true">The name of
[junit]
the property of the service instance to configure.</attribute>
[junit]
<attribute name="path" required="true"
[junit]
translator="resource">The path, relative to
[junit]
the module's deployment descriptor, of the resource.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-attribute attribute="property"
property="propertyName"/>
[junit]
<read-attribute attribute="path" property="value"/>
[junit]
<invoke-parent depth="6" method="addProperty"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="event-listener">Registers the new
[junit]
services as an event listener for events
[junit]
produced by the specified service.<attribute
[junit]
name="service-id" required="true"
[junit]
translator="service">The service which will
[junit]
produce events.</attribute> [junit]
<attribute name="event-set">If given, the name
[junit]
of an event set for which the service will
[junit]
be registered. If omitted, the service will [junit]
be registered for all events sets for which
[junit]
it implements the necessary listener interfaces.</attribute>
[junit]
<rules>
[junit]
<create-object
class="org.apache.hivemind.service.impl.EventRegistration"/>
[junit]
<read-attribute attribute="service-id" property="producer"/>
[junit]
<read-attribute attribute="event-set"
property="eventSetName"/>
[junit]
<invoke-parent depth="6" method="addEventRegistration"/>
[junit]
</rules>
[junit]
</element>
[junit]
</element> [junit]
</parameters-schema>
[junit]
<create-instance
[junit]
class="org.apache.hivemind.service.impl.BuilderFactory"
model="primitive"/>
[junit] </service-point>
[junit] <service-point
id="hivemind.ThreadEventNotifier"
[junit]
interface="org.apache.hivemind.service.ThreadEventNotifier"
[junit]
uid="13">Service used by other services to be alerted when a
[junit]
thread is cleaned up (typically, at the end of a request or
[junit]
transaction).<create-instance
class="org.apache.hivemind.service.impl.ThreadEventNotifierImpl"/>
[junit] </service-point> [junit]
<service-point id="hivemind.ThreadLocalStorage"
[junit]
interface="org.apache.hivemind.service.ThreadLocalStorage"
[junit]
uid="14">Service which manages a thread-local map of data
[junit]
items. This can be used for temporary storage of information
[junit]
when local variables can't be used. All stored items are
[junit]
released when the thread is cleaned up.<invoke-factory
service-id="hivemind.BuilderFactory"> [junit]
<construct
class="org.apache.hivemind.service.impl.ThreadLocalStorageImpl">
[junit]
<set-service property="notifier"
service-id="ThreadEventNotifier"/>
[junit]
</construct>
[junit] </invoke-factory>
[junit] </service-point>
[junit] <configuration-point
id="hivemind.ServiceModels"
[junit]
uid="15">Defines service models, providing a name and a
[junit]
class for each.<schema>Describes contributions that define
[junit]
new types of service models by providing service model
[junit]
factories.<element name="service-model">
[junit]
<attribute name="name" required="true">The name of
[junit]
the service model, which must be unique.</attribute>
[junit]
<attribute name="class" required="false"
[junit]
translator="instance">The name of the service
[junit]
model factory class to instantiate.</attribute>
[junit]
<conversion
class="org.apache.hivemind.impl.ServiceModelContribution">
[junit]
<map attribute="class" property="factory"/>
[junit]
</conversion>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point>
[junit] <contribution
configuration-id="hivemind.ServiceModels" uid="16">
[junit]
<service-model
[junit]
class="org.apache.hivemind.impl.servicemodel.PrimitiveServiceModelFactory"
name="primitive"/> [junit]
<service-model
[junit]
class="org.apache.hivemind.impl.servicemodel.SingletonServiceModelFactory"
name="singleton"/>
[junit]
<service-model
[junit]
class="org.apache.hivemind.impl.servicemodel.ThreadedServiceModelFactory"
name="threaded"/>
[junit]
<service-model
[junit]
class="org.apache.hivemind.impl.servicemodel.PooledServiceModelFactory"
name="pooled"/>
[junit] </contribution> [junit]
<configuration-point id="hivemind.Translators"
uid="17">Used to
[junit]
define new translators that can be used in contribution
[junit]
conversion rules. Translators must have unique
[junit]
names.<schema>Maps translator names to translator
[junit]
classes.<element name="translator">Maps a translator
[junit]
name to a translator class.<attribute name="name"
[junit]
required="true">A unique name for a translator.</attribute>
[junit]
<attribute name="class" required="false"
[junit]
translator="class">The class to instantiate,
[junit]
which must implement the Translator interface.</attribute>
[junit]
<attribute name="service-id" required="false"
[junit]
translator="service">A service which implements
[junit]
the Translator interface.</attribute>
[junit]
<conversion
class="org.apache.hivemind.impl.TranslatorContribution">
[junit]
<map attribute="class" property="translatorClass"/>
[junit]
<map attribute="service-id" property="translator"/>
[junit]
</conversion>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point>
[junit] <contribution
configuration-id="hivemind.Translators" uid="18">
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.BooleanTranslator"
name="boolean"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.IntTranslator"
name="int"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.EnumerationTranslator"
name="enumeration"/> [junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.ConfigurationTranslator"
name="configuration"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.ResourceTranslator"
name="resource"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.LongTranslator"
name="long"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.DoubleTranslator"
name="double"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.ServicePointTranslator"
name="service-point"/>
[junit]
<translator
[junit] class="org.apache.hivemind.schema.rules.QualifiedIdTranslator"
name="qualified-id"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.IdListTranslator"
name="id-list"/>
[junit]
<translator name="object"
service-id="ObjectTranslator"/>
[junit] </contribution>
[junit] <service-point
id="hivemind.ShutdownCoordinator"
[junit]
interface="org.apache.hivemind.ShutdownCoordinator"
[junit] uid="19">A
source of event notifications for when the
[junit]
Registry is shutdown.<invoke-factory
service-id="hivemind.BuilderFactory">
[junit]
<construct
class="org.apache.hivemind.impl.ShutdownCoordinatorImpl">
[junit]
<log/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <configuration-point
id="hivemind.Startup" uid="20">A
[junit] configuration
to which startup objects may be contributed
[junit]
(as objects or services). Startup object must implement the
[junit]
java.lang.Runnable interface. Order of execution is
[junit]
expliclitly NOT defined.<schema>
[junit]
<element name="service">Defines a service that
[junit]
implements the Runnable interface.<attribute
[junit]
name="service-id" translator="service">The name
[junit]
of a service implementing the Runnable interface.</attribute>
[junit]
<rules>
[junit]
<push-attribute attribute="service-id"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="runnable">Allows an instance of a class
[junit]
implementing Runnable to be contributed.<attribute
[junit]
name="class" translator="instance">The name of a
[junit]
class implementing Runnable.</attribute>
[junit]
<rules>
[junit]
<push-attribute attribute="class"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point>
[junit] <service-point
id="hivemind.Startup"
[junit]
interface="java.lang.Runnable" uid="21">A service which
is
[junit]
used to bootstrap HiveMind; it obtains the hivemind.Startup
[junit]
configuration and runs each Runnable object or service
[junit]
within.<invoke-factory service-id="hivemind.BuilderFactory">
[junit]
<construct class="org.apache.hivemind.impl.StartupImpl">
[junit]
<set-configuration configuration-id="Startup"
property="runnables"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <configuration-point
id="hivemind.EagerLoad"
[junit]
uid="22">Configuration to which services may be contributed.
[junit]
The corresponding services are instantiated eagerly, as the
[junit]
Registry is started. The order in which services are
[junit]
instantiated is not specified. <schema>
[junit]
<element name="load">Identifies a service that will be
[junit]
eagerly loaded.<attribute name="service-id" [junit]
required="true" translator="service-point"/>
[junit]
<rules>
[junit]
<push-attribute attribute="service-id"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point>
[junit] <service-point
id="hivemind.EagerLoad"
[junit]
interface="java.lang.Runnable" uid="23">Service that
[junit]
performs eager loading of other services. This service is
[junit]
contributed into the hivemind.Startup
[junit]
configuration.<invoke-factory model="primitive"
service-id="hivemind.BuilderFactory">
[junit]
<construct
class="org.apache.hivemind.service.impl.EagerLoader">
[junit]
<set-configuration configuration-id="EagerLoad"
property="servicePoints"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <contribution
configuration-id="hivemind.Startup" uid="24">
[junit]
<service service-id="EagerLoad"/>
[junit] </contribution>
[junit] <configuration-point
id="hivemind.ObjectProviders"
[junit]
uid="25">Services that can provide objects for the object translator.<schema>
[junit]
<element name="provider">
[junit]
<attribute name="prefix" required="true">The prefix
[junit]
used to identify the provider.</attribute>
[junit]
<attribute name="service-id"
required="true"
[junit]
translator="service">The object providing
service.</attribute>
[junit]
<conversion
class="org.apache.hivemind.service.impl.ObjectProviderContribution">
[junit]
<map attribute="service-id" property="provider"/>
[junit]
</conversion>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point>
[junit] <service-point
id="hivemind.ObjectTranslator"
[junit]
interface="org.apache.hivemind.schema.Translator"
[junit]
uid="26">Translator that works with ObjectProviders to find
[junit]
or create objects.<invoke-factory
service-id="hivemind.BuilderFactory">
[junit]
<construct
[junit]
class="org.apache.hivemind.service.impl.ObjectTranslator"
initialize-method="initializeService">
[junit]
<set-configuration
[junit]
configuration-id="ObjectProviders"
property="contributions"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <service-point
id="hivemind.ServiceObjectProvider"
[junit]
interface="org.apache.hivemind.service.ObjectProvider"
[junit]
uid="27">ObjectProvider that can locate services. Mapped to [junit]
the service: prefix.<create-instance
class="org.apache.hivemind.service.impl.ServiceObjectProvider"/>
[junit] </service-point>
[junit] <service-point
id="hivemind.ConfigurationObjectProvider"
[junit]
interface="org.apache.hivemind.service.ObjectProvider"
[junit]
uid="28">ObjectProvider that can locate configurations.
[junit]
Mapped to the configuration: prefix.<create-instance
class="org.apache.hivemind.service.impl.ConfigurationObjectProvider"/>
[junit] </service-point>
[junit] <service-point
id="hivemind.ObjectInstanceObjectProvider"
[junit]
interface="org.apache.hivemind.service.ObjectProvider"
[junit]
uid="29">ObjectProvider that will instantiate a new instance
[junit]
of a provided class. Mapped to the instance:
[junit]
prefix.<create-instance
class="org.apache.hivemind.service.impl.ObjectInstanceObjectProvider"/> [junit] </service-point>
[junit] <service-point
id="hivemind.ServicePropertyObjectProvider"
[junit]
interface="org.apache.hivemind.service.ObjectProvider"
[junit]
uid="30">ObjectProvider that will extra a property from a
[junit]
service. Mapped to the service-property:
[junit]
...> [junit] at
hivemind.test.ant.TestConstructRegistry.compare(TestConstructRegistry.java:228) [junit] at
hivemind.test.ant.TestConstructRegistry.testBasic(TestConstructRegistry.java:127) [junit] at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [junit] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [junit] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [junit] Testcase:
testUptoDate(hivemind.test.ant.TestConstructRegistry): FAILED [junit] expected:<...
[junit]
version="1.0.0">
[junit] [junit] The master
module for HiveMind, defining core, universal functionality. [junit]
<configuration-point
[junit]
id="hivemind.SymbolSources" uid="2">
[junit]
Provides a list of sources for values of substitution symbols.
[junit]
<schema>
[junit]
<element
[junit]
name="source">Describes a single source of symbol values. [junit] <attribute
[junit]
name="name"
required="true"> [junit] A unique name
used [junit] to identify the
source, used when ordering the sources.</attribute>
[junit]
<attribute name="class" translator="instance">
[junit] Name of a class implementing the
SymbolSource interface.</attribute>
[junit]
<attribute name="service-id" translator="service"> [junit] Service
configuration id for a service which implements the SymbolSource [junit] interface.</attribute>
[junit]
<attribute name="before">
[junit] A list of the names of other
sources this source should [junit]
precede.</attribute>
[junit]
<attribute name="after">
[junit] A list of the names of other
sources this source should [junit]
follow.</attribute>
[junit]
<conversion
class="org.apache.hivemind.SymbolSourceContribution">
[junit]
<map attribute="class" property="source"/>
[junit]
<map attribute="service-id" property="source"/>
[junit]
<map attribute="before" property="followingNames"/>
[junit]
<map attribute="after" property="precedingNames"/>
[junit]
</conversion>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point>
[junit] <contribution
configuration-id="hivemind.SymbolSources" uid="3">
[junit]
<source before="hivemind.FactoryDefaults"
[junit]
name="hivemind.ApplicationDefaults"
service-id="ApplicationDefaultsSymbolSource"/>
[junit]
<source name="hivemind.FactoryDefaults"
service-id="FactoryDefaultsSymbolSource"/>
[junit] </contribution>
[junit] <schema
id="hivemind.Defaults" uid="4">
[junit]
<element
[junit]
name="default">Provides a default symbol value.<attribute
[junit]
name="symbol" required="true">The id of the symbol to
define a default value for.</attribute>
[junit]
<attribute name="value" required="true">The value for
the symbol.</attribute> [junit]
<conversion
class="org.apache.hivemind.service.impl.FactoryDefault"/>
[junit]
</element>
[junit] </schema>
[junit] <configuration-point
id="hivemind.FactoryDefaults"
[junit]
schema-id="hivemind.Defaults" uid="5">Extension point
for setting "factory defaults" for symbol
values.</configuration-point>
[junit] <service-point
id="hivemind.FactoryDefaultsSymbolSource"
[junit]
interface="org.apache.hivemind.SymbolSource"
[junit]
uid="6">SymbolSource implementation driven by the FactoryDefaults
configuration point.<invoke-factory service-id="hivemind.BuilderFactory">
[junit]
<construct
class="org.apache.hivemind.service.impl.DefaultsSymbolSource">
[junit]
<set-configuration
[junit]
configuration-id="FactoryDefaults" property="defaults"/> [junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <configuration-point
id="hivemind.ApplicationDefaults"
[junit]
schema-id="hivemind.Defaults" uid="7">Extension point
for setting application defaults; these defaults will override factory defaults
specified in the FactoryDefaults configuration
point.</configuration-point>
[junit] <service-point
id="hivemind.ApplicationDefaultsSymbolSource" [junit] interface="org.apache.hivemind.SymbolSource"
[junit]
uid="8">SymbolSource implementation driven by the
ApplicationDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory">
[junit]
<construct
class="org.apache.hivemind.service.impl.DefaultsSymbolSource">
[junit]
<set-configuration
[junit]
configuration-id="ApplicationDefaults"
property="defaults"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <service-point
id="hivemind.ClassFactory"
[junit]
interface="org.apache.hivemind.service.ClassFactory"
[junit]
uid="9">Wrapper around Javassist used to dynamically create
classes such as service interceptors.<create-instance
[junit]
class="org.apache.hivemind.service.impl.ClassFactoryImpl"
model="primitive"/>
[junit] </service-point>
[junit] <schema
id="hivemind.MethodFilter"
[junit]
uid="10">Used primarily as parameters to interceptor factories
(such as LoggingInterceptor) to define which methods of service interface are
to be included and which excluded.<element
[junit]
name="include">Identifies a method, or set of methods, to be
included.<attribute
[junit]
name="method" required="true">A method pattern used to
identify the affected methods.</attribute> [junit]
<rules>
[junit]
<create-object
class="org.apache.hivemind.service.MethodContribution"/>
[junit]
<set-property property="include" value="true"/>
[junit]
<read-attribute attribute="method"
property="methodPattern"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit] <element
[junit]
name="exclude">Identifies a method, or set of methods, to be
excluded.<attribute
[junit]
name="method" required="true">A method pattern used to
identify the affected methods.</attribute>
[junit]
<rules>
[junit]
<create-object
class="org.apache.hivemind.service.MethodContribution"/>
[junit]
<set-property property="include" value="false"/>
[junit]
<read-attribute attribute="method"
property="methodPattern"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit] </schema>
[junit] <service-point
id="hivemind.LoggingInterceptor"
[junit]
interface="org.apache.hivemind.ServiceInterceptorFactory"
[junit]
parameters-schema-id="hivemind.MethodFilter"
[junit]
uid="11">An interceptor factory for adding method-level logging to
a service. Logging occurs at level DEBUG and uses the service id as the logger.
Method entry (with parameters) and method exit (with return value) are logged,
as are any exceptions.<invoke-factory
[junit]
model="primitive" service-id="hivemind.BuilderFactory">
[junit]
<construct
class="org.apache.hivemind.service.impl.LoggingInterceptorFactory">
[junit]
<set-service property="factory"
service-id="ClassFactory"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <service-point
id="hivemind.BuilderFactory"
[junit]
interface="org.apache.hivemind.ServiceImplementationFactory"
uid="12">Used to construct a service from a class name and
optional constructor parameters and properties.<parameters-schema>
[junit]
<element
[junit]
name="construct">A single construct element identifies the class
to instantiate.<attribute
[junit]
name="class" required="true">The name of the class to
instantiate.</attribute>
[junit]
<attribute name="messages-property">The name of a property to
assign invoking module's messages to.</attribute>
[junit]
<attribute name="log-property">The name of a property to assign
the Log instance for the service to. The Log instance is built from the service
configuration point id.</attribute>
[junit]
<attribute name="service-id-property">The name of a property to
assign the configuration point id of the service to.</attribute>
[junit]
<attribute name="initialize-method">The name of a public
instance method (taking no parameters) to be invoked after the service is
constructed.</attribute>
[junit]
<attribute name="error-handler-property">The name of a property
to assign the module's ErrorHandler to.</attribute>
[junit]
<attribute name="class-resolver-property">The name of a
property to assign the module's ClassResolver to.</attribute>
[junit] <attribute
name="autowire-services"
translator="boolean,default=true">If true (the default), the
BuilderFactory will attempt to connect unclaimed properties to services.</attribute>
[junit]
<rules>
[junit] <create-object
class="org.apache.hivemind.service.impl.BuilderParameter"/>
[junit]
<read-attribute attribute="class"
property="className"/>
[junit]
<read-attribute attribute="initialize-method"
property="initializeMethod"/>
[junit]
<read-attribute attribute="autowire-services"
[junit]
property="autowireServices" skip-if-null="false"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>
[junit]
<read-attribute attribute="messages-property"
property="propertyName"/> [junit]
<invoke-parent depth="1" method="addProperty"/>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>
[junit]
<read-attribute attribute="log-property"
property="propertyName"/>
[junit]
<invoke-parent depth="2" method="addProperty"/>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>
[junit] <read-attribute
attribute="service-id-property"
property="propertyName"/>
[junit]
<invoke-parent depth="3" method="addProperty"/>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>
[junit]
<read-attribute
[junit]
attribute="error-handler-property" property="propertyName"/>
[junit]
<invoke-parent depth="4" method="addProperty"/>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>
[junit]
<read-attribute
[junit]
attribute="class-resolver-property" property="propertyName"/>
[junit]
<invoke-parent depth="5" method="addProperty"/>
[junit]
</rules>
[junit]
<element name="string">A string value
constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="int" name="int">An
integer value constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/> [junit] <invoke-parent
depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="long" name="long">A long
(64-bit) integer value constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/> [junit] <invoke-parent
depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element
[junit]
content-translator="enumeration,java.lang.Boolean,true=TRUE,false=FALSE"
name="boolean">A boolean value constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit] <read-content
property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="service"
name="service">A constructor parameter providing the identified
HiveMind service.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="configuration"
name="configuration">A constructor parameter providing a HiveMind
configuration point (as a List).<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="resource"
name="resource">A Resource constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules> [junit]
</element>
[junit]
<element name="log">Placeholder for a Log instance for the
constructed service as constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="error-handler">Placeholder for the module's
ErrorHandler instance passed in as a constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/> [junit] <invoke-parent
depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="class-resolver">Placeholder for the module's
ClassResolver instance passed in as a constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="messages">Placeholder for a Messages object
(from the invoking module) as constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="service-id">Placeholder for the service id (of
the constructed service) as constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="object"
name="object">Placeholder for an object provided by the object
translator as a constructor parameter.<rules>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/> [junit]
</rules>
[junit]
</element>
[junit]
<element
[junit]
name="set">Configures a property of the service
instance.<attribute
[junit] name="property"
required="true">The name of a property of the service instance to
configure.</attribute>
[junit]
<attribute name="value" required="true">The value to
set the property to. The value will be converted to the type of the
property.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderSmartPropertyFacet"/>
[junit]
<read-attribute attribute="property"
property="propertyName"/>
[junit]
<read-attribute attribute="value" property="attributeValue"/>
[junit]
<invoke-parent depth="6" method="addProperty"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element
[junit]
name="set-object">Configures a property of the service instance
using an object.<attribute
[junit]
name="property" required="true">The name of a property
of the service instance to configure.</attribute>
[junit]
<attribute name="value" required="true"
translator="object">The value to set the property to, in the form
of a prefix and a locator for that prefix. Prefixes are defined by the
ObjectProviders configuration point. Each prefix provides a different
interpretation for the locator, such as a service id or class name.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-attribute attribute="property" property="propertyName"/>
[junit]
<read-attribute attribute="value" property="value"/>
[junit]
<invoke-parent depth="6" method="addProperty"/>
[junit]
</rules>
[junit] </element>
[junit]
<element
[junit]
name="set-service">Configures a property of the service instance
to another service.<attribute
[junit]
name="property" required="true">The name of the property
of the service instance to configure.</attribute>
[junit]
<attribute name="service-id" required="true" translator="service">The
id of the service.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-attribute attribute="property" property="propertyName"/>
[junit] <read-attribute
attribute="service-id" property="value"/>
[junit]
<invoke-parent depth="6" method="addProperty"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element
[junit]
name="set-configuration">Configures a property of the service
instance to the elements contributed to an configuration point.<attribute
[junit]
name="property" required="true">The name of the property
of the service instance to configure.</attribute>
[junit]
<attribute name="configuration-id"
[junit]
required="true" translator="configuration">The id of the
configuration point to access.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-attribute attribute="property" property="propertyName"/>
[junit]
<read-attribute attribute="configuration-id" property="value"/>
[junit]
<invoke-parent depth="6" method="addProperty"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element
[junit]
name="set-resource">Configures a property of the service instance
to a resource.<attribute
[junit]
name="property" required="true">The name of the property
of the service instance to configure.</attribute>
[junit]
<attribute name="path" required="true"
translator="resource">The path, relative to the module's
deployment descriptor, of the resource.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-attribute attribute="property" property="propertyName"/>
[junit]
<read-attribute attribute="path" property="value"/>
[junit]
<invoke-parent depth="6"
method="addProperty"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element
[junit]
name="event-listener">Registers the new services as an event
listener for events produced by the specified service.<attribute
[junit]
name="service-id" required="true" translator="service">The
service which will produce events.</attribute>
[junit] <attribute
name="event-set">If given, the name of an event set for which the
service will be registered. If omitted, the service will be registered for all
events sets for which it implements the necessary listener
interfaces.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.EventRegistration"/>
[junit]
<read-attribute attribute="service-id" property="producer"/>
[junit]
<read-attribute attribute="event-set" property="eventSetName"/>
[junit]
<invoke-parent depth="6" method="addEventRegistration"/>
[junit]
</rules> [junit]
</element>
[junit]
</element>
[junit]
</parameters-schema>
[junit]
<create-instance
[junit]
class="org.apache.hivemind.service.impl.BuilderFactory"
model="primitive"/>
[junit] </service-point>
[junit] <service-point
id="hivemind.ThreadEventNotifier"
[junit]
interface="org.apache.hivemind.service.ThreadEventNotifier"
[junit]
uid="13">Service used by other services to be alerted when a
thread is cleaned up (typically, at the end of a request or
transaction).<create-instance class="org.apache.hivemind.service.impl.ThreadEventNotifierImpl"/>
[junit] </service-point>
[junit] <service-point
id="hivemind.ThreadLocalStorage"
[junit]
interface="org.apache.hivemind.service.ThreadLocalStorage"
[junit]
uid="14">Service which manages a thread-local map of data items.
This can be used for temporary storage of information when local variables
can't be used. All stored items are released when the thread is cleaned
up.<invoke-factory service-id="hivemind.BuilderFactory">
[junit]
<construct
class="org.apache.hivemind.service.impl.ThreadLocalStorageImpl">
[junit]
<set-service property="notifier"
service-id="ThreadEventNotifier"/>
[junit]
</construct> [junit]
</invoke-factory>
[junit] </service-point>
[junit] <configuration-point
id="hivemind.ServiceModels"
[junit]
uid="15">Defines service models, providing a name and a class for
each.<schema>Describes contributions that define new types of service
models by providing service model factories.<element
name="service-model">
[junit]
<attribute name="name" required="true">The name of
the service model, which must be unique.</attribute>
[junit]
<attribute name="class" required="false"
translator="instance">The name of the service model factory class
to instantiate.</attribute>
[junit]
<conversion class="org.apache.hivemind.impl.ServiceModelContribution">
[junit]
<map attribute="class" property="factory"/>
[junit]
</conversion>
[junit]
</element>
[junit]
</schema>
[junit] </configuration-point>
[junit] <contribution
configuration-id="hivemind.ServiceModels" uid="16">
[junit]
<service-model
[junit]
class="org.apache.hivemind.impl.servicemodel.PrimitiveServiceModelFactory"
name="primitive"/>
[junit]
<service-model
[junit]
class="org.apache.hivemind.impl.servicemodel.SingletonServiceModelFactory"
name="singleton"/>
[junit]
<service-model
[junit]
class="org.apache.hivemind.impl.servicemodel.ThreadedServiceModelFactory"
name="threaded"/>
[junit]
<service-model
[junit]
class="org.apache.hivemind.impl.servicemodel.PooledServiceModelFactory"
name="pooled"/>
[junit] </contribution>
[junit] <configuration-point
id="hivemind.Translators"
[junit]
uid="17">Used to define new translators that can be used in
contribution conversion rules. Translators must have unique
names.<schema>Maps translator names to translator classes.<element
[junit]
name="translator">Maps a translator name to a translator
class.<attribute
[junit]
name="name" required="true">A unique name for a
translator.</attribute> [junit]
<attribute name="class" required="false"
translator="class">The class to instantiate, which must implement
the Translator interface.</attribute>
[junit]
<attribute name="service-id" required="false" translator="service">A
service which implements the Translator interface.</attribute>
[junit]
<conversion
class="org.apache.hivemind.impl.TranslatorContribution">
[junit]
<map attribute="class" property="translatorClass"/>
[junit]
<map attribute="service-id" property="translator"/>
[junit]
</conversion>
[junit]
</element>
[junit]
</schema>
[junit] </configuration-point>
[junit] <contribution
configuration-id="hivemind.Translators" uid="18">
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.BooleanTranslator"
name="boolean"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.IntTranslator"
name="int"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.EnumerationTranslator"
name="enumeration"/> [junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.ConfigurationTranslator"
name="configuration"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.ResourceTranslator"
name="resource"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.LongTranslator"
name="long"/> [junit] <translator
[junit]
class="org.apache.hivemind.schema.rules.DoubleTranslator"
name="double"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.ServicePointTranslator"
name="service-point"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.QualifiedIdTranslator"
name="qualified-id"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.IdListTranslator"
name="id-list"/>
[junit]
<translator name="object"
service-id="ObjectTranslator"/>
[junit] </contribution>
[junit] <service-point
id="hivemind.ShutdownCoordinator"
[junit] interface="org.apache.hivemind.ShutdownCoordinator"
[junit]
uid="19">A source of event notifications for when the Registry is
shutdown.<invoke-factory service-id="hivemind.BuilderFactory">
[junit]
<construct class="org.apache.hivemind.impl.ShutdownCoordinatorImpl">
[junit]
<log/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <configuration-point
id="hivemind.Startup" uid="20">A configuration to which
startup objects may be contributed (as objects or services). Startup object
must implement the java.lang.Runnable interface. Order of execution is
expliclitly NOT defined.<schema>
[junit] <element
[junit]
name="service">Defines a service that implements the Runnable
interface.<attribute
[junit]
name="service-id" translator="service">The name of a
service implementing the Runnable interface.</attribute>
[junit]
<rules>
[junit]
<push-attribute attribute="service-id"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element
[junit]
name="runnable">Allows an instance of a class implementing
Runnable to be contributed.<attribute
[junit]
name="class" translator="instance">The name of a class
implementing Runnable.</attribute>
[junit]
<rules>
[junit]
<push-attribute attribute="class"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point>
[junit] <service-point
id="hivemind.Startup"
[junit]
interface="java.lang.Runnable"
[junit]
uid="21">A service which is used to bootstrap HiveMind; it obtains
the hivemind.Startup configuration and runs each Runnable object or service
within.<invoke-factory service-id="hivemind.BuilderFactory"> [junit]
<construct class="org.apache.hivemind.impl.StartupImpl">
[junit]
<set-configuration configuration-id="Startup"
property="runnables"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <configuration-point
id="hivemind.EagerLoad" uid="22">Configuration to which
services may be contributed. The corresponding services are instantiated eagerly,
as the Registry is started. The order in which services are instantiated is not
specified. <schema>
[junit]
<element
[junit]
name="load">Identifies a service that will be eagerly
loaded.<attribute
[junit]
name="service-id" required="true"
translator="service-point"/>
[junit]
<rules>
[junit]
<push-attribute attribute="service-id"/>
[junit]
<invoke-parent method="addElement"/> [junit]
</rules>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point>
[junit] <service-point
id="hivemind.EagerLoad"
[junit]
interface="java.lang.Runnable"
[junit]
uid="23">Service that performs eager loading of other services.
This service is contributed into the hivemind.Startup configuration.<invoke-factory
[junit]
model="primitive"
service-id="hivemind.BuilderFactory">
[junit]
<construct
class="org.apache.hivemind.service.impl.EagerLoader">
[junit]
<set-configuration configuration-id="EagerLoad"
property="servicePoints"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <contribution
configuration-id="hivemind.Startup" uid="24">
[junit]
<service service-id="EagerLoad"/>
[junit] </contribution>
[junit] <configuration-point
id="hivemind.ObjectProviders" uid="25">Services that can
provide objects for the object translator.<schema>
[junit]
<element name="provider"> [junit] <attribute
name="prefix" required="true">The prefix used to
identify the provider.</attribute>
[junit]
<attribute name="service-id" required="true"
translator="service">The object providing
service.</attribute>
[junit]
<conversion
class="org.apache.hivemind.service.impl.ObjectProviderContribution">
[junit]
<map attribute="service-id" property="provider"/>
[junit]
</conversion> [junit] </element>
[junit]
</schema>
[junit]
</configuration-point>
[junit] <service-point
id="hivemind.ObjectTranslator"
[junit]
interface="org.apache.hivemind.schema.Translator" [junit] uid="26">Translator
that works with ObjectProviders to find or create objects.<invoke-factory
service-id="hivemind.BuilderFactory">
[junit]
<construct
[junit]
class="org.apache.hivemind.service.impl.ObjectTranslator"
initialize-method="initializeService">
[junit]
<set-configuration
[junit]
configuration-id="ObjectProviders" property="contributions"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <service-point
id="hivemind.ServiceObjectProvider"
[junit]
interface="org.apache.hivemind.service.ObjectProvider"
[junit]
uid="27">ObjectProvider that can locate services. Mapped to the
service: prefix.<create-instance class="org.apache.hivemind.service.impl.ServiceObjectProvider"/>
[junit] </service-point>
[junit] <service-point
id="hivemind.ConfigurationObjectProvider"
[junit]
interface="org.apache.hivemind.service.ObjectProvider"
[junit]
uid="28">ObjectProvider that can locate configurations. Mapped to
the configuration: prefix.<create-instance
class="org.apache.hivemind.service.impl.ConfigurationObjectProvider"/>
[junit] </service-point>
[junit] <service-point
id="hivemind.ObjectInstanceObjectProvider"
[junit]
interface="org.apache.hivemind.service.ObjectProvider"
[junit]
uid="29">ObjectProvider that will instantiate a new instance of a
provided class. Mapped to the instance: prefix.<create-instance
class="org.apache.hivemind.service.impl.ObjectInstanceObjectProvider"/>
[junit] </service-point>
[junit] <service-point
id="hivemind.ServicePropertyObjectProvider"
[junit]
interface="org.apache.hivemind.service.ObjectProvider"
[junit]
uid="30">ObjectProvider that will extra a property from a
service. Mapped to the service-property:...> but was:<...
version="1.0.0">
The master
[junit] module for HiveMind,
defining core, universal functionality.
[junit]
<configuration-point id="hivemind.SymbolSources"
uid="2">
[junit]
Provides a list of sources for values of substitution
[junit]
symbols.
<schema>
[junit]
<element name="source">Describes a single source of
[junit]
symbol values. <attribute name="name"
[junit]
required="true"> A unique name used
to
[junit]
identify the source, used when ordering the sources.</attribute>
[junit]
<attribute name="class" translator="instance">
[junit]
Name of a class implementing the SymbolSource interface.</attribute>
[junit]
<attribute name="service-id" translator="service">
[junit]
Service configuration id for a service which
[junit]
implements the SymbolSource interface.</attribute> [junit]
<attribute name="before"> A
list of the names
[junit]
of other sources this source should
precede.</attribute>
[junit]
<attribute name="after"> A
list of the names
[junit]
of other sources this source should follow.</attribute>
[junit]
<conversion
class="org.apache.hivemind.SymbolSourceContribution">
[junit]
<map attribute="class" property="source"/>
[junit]
<map attribute="service-id" property="source"/>
[junit]
<map attribute="before" property="followingNames"/>
[junit]
<map attribute="after" property="precedingNames"/>
[junit]
</conversion>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point>
[junit] <contribution
configuration-id="hivemind.SymbolSources" uid="3">
[junit]
<source before="hivemind.FactoryDefaults"
[junit]
name="hivemind.ApplicationDefaults"
service-id="ApplicationDefaultsSymbolSource"/>
[junit]
<source name="hivemind.FactoryDefaults" service-id="FactoryDefaultsSymbolSource"/>
[junit] </contribution>
[junit] <schema
id="hivemind.Defaults" uid="4">
[junit]
<element name="default">Provides a default symbol
[junit]
value.<attribute name="symbol" required="true">The
[junit]
id of the symbol to define a default value for.</attribute>
[junit]
<attribute name="value" required="true">The value for
[junit]
the symbol.</attribute>
[junit]
<conversion
class="org.apache.hivemind.service.impl.FactoryDefault"/>
[junit]
</element>
[junit] </schema>
[junit] <configuration-point
id="hivemind.FactoryDefaults"
[junit]
schema-id="hivemind.Defaults" uid="5">Extension point
for
[junit]
setting "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
[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 "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
[junit]
FactoryDefaults configuration point.<invoke-factory
service-id="hivemind.BuilderFactory">
[junit]
<construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">
[junit]
<set-configuration
[junit]
configuration-id="FactoryDefaults" property="defaults"/>
[junit]
</construct>
[junit]
</invoke-factory> [junit]
</service-point>
[junit] <configuration-point
id="hivemind.ApplicationDefaults"
[junit]
schema-id="hivemind.Defaults" uid="7">Extension point
for
[junit]
setting application defaults; these defaults will override
[junit]
factory defaults specified in the FactoryDefaults
[junit]
configuration point.</configuration-point>
[junit] <service-point
id="hivemind.ApplicationDefaultsSymbolSource" [junit] interface="org.apache.hivemind.SymbolSource"
[junit]
uid="8">SymbolSource implementation driven by the
[junit]
ApplicationDefaults configuration point.<invoke-factory
service-id="hivemind.BuilderFactory"> [junit]
<construct
class="org.apache.hivemind.service.impl.DefaultsSymbolSource">
[junit]
<set-configuration
[junit]
configuration-id="ApplicationDefaults"
property="defaults"/>
[junit] </construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <service-point
id="hivemind.ClassFactory"
[junit]
interface="org.apache.hivemind.service.ClassFactory"
[junit]
uid="9">Wrapper around Javassist used to dynamically create
[junit]
classes such as service interceptors.<create-instance
[junit]
class="org.apache.hivemind.service.impl.ClassFactoryImpl"
model="primitive"/>
[junit] </service-point>
[junit] <schema
id="hivemind.MethodFilter" uid="10">Used primarily as
[junit]
parameters to interceptor factories (such as
[junit]
LoggingInterceptor) to define which methods of service
[junit]
interface are to be included and which excluded.<element
[junit]
name="include">Identifies a method, or set of methods,
[junit]
to be included.<attribute name="method"
[junit]
required="true">A method pattern used to identify
[junit]
the affected methods.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.MethodContribution"/>
[junit]
<set-property property="include" value="true"/>
[junit]
<read-attribute attribute="method"
property="methodPattern"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="exclude">Identifies a method, or set of
[junit]
methods, to be excluded.<attribute name="method" [junit]
required="true">A method pattern used to identify
[junit]
the affected methods.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.MethodContribution"/>
[junit]
<set-property property="include" value="false"/>
[junit]
<read-attribute attribute="method"
property="methodPattern"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit] </schema>
[junit] <service-point
id="hivemind.LoggingInterceptor"
[junit] interface="org.apache.hivemind.ServiceInterceptorFactory"
[junit]
parameters-schema-id="hivemind.MethodFilter" uid="11">An
[junit]
interceptor factory for adding method-level logging to a
[junit]
service. Logging occurs at level DEBUG and uses the service
[junit]
id as the logger. Method entry (with parameters) and method
[junit]
exit (with return value) are logged, as are any
[junit]
exceptions.<invoke-factory model="primitive"
service-id="hivemind.BuilderFactory">
[junit]
<construct
class="org.apache.hivemind.service.impl.LoggingInterceptorFactory">
[junit]
<set-service property="factory" service-id="ClassFactory"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <service-point
id="hivemind.BuilderFactory"
[junit]
interface="org.apache.hivemind.ServiceImplementationFactory"
[junit]
uid="12">Used to construct a service from a class name and
[junit]
optional constructor parameters and properties.<parameters-schema>
[junit]
<element name="construct">A single construct element
[junit]
identifies the class to instantiate.<attribute
[junit]
name="class" required="true">The name of the
[junit]
class to instantiate.</attribute> [junit]
<attribute name="messages-property">The name of a
[junit]
property to assign invoking module's messages to.</attribute>
[junit]
<attribute name="log-property">The name of a
[junit]
property to assign the Log instance for the
[junit]
service to. The Log instance is built from the
[junit]
service configuration point id.</attribute> [junit] <attribute
name="service-id-property">The name of a
[junit]
property to assign the configuration point id of
[junit]
the service to.</attribute>
[junit]
<attribute name="initialize-method">The name of a
[junit]
public instance method (taking no parameters) to
[junit]
be invoked after the service is constructed.</attribute>
[junit]
<attribute name="error-handler-property">The name of
[junit]
a property to assign the module's ErrorHandler to.</attribute>
[junit]
<attribute name="class-resolver-property">The name
[junit] of
a property to assign the module's
[junit]
ClassResolver to.</attribute>
[junit]
<attribute name="autowire-services"
[junit]
translator="boolean,default=true">If true (the
[junit]
default), the BuilderFactory will attempt to
[junit]
connect unclaimed properties to services.</attribute>
[junit]
<rules>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderParameter"/>
[junit]
<read-attribute attribute="class"
property="className"/>
[junit]
<read-attribute attribute="initialize-method" property="initializeMethod"/>
[junit]
<read-attribute attribute="autowire-services"
[junit]
property="autowireServices" skip-if-null="false"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>
[junit]
<read-attribute attribute="messages-property"
property="propertyName"/> [junit] <invoke-parent
depth="1" method="addProperty"/>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>
[junit]
<read-attribute attribute="log-property"
property="propertyName"/>
[junit]
<invoke-parent depth="2" method="addProperty"/>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>
[junit]
<read-attribute attribute="service-id-property"
property="propertyName"/>
[junit]
<invoke-parent depth="3" method="addProperty"/> [junit] <create-object
class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>
[junit]
<read-attribute
[junit]
attribute="error-handler-property" property="propertyName"/>
[junit]
<invoke-parent depth="4" method="addProperty"/>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>
[junit]
<read-attribute
[junit]
attribute="class-resolver-property" property="propertyName"/>
[junit]
<invoke-parent depth="5" method="addProperty"/>
[junit]
</rules>
[junit]
<element name="string">A string value
constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="int" name="int">An
[junit]
integer value constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="long" name="long">A
[junit]
long (64-bit) integer value constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element> [junit]
<element
[junit]
content-translator="enumeration,java.lang.Boolean,true=TRUE,false=FALSE"
[junit]
name="boolean">A boolean value constructor parameter.<rules> [junit] <create-object
class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="service"
[junit]
name="service">A constructor parameter providing [junit]
the identified HiveMind service.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="configuration"
[junit]
name="configuration">A constructor parameter
[junit]
providing a HiveMind configuration point (as a List).<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules> [junit]
</element>
[junit]
<element content-translator="resource"
[junit]
name="resource">A Resource constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="log">Placeholder for a Log instance
[junit]
for the constructed service as constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/> [junit] </rules>
[junit]
</element>
[junit]
<element name="error-handler">Placeholder for the
[junit]
module's ErrorHandler instance passed in as a
[junit] constructor
parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="class-resolver">Placeholder for the
[junit]
module's ClassResolver instance passed in as a
[junit]
constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="messages">Placeholder for a Messages
[junit]
object (from the invoking module) as constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="service-id">Placeholder for the
[junit]
service id (of the constructed service) as [junit]
constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="object"
[junit]
name="object">Placeholder for an object provided [junit]
by the object translator as a constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="set">Configures a property of the
[junit]
service instance.<attribute name="property"
[junit]
required="true">The name of a property of
[junit]
the service instance to configure.</attribute>
[junit]
<attribute name="value" required="true">The
[junit]
value to set the property to. The value will
[junit]
be converted to the type of the property.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderSmartPropertyFacet"/>
[junit]
<read-attribute attribute="property"
property="propertyName"/>
[junit]
<read-attribute attribute="value" property="attributeValue"/>
[junit]
<invoke-parent depth="6" method="addProperty"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="set-object">Configures a property of
[junit]
the service instance using an object.<attribute
[junit]
name="property" required="true">The name of
[junit]
a property of the service instance to configure.</attribute>
[junit]
<attribute name="value" required="true"
[junit]
translator="object">The value to set the
[junit]
property to, in the form of a prefix and a
[junit]
locator for that prefix. Prefixes are [junit]
defined by the ObjectProviders configuration
[junit]
point. Each prefix provides a different
[junit]
interpretation for the locator, such as a
[junit] service
id or class name.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-attribute
attribute="property" property="propertyName"/>
[junit]
<read-attribute attribute="value" property="value"/>
[junit]
<invoke-parent depth="6" method="addProperty"/> [junit]
</rules>
[junit]
</element>
[junit]
<element name="set-service">Configures a property of
[junit]
the service instance to another
[junit] service.<attribute
name="property"
[junit]
required="true">The name of the property of
[junit]
the service instance to configure.</attribute>
[junit]
<attribute name="service-id"
required="true"
[junit]
translator="service">The id of the service.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-attribute attribute="property" property="propertyName"/>
[junit]
<read-attribute
attribute="service-id" property="value"/>
[junit]
<invoke-parent depth="6" method="addProperty"/>
[junit]
</rules>
[junit]
</element> [junit] <element
name="set-configuration">Configures a
[junit]
property of the service instance to the elements
[junit]
contributed to an configuration point.<attribute
[junit] name="property"
required="true">The name of
[junit]
the property of the service instance to configure.</attribute>
[junit]
<attribute name="configuration-id"
[junit] required="true"
[junit]
translator="configuration">The id of the
[junit]
configuration point to access.</attribute>
[junit]
<rules> [junit] <create-object
class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-attribute attribute="property" property="propertyName"/>
[junit]
<read-attribute attribute="configuration-id"
property="value"/>
[junit]
<invoke-parent depth="6" method="addProperty"/>
[junit]
</rules>
[junit]
</element>
[junit] <element
name="set-resource">Configures a property
[junit]
of the service instance to a resource.<attribute
[junit]
name="property" required="true">The name of
[junit]
the
property of the service instance to configure.</attribute>
[junit]
<attribute name="path" required="true"
[junit]
translator="resource">The path, relative to
[junit]
the module's deployment descriptor, of the resource.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-attribute attribute="property" property="propertyName"/>
[junit]
<read-attribute attribute="path" property="value"/>
[junit]
<invoke-parent depth="6" method="addProperty"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="event-listener">Registers the new
[junit]
services as an event listener for events
[junit]
produced by the specified service.<attribute
[junit]
name="service-id" required="true"
[junit]
translator="service">The service which will
[junit]
produce events.</attribute>
[junit]
<attribute name="event-set">If given, the name
[junit]
of an event set for which the service will [junit]
be registered. If omitted, the service will
[junit]
be registered for all events sets for which
[junit]
it implements the necessary listener interfaces.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.EventRegistration"/>
[junit]
<read-attribute attribute="service-id" property="producer"/>
[junit]
<read-attribute attribute="event-set" property="eventSetName"/>
[junit]
<invoke-parent depth="6" method="addEventRegistration"/>
[junit]
</rules> [junit]
</element>
[junit]
</element>
[junit]
</parameters-schema>
[junit]
<create-instance
[junit]
class="org.apache.hivemind.service.impl.BuilderFactory"
model="primitive"/>
[junit] </service-point>
[junit] <service-point
id="hivemind.ThreadEventNotifier"
[junit]
interface="org.apache.hivemind.service.ThreadEventNotifier"
[junit]
uid="13">Service used by other services to be alerted when a
[junit]
thread is cleaned up (typically, at the end of a request or
[junit]
transaction).<create-instance
class="org.apache.hivemind.service.impl.ThreadEventNotifierImpl"/>
[junit] </service-point>
[junit] <service-point
id="hivemind.ThreadLocalStorage"
[junit]
interface="org.apache.hivemind.service.ThreadLocalStorage"
[junit]
uid="14">Service which manages a thread-local map of data
[junit]
items. This can be used for temporary storage of information
[junit]
when local variables can't be used. All stored items are
[junit]
released when the thread is cleaned up.<invoke-factory
service-id="hivemind.BuilderFactory">
[junit]
<construct
class="org.apache.hivemind.service.impl.ThreadLocalStorageImpl">
[junit]
<set-service property="notifier"
service-id="ThreadEventNotifier"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <configuration-point
id="hivemind.ServiceModels" [junit]
uid="15">Defines service models, providing a name and a
[junit]
class for each.<schema>Describes contributions that define
[junit]
new types of service models by providing service model [junit] factories.<element
name="service-model">
[junit]
<attribute name="name" required="true">The name of
[junit]
the service model, which must be unique.</attribute>
[junit] <attribute
name="class" required="false"
[junit]
translator="instance">The name of the service
[junit]
model factory class to instantiate.</attribute>
[junit]
<conversion
class="org.apache.hivemind.impl.ServiceModelContribution">
[junit]
<map attribute="class" property="factory"/>
[junit]
</conversion>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point>
[junit] <contribution
configuration-id="hivemind.ServiceModels" uid="16">
[junit]
<service-model
[junit]
class="org.apache.hivemind.impl.servicemodel.PrimitiveServiceModelFactory"
name="primitive"/>
[junit]
<service-model
[junit]
class="org.apache.hivemind.impl.servicemodel.SingletonServiceModelFactory"
name="singleton"/> [junit] <service-model
[junit]
class="org.apache.hivemind.impl.servicemodel.ThreadedServiceModelFactory"
name="threaded"/>
[junit]
<service-model
[junit]
class="org.apache.hivemind.impl.servicemodel.PooledServiceModelFactory"
name="pooled"/>
[junit] </contribution>
[junit] <configuration-point
id="hivemind.Translators" uid="17">Used to
[junit]
define new translators that can be used in contribution [junit] conversion
rules. Translators must have unique
[junit]
names.<schema>Maps translator names to translator
[junit]
classes.<element name="translator">Maps a translator
[junit]
name to a translator class.<attribute name="name"
[junit]
required="true">A unique name for a translator.</attribute>
[junit]
<attribute name="class" required="false"
[junit]
translator="class">The class to instantiate,
[junit]
which must implement the Translator interface.</attribute>
[junit]
<attribute name="service-id" required="false"
[junit]
translator="service">A service which implements
[junit]
the Translator interface.</attribute>
[junit]
<conversion
class="org.apache.hivemind.impl.TranslatorContribution">
[junit]
<map attribute="class" property="translatorClass"/>
[junit]
<map attribute="service-id" property="translator"/>
[junit]
</conversion>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point>
[junit] <contribution
configuration-id="hivemind.Translators" uid="18">
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.BooleanTranslator"
name="boolean"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.IntTranslator"
name="int"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.EnumerationTranslator"
name="enumeration"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.ConfigurationTranslator"
name="configuration"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.ResourceTranslator"
name="resource"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.LongTranslator"
name="long"/> [junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.DoubleTranslator"
name="double"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.ServicePointTranslator" name="service-point"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.QualifiedIdTranslator"
name="qualified-id"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.IdListTranslator"
name="id-list"/>
[junit]
<translator name="object"
service-id="ObjectTranslator"/>
[junit] </contribution>
[junit] <service-point
id="hivemind.ShutdownCoordinator"
[junit]
interface="org.apache.hivemind.ShutdownCoordinator"
[junit]
uid="19">A source of event notifications for when the
[junit]
Registry is shutdown.<invoke-factory
service-id="hivemind.BuilderFactory"> [junit]
<construct
class="org.apache.hivemind.impl.ShutdownCoordinatorImpl">
[junit]
<log/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point> [junit]
<configuration-point id="hivemind.Startup" uid="20">A
[junit]
configuration to which startup objects may be contributed
[junit]
(as objects or services). Startup object must implement the
[junit] java.lang.Runnable
interface. Order of execution is
[junit]
expliclitly NOT defined.<schema>
[junit]
<element name="service">Defines a service that
[junit]
implements the Runnable interface.<attribute
[junit]
name="service-id" translator="service">The name
[junit]
of a service implementing the Runnable interface.</attribute>
[junit]
<rules>
[junit]
<push-attribute
attribute="service-id"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="runnable">Allows an instance of a class
[junit]
implementing Runnable to be contributed.<attribute
[junit]
name="class" translator="instance">The name of a
[junit]
class implementing Runnable.</attribute>
[junit]
<rules>
[junit]
<push-attribute attribute="class"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point>
[junit] <service-point
id="hivemind.Startup"
[junit]
interface="java.lang.Runnable" uid="21">A service which
is
[junit]
used to bootstrap HiveMind; it obtains the hivemind.Startup
[junit]
configuration and runs each Runnable object or service
[junit]
within.<invoke-factory service-id="hivemind.BuilderFactory"> [junit]
<construct class="org.apache.hivemind.impl.StartupImpl">
[junit]
<set-configuration configuration-id="Startup"
property="runnables"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <configuration-point
id="hivemind.EagerLoad"
[junit]
uid="22">Configuration to which services may be contributed.
[junit]
The corresponding services are instantiated eagerly, as the
[junit]
Registry is started. The order in which services are
[junit]
instantiated is not specified. <schema>
[junit]
<element name="load">Identifies a service that will be [junit]
eagerly loaded.<attribute name="service-id"
[junit]
required="true" translator="service-point"/>
[junit]
<rules>
[junit]
<push-attribute attribute="service-id"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point>
[junit] <service-point
id="hivemind.EagerLoad"
[junit]
interface="java.lang.Runnable" uid="23">Service that
[junit]
performs eager loading of other services. This service is
[junit]
contributed into the hivemind.Startup
[junit]
configuration.<invoke-factory model="primitive"
service-id="hivemind.BuilderFactory">
[junit]
<construct
class="org.apache.hivemind.service.impl.EagerLoader">
[junit]
<set-configuration
configuration-id="EagerLoad" property="servicePoints"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <contribution
configuration-id="hivemind.Startup" uid="24">
[junit]
<service service-id="EagerLoad"/>
[junit] </contribution>
[junit] <configuration-point
id="hivemind.ObjectProviders"
[junit]
uid="25">Services that can provide objects for the object
translator.<schema>
[junit]
<element name="provider">
[junit]
<attribute name="prefix" required="true">The prefix
[junit]
used to identify the provider.</attribute> [junit]
<attribute name="service-id" required="true"
[junit]
translator="service">The object providing
service.</attribute>
[junit]
<conversion class="org.apache.hivemind.service.impl.ObjectProviderContribution">
[junit]
<map attribute="service-id" property="provider"/>
[junit]
</conversion>
[junit]
</element>
[junit]
</schema>
[junit] </configuration-point>
[junit] <service-point
id="hivemind.ObjectTranslator"
[junit]
interface="org.apache.hivemind.schema.Translator"
[junit]
uid="26">Translator that works with ObjectProviders to find
[junit]
or create objects.<invoke-factory
service-id="hivemind.BuilderFactory">
[junit]
<construct
[junit]
class="org.apache.hivemind.service.impl.ObjectTranslator"
initialize-method="initializeService">
[junit]
<set-configuration
[junit]
configuration-id="ObjectProviders"
property="contributions"/>
[junit]
</construct>
[junit]
</invoke-factory> [junit] </service-point>
[junit] <service-point
id="hivemind.ServiceObjectProvider"
[junit]
interface="org.apache.hivemind.service.ObjectProvider"
[junit]
uid="27">ObjectProvider that can locate services. Mapped to
[junit]
the service: prefix.<create-instance
class="org.apache.hivemind.service.impl.ServiceObjectProvider"/>
[junit] </service-point>
[junit] <service-point
id="hivemind.ConfigurationObjectProvider"
[junit] interface="org.apache.hivemind.service.ObjectProvider"
[junit]
uid="28">ObjectProvider that can locate configurations.
[junit]
Mapped to the configuration: prefix.<create-instance
class="org.apache.hivemind.service.impl.ConfigurationObjectProvider"/>
[junit] </service-point>
[junit] <service-point
id="hivemind.ObjectInstanceObjectProvider"
[junit]
interface="org.apache.hivemind.service.ObjectProvider"
[junit]
uid="29">ObjectProvider that will instantiate a new instance
[junit]
of a provided class. Mapped to the instance:
[junit]
prefix.<create-instance
class="org.apache.hivemind.service.impl.ObjectInstanceObjectProvider"/> [junit]
</service-point>
[junit] <service-point
id="hivemind.ServicePropertyObjectProvider"
[junit]
interface="org.apache.hivemind.service.ObjectProvider"
[junit]
uid="30">ObjectProvider that will extra a property from a
[junit]
service. Mapped to the service-property:
[junit]
...> [junit] at
hivemind.test.ant.TestConstructRegistry.compare(TestConstructRegistry.java:228) [junit] at
hivemind.test.ant.TestConstructRegistry.testUptoDate(TestConstructRegistry.java:183) [junit] at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [junit] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [junit] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [junit] Testcase:
testJars(hivemind.test.ant.TestConstructRegistry): FAILED [junit] expected:<... [junit]
version="1.0.0">
[junit] [junit] The master
module for HiveMind, defining core, universal functionality. [junit]
<configuration-point
[junit]
id="hivemind.SymbolSources" uid="2">
[junit] Provides
a list of sources for values of substitution symbols.
[junit]
<schema>
[junit]
<element
[junit]
name="source">Describes a single source of symbol values. [junit] <attribute
[junit]
name="name" required="true"> [junit] A unique name
used [junit] to identify the
source, used when ordering the sources.</attribute>
[junit]
<attribute name="class" translator="instance">
[junit] Name of a class implementing the
SymbolSource interface.</attribute>
[junit]
<attribute name="service-id" translator="service"> [junit] Service
configuration id for a service which implements the SymbolSource [junit]
interface.</attribute>
[junit]
<attribute name="before">
[junit] A list of the names of other
sources this source should [junit]
precede.</attribute>
[junit]
<attribute name="after">
[junit] A list of the names of other
sources this source should [junit]
follow.</attribute>
[junit]
<conversion class="org.apache.hivemind.SymbolSourceContribution">
[junit]
<map attribute="class" property="source"/>
[junit]
<map attribute="service-id" property="source"/>
[junit]
<map attribute="before" property="followingNames"/>
[junit]
<map attribute="after" property="precedingNames"/>
[junit]
</conversion>
[junit]
</element>
[junit]
</schema> [junit]
</configuration-point>
[junit] <contribution
configuration-id="hivemind.SymbolSources" uid="3">
[junit]
<source before="hivemind.FactoryDefaults"
[junit]
name="hivemind.ApplicationDefaults" service-id="ApplicationDefaultsSymbolSource"/>
[junit]
<source name="hivemind.FactoryDefaults"
service-id="FactoryDefaultsSymbolSource"/>
[junit] </contribution>
[junit] <schema
id="hivemind.Defaults" uid="4"> [junit] <element
[junit]
name="default">Provides a default symbol value.<attribute
[junit]
name="symbol" required="true">The id of the symbol to
define a default value for.</attribute>
[junit] <attribute
name="value" required="true">The value for the
symbol.</attribute>
[junit]
<conversion
class="org.apache.hivemind.service.impl.FactoryDefault"/>
[junit]
</element>
[junit] </schema>
[junit] <configuration-point
id="hivemind.FactoryDefaults"
[junit]
schema-id="hivemind.Defaults" uid="5">Extension point
for setting "factory defaults" for symbol values.</configuration-point>
[junit] <service-point id="hivemind.FactoryDefaultsSymbolSource"
[junit]
interface="org.apache.hivemind.SymbolSource"
[junit]
uid="6">SymbolSource implementation driven by the FactoryDefaults
configuration point.<invoke-factory service-id="hivemind.BuilderFactory">
[junit]
<construct
class="org.apache.hivemind.service.impl.DefaultsSymbolSource">
[junit]
<set-configuration
[junit]
configuration-id="FactoryDefaults" property="defaults"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <configuration-point
id="hivemind.ApplicationDefaults"
[junit]
schema-id="hivemind.Defaults" uid="7">Extension point
for setting application defaults; these defaults will override factory defaults
specified in the FactoryDefaults configuration
point.</configuration-point>
[junit] <service-point
id="hivemind.ApplicationDefaultsSymbolSource"
[junit]
interface="org.apache.hivemind.SymbolSource"
[junit]
uid="8">SymbolSource implementation driven by the
ApplicationDefaults configuration point.<invoke-factory service-id="hivemind.BuilderFactory"> [junit]
<construct
class="org.apache.hivemind.service.impl.DefaultsSymbolSource">
[junit]
<set-configuration
[junit]
configuration-id="ApplicationDefaults"
property="defaults"/> [junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <service-point
id="hivemind.ClassFactory"
[junit]
interface="org.apache.hivemind.service.ClassFactory" [junit]
uid="9">Wrapper around Javassist used to dynamically create
classes such as service interceptors.<create-instance
[junit]
class="org.apache.hivemind.service.impl.ClassFactoryImpl"
model="primitive"/> [junit] </service-point>
[junit] <schema
id="hivemind.MethodFilter"
[junit]
uid="10">Used primarily as parameters to interceptor factories
(such as LoggingInterceptor) to define which methods of service interface are
to be included and which excluded.<element
[junit]
name="include">Identifies a method, or set of methods, to be
included.<attribute
[junit]
name="method" required="true">A method pattern used to
identify the affected methods.</attribute>
[junit]
<rules>
[junit] <create-object
class="org.apache.hivemind.service.MethodContribution"/>
[junit]
<set-property property="include" value="true"/>
[junit]
<read-attribute attribute="method"
property="methodPattern"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element
[junit]
name="exclude">Identifies a method, or set of methods, to be
excluded.<attribute
[junit]
name="method" required="true">A method pattern used to
identify the affected methods.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.MethodContribution"/>
[junit]
<set-property property="include" value="false"/>
[junit]
<read-attribute attribute="method"
property="methodPattern"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit] </schema>
[junit] <service-point
id="hivemind.LoggingInterceptor"
[junit]
interface="org.apache.hivemind.ServiceInterceptorFactory"
[junit]
parameters-schema-id="hivemind.MethodFilter"
[junit]
uid="11">An interceptor factory for adding method-level logging to
a service. Logging occurs at level DEBUG and uses the service id as the logger.
Method entry (with parameters) and method exit (with return value) are logged,
as are any exceptions.<invoke-factory
[junit]
model="primitive" service-id="hivemind.BuilderFactory">
[junit]
<construct
class="org.apache.hivemind.service.impl.LoggingInterceptorFactory">
[junit]
<set-service property="factory"
service-id="ClassFactory"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <service-point
id="hivemind.BuilderFactory"
[junit]
interface="org.apache.hivemind.ServiceImplementationFactory"
uid="12">Used to construct a service from a class name and
optional constructor parameters and properties.<parameters-schema>
[junit]
<element
[junit]
name="construct">A single construct element identifies the class
to instantiate.<attribute
[junit]
name="class" required="true">The name of the class to
instantiate.</attribute>
[junit]
<attribute name="messages-property">The name of a property to
assign invoking module's messages to.</attribute>
[junit]
<attribute name="log-property">The name of a property to assign
the Log instance for the service to. The Log instance is built from the service
configuration point id.</attribute>
[junit]
<attribute name="service-id-property">The name of a property to
assign the configuration point id of the service to.</attribute>
[junit]
<attribute name="initialize-method">The name of a public
instance method (taking no parameters) to be invoked after the service is
constructed.</attribute>
[junit]
<attribute name="error-handler-property">The name of a property
to assign the module's ErrorHandler to.</attribute>
[junit]
<attribute name="class-resolver-property">The name of a property
to assign the module's ClassResolver to.</attribute>
[junit]
<attribute name="autowire-services"
translator="boolean,default=true">If true (the default), the
BuilderFactory will attempt to connect unclaimed properties to services.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderParameter"/>
[junit]
<read-attribute attribute="class" property="className"/>
[junit]
<read-attribute attribute="initialize-method"
property="initializeMethod"/>
[junit]
<read-attribute attribute="autowire-services"
[junit]
property="autowireServices" skip-if-null="false"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>
[junit]
<read-attribute attribute="messages-property"
property="propertyName"/>
[junit]
<invoke-parent depth="1" method="addProperty"/>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>
[junit]
<read-attribute attribute="log-property"
property="propertyName"/>
[junit]
<invoke-parent depth="2" method="addProperty"/>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>
[junit]
<read-attribute attribute="service-id-property"
property="propertyName"/>
[junit]
<invoke-parent depth="3" method="addProperty"/>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>
[junit]
<read-attribute
[junit]
attribute="error-handler-property" property="propertyName"/>
[junit]
<invoke-parent depth="4" method="addProperty"/>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>
[junit]
<read-attribute
[junit]
attribute="class-resolver-property" property="propertyName"/>
[junit]
<invoke-parent depth="5" method="addProperty"/>
[junit]
</rules> [junit] <element
name="string">A string value constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="int" name="int">An
integer value constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="long" name="long">A long
(64-bit) integer value constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element
[junit]
content-translator="enumeration,java.lang.Boolean,true=TRUE,false=FALSE"
name="boolean">A boolean value constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules> [junit] </element>
[junit]
<element content-translator="service"
name="service">A constructor parameter providing the identified
HiveMind service.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="configuration"
name="configuration">A constructor parameter providing a HiveMind
configuration point (as a List).<rules>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/> [junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="resource"
name="resource">A Resource constructor parameter.<rules>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit] </rules>
[junit]
</element>
[junit]
<element name="log">Placeholder for a Log instance for the
constructed service as constructor parameter.<rules>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderLogFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="error-handler">Placeholder for the module's
ErrorHandler instance passed in as a constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="class-resolver">Placeholder for the module's
ClassResolver instance passed in as a constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>
[junit]
<invoke-parent
depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="messages">Placeholder for a Messages object
(from the invoking module) as constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/> [junit]
</rules>
[junit]
</element>
[junit]
<element name="service-id">Placeholder for the service id (of
the constructed service) as constructor parameter.<rules>
[junit] <create-object
class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit] </element>
[junit]
<element content-translator="object"
name="object">Placeholder for an object provided by the object
translator as a constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element
[junit]
name="set">Configures a property of the service
instance.<attribute
[junit]
name="property" required="true">The name of a property
of the service instance to configure.</attribute>
[junit]
<attribute name="value" required="true">The value to
set the property to. The value will be converted to the type of the
property.</attribute>
[junit]
<rules>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderSmartPropertyFacet"/>
[junit]
<read-attribute attribute="property" property="propertyName"/>
[junit]
<read-attribute attribute="value"
property="attributeValue"/>
[junit]
<invoke-parent depth="6" method="addProperty"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element
[junit]
name="set-object">Configures a property of the service instance
using an object.<attribute
[junit]
name="property" required="true">The name of a property
of the service instance to configure.</attribute>
[junit]
<attribute name="value" required="true"
translator="object">The value to set the property to, in the form
of a prefix and a locator for that prefix. Prefixes are defined by the
ObjectProviders configuration point. Each prefix provides a different
interpretation for the locator, such as a service id or class
name.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-attribute attribute="property" property="propertyName"/>
[junit]
<read-attribute attribute="value" property="value"/>
[junit]
<invoke-parent
depth="6" method="addProperty"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element
[junit]
name="set-service">Configures a property of the service instance
to another service.<attribute
[junit]
name="property" required="true">The name of the property
of the service instance to configure.</attribute>
[junit]
<attribute name="service-id" required="true"
translator="service">The id of the service.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-attribute attribute="property" property="propertyName"/>
[junit]
<read-attribute attribute="service-id" property="value"/>
[junit]
<invoke-parent depth="6" method="addProperty"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element
[junit]
name="set-configuration">Configures a property of the service
instance to the elements contributed to an configuration point.<attribute
[junit]
name="property" required="true">The name of the property
of the service instance to configure.</attribute>
[junit]
<attribute name="configuration-id"
[junit]
required="true" translator="configuration">The id of the
configuration point to access.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-attribute attribute="property"
property="propertyName"/>
[junit]
<read-attribute attribute="configuration-id" property="value"/>
[junit]
<invoke-parent depth="6" method="addProperty"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element
[junit]
name="set-resource">Configures a property of the service instance
to a resource.<attribute
[junit]
name="property"
required="true">The name of the property of the service instance
to configure.</attribute>
[junit]
<attribute name="path" required="true"
translator="resource">The path, relative to the module's deployment
descriptor, of the resource.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-attribute attribute="property"
property="propertyName"/>
[junit]
<read-attribute attribute="path" property="value"/>
[junit]
<invoke-parent depth="6" method="addProperty"/>
[junit] </rules>
[junit]
</element>
[junit]
<element
[junit]
name="event-listener">Registers the new services as an event
listener for events produced by the specified service.<attribute
[junit]
name="service-id" required="true" translator="service">The
service which will produce events.</attribute>
[junit]
<attribute name="event-set">If given, the name of an event set
for which the service will be registered. If omitted, the service will be
registered for all events sets for which it implements the necessary listener
interfaces.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.EventRegistration"/>
[junit]
<read-attribute attribute="service-id" property="producer"/>
[junit]
<read-attribute attribute="event-set"
property="eventSetName"/>
[junit]
<invoke-parent depth="6" method="addEventRegistration"/>
[junit]
</rules>
[junit]
</element> [junit]
</element>
[junit]
</parameters-schema>
[junit]
<create-instance
[junit]
class="org.apache.hivemind.service.impl.BuilderFactory"
model="primitive"/>
[junit] </service-point>
[junit] <service-point
id="hivemind.ThreadEventNotifier"
[junit]
interface="org.apache.hivemind.service.ThreadEventNotifier"
[junit]
uid="13">Service used by other services to be alerted when a
thread is cleaned up (typically, at the end of a request or
transaction).<create-instance
class="org.apache.hivemind.service.impl.ThreadEventNotifierImpl"/>
[junit] </service-point>
[junit] <service-point
id="hivemind.ThreadLocalStorage" [junit]
interface="org.apache.hivemind.service.ThreadLocalStorage"
[junit]
uid="14">Service which manages a thread-local map of data items.
This can be used for temporary storage of information when local variables
can't be used. All stored items are released when the thread is cleaned
up.<invoke-factory service-id="hivemind.BuilderFactory">
[junit]
<construct
class="org.apache.hivemind.service.impl.ThreadLocalStorageImpl">
[junit]
<set-service property="notifier"
service-id="ThreadEventNotifier"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <configuration-point
id="hivemind.ServiceModels"
[junit]
uid="15">Defines service models, providing a name and a class for
each.<schema>Describes contributions that define new types of service
models by providing service model factories.<element
name="service-model"> [junit] <attribute
name="name" required="true">The name of the service
model, which must be unique.</attribute>
[junit]
<attribute name="class" required="false"
translator="instance">The name of the service model factory class
to instantiate.</attribute>
[junit]
<conversion
class="org.apache.hivemind.impl.ServiceModelContribution">
[junit]
<map attribute="class" property="factory"/>
[junit]
</conversion>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point>
[junit] <contribution
configuration-id="hivemind.ServiceModels" uid="16"> [junit]
<service-model
[junit]
class="org.apache.hivemind.impl.servicemodel.PrimitiveServiceModelFactory"
name="primitive"/>
[junit]
<service-model
[junit]
class="org.apache.hivemind.impl.servicemodel.SingletonServiceModelFactory"
name="singleton"/>
[junit]
<service-model
[junit]
class="org.apache.hivemind.impl.servicemodel.ThreadedServiceModelFactory"
name="threaded"/>
[junit]
<service-model
[junit]
class="org.apache.hivemind.impl.servicemodel.PooledServiceModelFactory"
name="pooled"/>
[junit] </contribution>
[junit] <configuration-point
id="hivemind.Translators"
[junit]
uid="17">Used to define new translators that can be used in
contribution conversion rules. Translators must have unique
names.<schema>Maps translator names to translator classes.<element
[junit]
name="translator">Maps a translator name to a translator
class.<attribute
[junit]
name="name" required="true">A unique name for a
translator.</attribute>
[junit]
<attribute name="class" required="false"
translator="class">The class to instantiate, which must implement
the Translator interface.</attribute>
[junit]
<attribute name="service-id" required="false"
translator="service">A service which implements the Translator
interface.</attribute>
[junit]
<conversion
class="org.apache.hivemind.impl.TranslatorContribution">
[junit]
<map attribute="class" property="translatorClass"/>
[junit]
<map attribute="service-id" property="translator"/> [junit]
</conversion>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point>
[junit] <contribution
configuration-id="hivemind.Translators" uid="18"> [junit] <translator
[junit]
class="org.apache.hivemind.schema.rules.BooleanTranslator"
name="boolean"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.IntTranslator"
name="int"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.EnumerationTranslator"
name="enumeration"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.ConfigurationTranslator"
name="configuration"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.ResourceTranslator"
name="resource"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.LongTranslator"
name="long"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.DoubleTranslator"
name="double"/>
[junit]
<translator
[junit] class="org.apache.hivemind.schema.rules.ServicePointTranslator"
name="service-point"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.QualifiedIdTranslator"
name="qualified-id"/> [junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.IdListTranslator"
name="id-list"/>
[junit]
<translator name="object"
service-id="ObjectTranslator"/>
[junit] </contribution> [junit]
<service-point id="hivemind.ShutdownCoordinator"
[junit]
interface="org.apache.hivemind.ShutdownCoordinator"
[junit]
uid="19">A source of event notifications for when the Registry is
shutdown.<invoke-factory service-id="hivemind.BuilderFactory">
[junit]
<construct
class="org.apache.hivemind.impl.ShutdownCoordinatorImpl">
[junit]
<log/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <configuration-point
id="hivemind.Startup" uid="20">A configuration to which
startup objects may be contributed (as objects or services). Startup object must
implement the java.lang.Runnable interface. Order of execution is expliclitly NOT
defined.<schema>
[junit]
<element
[junit]
name="service">Defines a service that implements the Runnable
interface.<attribute
[junit]
name="service-id" translator="service">The name of a
service implementing the Runnable interface.</attribute>
[junit]
<rules>
[junit]
<push-attribute attribute="service-id"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element
[junit]
name="runnable">Allows an instance of a class implementing
Runnable to be contributed.<attribute [junit]
name="class" translator="instance">The name of a class
implementing Runnable.</attribute>
[junit]
<rules>
[junit]
<push-attribute attribute="class"/>
[junit] <invoke-parent
method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point>
[junit] <service-point
id="hivemind.Startup"
[junit]
interface="java.lang.Runnable"
[junit]
uid="21">A service which is used to bootstrap HiveMind; it obtains
the hivemind.Startup configuration and runs each Runnable object or service
within.<invoke-factory service-id="hivemind.BuilderFactory">
[junit]
<construct class="org.apache.hivemind.impl.StartupImpl">
[junit]
<set-configuration configuration-id="Startup"
property="runnables"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <configuration-point
id="hivemind.EagerLoad" uid="22">Configuration to which
services may be contributed. The corresponding services are instantiated
eagerly, as the Registry is started. The order in which services are
instantiated is not specified. <schema>
[junit]
<element
[junit]
name="load">Identifies a service that will be eagerly
loaded.<attribute
[junit]
name="service-id" required="true"
translator="service-point"/>
[junit]
<rules> [junit]
<push-attribute attribute="service-id"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point>
[junit] <service-point
id="hivemind.EagerLoad"
[junit]
interface="java.lang.Runnable"
[junit]
uid="23">Service that performs eager loading of other services.
This service is contributed into the hivemind.Startup
configuration.<invoke-factory
[junit]
model="primitive" service-id="hivemind.BuilderFactory">
[junit]
<construct
class="org.apache.hivemind.service.impl.EagerLoader"> [junit]
<set-configuration configuration-id="EagerLoad"
property="servicePoints"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <contribution
configuration-id="hivemind.Startup" uid="24">
[junit]
<service service-id="EagerLoad"/>
[junit] </contribution>
[junit] <configuration-point
id="hivemind.ObjectProviders" uid="25">Services that can
provide objects for the object translator.<schema>
[junit]
<element name="provider">
[junit]
<attribute name="prefix" required="true">The prefix
used to identify the provider.</attribute>
[junit]
<attribute name="service-id" required="true"
translator="service">The object providing
service.</attribute>
[junit]
<conversion
class="org.apache.hivemind.service.impl.ObjectProviderContribution">
[junit]
<map attribute="service-id" property="provider"/>
[junit]
</conversion>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point>
[junit] <service-point
id="hivemind.ObjectTranslator"
[junit]
interface="org.apache.hivemind.schema.Translator"
[junit]
uid="26">Translator that works with ObjectProviders to find or
create objects.<invoke-factory
service-id="hivemind.BuilderFactory">
[junit]
<construct
[junit]
class="org.apache.hivemind.service.impl.ObjectTranslator"
initialize-method="initializeService">
[junit]
<set-configuration
[junit]
configuration-id="ObjectProviders"
property="contributions"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <service-point
id="hivemind.ServiceObjectProvider"
[junit]
interface="org.apache.hivemind.service.ObjectProvider"
[junit]
uid="27">ObjectProvider that can locate services. Mapped to the
service: prefix.<create-instance class="org.apache.hivemind.service.impl.ServiceObjectProvider"/>
[junit] </service-point>
[junit] <service-point
id="hivemind.ConfigurationObjectProvider"
[junit]
interface="org.apache.hivemind.service.ObjectProvider" [junit]
uid="28">ObjectProvider that can locate configurations. Mapped to
the configuration: prefix.<create-instance class="org.apache.hivemind.service.impl.ConfigurationObjectProvider"/>
[junit] </service-point>
[junit] <service-point
id="hivemind.ObjectInstanceObjectProvider"
[junit]
interface="org.apache.hivemind.service.ObjectProvider"
[junit]
uid="29">ObjectProvider that will instantiate a new instance of a
provided class. Mapped to the instance: prefix.<create-instance
class="org.apache.hivemind.service.impl.ObjectInstanceObjectProvider"/>
[junit] </service-point>
[junit] <service-point
id="hivemind.ServicePropertyObjectProvider"
[junit]
interface="org.apache.hivemind.service.ObjectProvider"
[junit]
uid="30">ObjectProvider that will extra a property from a
service. Mapped to the service-property:...> but was:<...
version="1.0.0">
The master
[junit] module for HiveMind,
defining core, universal functionality.
[junit]
<configuration-point id="hivemind.SymbolSources"
uid="2">
[junit]
Provides a list of sources for values of substitution
[junit]
symbols.
<schema>
[junit]
<element name="source">Describes a single source of
[junit]
symbol values. <attribute name="name"
[junit]
required="true"> A unique name used
to
[junit]
identify the source, used when ordering the sources.</attribute>
[junit]
<attribute name="class" translator="instance">
[junit]
Name of a class implementing the SymbolSource interface.</attribute>
[junit]
<attribute name="service-id" translator="service">
[junit]
Service configuration id for a service which
[junit]
implements the
SymbolSource interface.</attribute>
[junit]
<attribute name="before"> A
list of the names
[junit]
of other sources this source should
precede.</attribute> [junit] <attribute
name="after"> A list of the
names
[junit]
of other sources this source should follow.</attribute>
[junit]
<conversion class="org.apache.hivemind.SymbolSourceContribution">
[junit]
<map attribute="class" property="source"/>
[junit]
<map attribute="service-id" property="source"/>
[junit]
<map attribute="before" property="followingNames"/>
[junit]
<map attribute="after" property="precedingNames"/>
[junit]
</conversion>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point> [junit]
<contribution configuration-id="hivemind.SymbolSources"
uid="3">
[junit]
<source before="hivemind.FactoryDefaults"
[junit]
name="hivemind.ApplicationDefaults"
service-id="ApplicationDefaultsSymbolSource"/>
[junit]
<source name="hivemind.FactoryDefaults"
service-id="FactoryDefaultsSymbolSource"/>
[junit] </contribution>
[junit] <schema
id="hivemind.Defaults" uid="4">
[junit]
<element name="default">Provides a default symbol
[junit]
value.<attribute name="symbol" required="true">The
[junit]
id of the symbol to define a default value for.</attribute> [junit]
<attribute name="value" required="true">The value for
[junit]
the symbol.</attribute>
[junit]
<conversion
class="org.apache.hivemind.service.impl.FactoryDefault"/>
[junit]
</element>
[junit] </schema>
[junit] <configuration-point
id="hivemind.FactoryDefaults"
[junit]
schema-id="hivemind.Defaults" uid="5">Extension point
for
[junit]
setting "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
[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 "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
[junit]
FactoryDefaults configuration point.<invoke-factory
service-id="hivemind.BuilderFactory">
[junit]
<construct class="org.apache.hivemind.service.impl.DefaultsSymbolSource">
[junit]
<set-configuration
[junit]
configuration-id="FactoryDefaults" property="defaults"/>
[junit]
</construct> [junit]
</invoke-factory>
[junit] </service-point>
[junit] <configuration-point
id="hivemind.ApplicationDefaults"
[junit]
schema-id="hivemind.Defaults" uid="7">Extension point
for
[junit]
setting application defaults; these defaults will override
[junit]
factory defaults specified in the FactoryDefaults
[junit]
configuration point.</configuration-point>
[junit] <service-point
id="hivemind.ApplicationDefaultsSymbolSource"
[junit]
interface="org.apache.hivemind.SymbolSource"
[junit]
uid="8">SymbolSource implementation driven by the
[junit]
ApplicationDefaults configuration point.<invoke-factory
service-id="hivemind.BuilderFactory">
[junit]
<construct
class="org.apache.hivemind.service.impl.DefaultsSymbolSource">
[junit]
<set-configuration
[junit]
configuration-id="ApplicationDefaults"
property="defaults"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <service-point
id="hivemind.ClassFactory"
[junit]
interface="org.apache.hivemind.service.ClassFactory"
[junit]
uid="9">Wrapper around Javassist used to dynamically create
[junit]
classes such as service interceptors.<create-instance
[junit]
class="org.apache.hivemind.service.impl.ClassFactoryImpl"
model="primitive"/>
[junit] </service-point>
[junit] <schema
id="hivemind.MethodFilter" uid="10">Used primarily as [junit]
parameters to interceptor factories (such as
[junit]
LoggingInterceptor) to define which methods of service
[junit]
interface are to be included and which excluded.<element
[junit]
name="include">Identifies a method, or set of methods,
[junit]
to be included.<attribute name="method"
[junit]
required="true">A method pattern used to identify
[junit]
the affected methods.</attribute>
[junit]
<rules>
[junit]
<create-object
class="org.apache.hivemind.service.MethodContribution"/>
[junit]
<set-property property="include" value="true"/>
[junit]
<read-attribute attribute="method"
property="methodPattern"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="exclude">Identifies a method, or set of
[junit]
methods, to be excluded.<attribute name="method"
[junit]
required="true">A method pattern used to identify
[junit]
the affected methods.</attribute>
[junit]
<rules>
[junit]
<create-object
class="org.apache.hivemind.service.MethodContribution"/>
[junit]
<set-property property="include" value="false"/>
[junit]
<read-attribute attribute="method"
property="methodPattern"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit] </schema>
[junit] <service-point
id="hivemind.LoggingInterceptor"
[junit]
interface="org.apache.hivemind.ServiceInterceptorFactory"
[junit]
parameters-schema-id="hivemind.MethodFilter" uid="11">An
[junit]
interceptor factory for adding method-level logging to a
[junit]
service. Logging occurs at level DEBUG and uses the service
[junit]
id as the logger. Method entry (with parameters) and method
[junit]
exit (with return value) are logged, as are any
[junit]
exceptions.<invoke-factory model="primitive"
service-id="hivemind.BuilderFactory">
[junit]
<construct
class="org.apache.hivemind.service.impl.LoggingInterceptorFactory">
[junit]
<set-service
property="factory" service-id="ClassFactory"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <service-point
id="hivemind.BuilderFactory" [junit]
interface="org.apache.hivemind.ServiceImplementationFactory"
[junit]
uid="12">Used to construct a service from a class name and
[junit]
optional constructor parameters and properties.<parameters-schema>
[junit]
<element name="construct">A single construct element
[junit]
identifies the class to instantiate.<attribute
[junit]
name="class" required="true">The name of the
[junit]
class to instantiate.</attribute>
[junit]
<attribute name="messages-property">The name of a
[junit]
property to assign invoking module's messages to.</attribute> [junit]
<attribute name="log-property">The name of a
[junit]
property to assign the Log instance for the
[junit]
service to. The Log instance is built from the
[junit] service
configuration point id.</attribute>
[junit]
<attribute name="service-id-property">The name of a
[junit]
property to assign the configuration point id of
[junit]
the service to.</attribute>
[junit]
<attribute name="initialize-method">The name of a
[junit]
public instance method (taking no parameters) to
[junit]
be invoked after the service is constructed.</attribute>
[junit]
<attribute name="error-handler-property">The name of
[junit]
a property to assign the module's ErrorHandler to.</attribute>
[junit]
<attribute name="class-resolver-property">The name
[junit]
of a property to assign the module's
[junit]
ClassResolver to.</attribute>
[junit]
<attribute name="autowire-services"
[junit]
translator="boolean,default=true">If true (the
[junit]
default), the BuilderFactory will attempt to
[junit]
connect unclaimed properties to services.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderParameter"/>
[junit]
<read-attribute attribute="class"
property="className"/> [junit] <read-attribute
attribute="initialize-method"
property="initializeMethod"/>
[junit]
<read-attribute attribute="autowire-services"
[junit]
property="autowireServices" skip-if-null="false"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>
[junit]
<read-attribute attribute="messages-property"
property="propertyName"/>
[junit]
<invoke-parent depth="1" method="addProperty"/>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderLogFacet"/>
[junit]
<read-attribute attribute="log-property"
property="propertyName"/>
[junit]
<invoke-parent depth="2" method="addProperty"/>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>
[junit]
<read-attribute attribute="service-id-property"
property="propertyName"/>
[junit]
<invoke-parent depth="3"
method="addProperty"/>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>
[junit]
<read-attribute
[junit]
attribute="error-handler-property"
property="propertyName"/>
[junit]
<invoke-parent depth="4" method="addProperty"/>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>
[junit]
<read-attribute
[junit]
attribute="class-resolver-property" property="propertyName"/>
[junit]
<invoke-parent depth="5" method="addProperty"/>
[junit]
</rules>
[junit]
<element name="string">A string value constructor
parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element> [junit]
<element content-translator="int" name="int">An
[junit]
integer value constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="long" name="long">A
[junit]
long (64-bit) integer value constructor parameter.<rules>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/> [junit] </rules>
[junit]
</element>
[junit]
<element
[junit]
content-translator="enumeration,java.lang.Boolean,true=TRUE,false=FALSE"
[junit]
name="boolean">A boolean value
constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="service" [junit]
name="service">A constructor parameter providing
[junit]
the identified HiveMind service.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="configuration"
[junit]
name="configuration">A constructor parameter
[junit]
providing a HiveMind configuration point (as a List).<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element content-translator="resource"
[junit]
name="resource">A Resource constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit] <read-content
property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element
name="log">Placeholder for a Log instance
[junit]
for the constructed service as constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderLogFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="error-handler">Placeholder for the
[junit]
module's ErrorHandler instance passed in as a
[junit]
constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderErrorHandlerFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="class-resolver">Placeholder for the
[junit]
module's ClassResolver instance passed in as a
[junit]
constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderClassResolverFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="messages">Placeholder for a Messages
[junit]
object (from the invoking module) as constructor parameter.<rules>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderMessagesFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="service-id">Placeholder for the
[junit]
service id (of the constructed service) as
[junit]
constructor parameter.<rules> [junit] <create-object
class="org.apache.hivemind.service.impl.BuilderServiceIdFacet"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit] </element>
[junit]
<element content-translator="object"
[junit]
name="object">Placeholder for an object provided
[junit]
by the object translator as a constructor parameter.<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-content property="value"/>
[junit]
<invoke-parent depth="6" method="addParameter"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="set">Configures a property of the
[junit]
service instance.<attribute name="property"
[junit]
required="true">The name of a property of
[junit]
the service instance to configure.</attribute>
[junit]
<attribute name="value" required="true">The
[junit]
value to set the property to. The value will
[junit]
be converted to the type of the property.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderSmartPropertyFacet"/>
[junit]
<read-attribute attribute="property" property="propertyName"/>
[junit]
<read-attribute attribute="value" property="attributeValue"/>
[junit]
<invoke-parent depth="6" method="addProperty"/>
[junit]
</rules> [junit]
</element>
[junit]
<element name="set-object">Configures a property of
[junit]
the service instance using an object.<attribute
[junit]
name="property" required="true">The name of
[junit]
a property of the service instance to configure.</attribute>
[junit]
<attribute name="value" required="true"
[junit]
translator="object">The value to set the
[junit]
property to, in the form of a prefix and a
[junit]
locator for that prefix. Prefixes are
[junit]
defined by the ObjectProviders configuration
[junit]
point. Each prefix provides a different
[junit]
interpretation for the locator, such as a
[junit]
service id or class name.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-attribute attribute="property" property="propertyName"/>
[junit]
<read-attribute attribute="value" property="value"/>
[junit]
<invoke-parent depth="6" method="addProperty"/>
[junit]
</rules> [junit]
</element>
[junit]
<element name="set-service">Configures a property of
[junit]
the service instance to another
[junit]
service.<attribute name="property"
[junit]
required="true">The name of the property of
[junit]
the service instance to configure.</attribute> [junit]
<attribute name="service-id" required="true"
[junit]
translator="service">The id of the service.</attribute>
[junit]
<rules>
[junit]
<create-object
class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-attribute attribute="property" property="propertyName"/>
[junit]
<read-attribute attribute="service-id" property="value"/>
[junit]
<invoke-parent depth="6" method="addProperty"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="set-configuration">Configures a
[junit]
property of the service instance to the elements
[junit]
contributed to an configuration point.<attribute
[junit]
name="property" required="true">The name of
[junit]
the property of the service instance to configure.</attribute>
[junit]
<attribute name="configuration-id"
[junit]
required="true" [junit]
translator="configuration">The id of the
[junit]
configuration point to access.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-attribute attribute="property" property="propertyName"/>
[junit]
<read-attribute attribute="configuration-id" property="value"/>
[junit]
<invoke-parent depth="6" method="addProperty"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="set-resource">Configures a property
[junit]
of the service instance to a resource.<attribute
[junit]
name="property" required="true">The name of [junit]
the property of the service instance to configure.</attribute>
[junit]
<attribute name="path" required="true"
[junit]
translator="resource">The path, relative to
[junit]
the module's deployment descriptor, of the resource.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.BuilderPropertyFacet"/>
[junit]
<read-attribute attribute="property" property="propertyName"/>
[junit]
<read-attribute attribute="path" property="value"/>
[junit]
<invoke-parent depth="6" method="addProperty"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="event-listener">Registers the new
[junit]
services as an event listener for events
[junit]
produced by the specified service.<attribute
[junit]
name="service-id" required="true"
[junit]
translator="service">The service which will
[junit]
produce events.</attribute>
[junit]
<attribute name="event-set">If given, the name
[junit]
of an event set for which the service will [junit]
be registered. If omitted, the service will
[junit]
be registered for all events sets for which
[junit]
it implements the necessary listener interfaces.</attribute>
[junit]
<rules>
[junit]
<create-object class="org.apache.hivemind.service.impl.EventRegistration"/>
[junit]
<read-attribute attribute="service-id" property="producer"/>
[junit]
<read-attribute attribute="event-set" property="eventSetName"/>
[junit]
<invoke-parent depth="6" method="addEventRegistration"/>
[junit]
</rules>
[junit]
</element>
[junit]
</element>
[junit]
</parameters-schema>
[junit]
<create-instance
[junit]
class="org.apache.hivemind.service.impl.BuilderFactory" model="primitive"/>
[junit] </service-point>
[junit] <service-point
id="hivemind.ThreadEventNotifier"
[junit]
interface="org.apache.hivemind.service.ThreadEventNotifier"
[junit]
uid="13">Service used by other services to be alerted when a
[junit]
thread is cleaned up (typically, at the end of a request or
[junit]
transaction).<create-instance
class="org.apache.hivemind.service.impl.ThreadEventNotifierImpl"/> [junit] </service-point>
[junit] <service-point
id="hivemind.ThreadLocalStorage"
[junit]
interface="org.apache.hivemind.service.ThreadLocalStorage"
[junit]
uid="14">Service which manages a thread-local map of data
[junit]
items. This can be used for temporary storage of information
[junit]
when local variables can't be used. All stored items are
[junit]
released when the thread is cleaned up.<invoke-factory service-id="hivemind.BuilderFactory">
[junit]
<construct
class="org.apache.hivemind.service.impl.ThreadLocalStorageImpl">
[junit]
<set-service property="notifier"
service-id="ThreadEventNotifier"/>
[junit] </construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <configuration-point
id="hivemind.ServiceModels"
[junit]
uid="15">Defines service models, providing a name and a [junit]
class for each.<schema>Describes contributions that define
[junit]
new types of service models by providing service model
[junit]
factories.<element name="service-model">
[junit]
<attribute name="name" required="true">The name of
[junit]
the service model, which must be unique.</attribute>
[junit]
<attribute name="class" required="false" [junit]
translator="instance">The name of the service
[junit]
model factory class to instantiate.</attribute>
[junit]
<conversion
class="org.apache.hivemind.impl.ServiceModelContribution">
[junit]
<map attribute="class" property="factory"/>
[junit]
</conversion>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point> [junit] <contribution
configuration-id="hivemind.ServiceModels" uid="16">
[junit]
<service-model
[junit]
class="org.apache.hivemind.impl.servicemodel.PrimitiveServiceModelFactory"
name="primitive"/>
[junit] <service-model
[junit]
class="org.apache.hivemind.impl.servicemodel.SingletonServiceModelFactory"
name="singleton"/>
[junit]
<service-model
[junit]
class="org.apache.hivemind.impl.servicemodel.ThreadedServiceModelFactory"
name="threaded"/>
[junit]
<service-model
[junit]
class="org.apache.hivemind.impl.servicemodel.PooledServiceModelFactory"
name="pooled"/>
[junit] </contribution>
[junit] <configuration-point
id="hivemind.Translators" uid="17">Used to
[junit]
define new translators that can be used in contribution
[junit]
conversion rules. Translators must have unique
[junit]
names.<schema>Maps translator names to translator
[junit]
classes.<element name="translator">Maps a translator
[junit]
name to a translator class.<attribute name="name"
[junit]
required="true">A unique name for a translator.</attribute>
[junit]
<attribute name="class" required="false"
[junit]
translator="class">The class to instantiate, [junit]
which must implement the Translator interface.</attribute>
[junit]
<attribute name="service-id" required="false"
[junit]
translator="service">A service which implements [junit]
the Translator interface.</attribute>
[junit]
<conversion
class="org.apache.hivemind.impl.TranslatorContribution">
[junit]
<map attribute="class" property="translatorClass"/>
[junit]
<map attribute="service-id" property="translator"/>
[junit]
</conversion>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point> [junit]
<contribution configuration-id="hivemind.Translators"
uid="18">
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.BooleanTranslator"
name="boolean"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.IntTranslator"
name="int"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.EnumerationTranslator"
name="enumeration"/> [junit] <translator
[junit]
class="org.apache.hivemind.schema.rules.ConfigurationTranslator"
name="configuration"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.ResourceTranslator"
name="resource"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.LongTranslator"
name="long"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.DoubleTranslator"
name="double"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.ServicePointTranslator"
name="service-point"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.QualifiedIdTranslator"
name="qualified-id"/>
[junit]
<translator
[junit]
class="org.apache.hivemind.schema.rules.IdListTranslator"
name="id-list"/> [junit]
<translator name="object"
service-id="ObjectTranslator"/>
[junit] </contribution>
[junit] <service-point
id="hivemind.ShutdownCoordinator"
[junit]
interface="org.apache.hivemind.ShutdownCoordinator"
[junit]
uid="19">A source of event notifications for when the
[junit]
Registry is shutdown.<invoke-factory
service-id="hivemind.BuilderFactory">
[junit]
<construct class="org.apache.hivemind.impl.ShutdownCoordinatorImpl">
[junit]
<log/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <configuration-point
id="hivemind.Startup" uid="20">A [junit]
configuration to which startup objects may be contributed
[junit]
(as objects or services). Startup object must implement the
[junit]
java.lang.Runnable interface. Order of execution is [junit] expliclitly
NOT defined.<schema>
[junit]
<element name="service">Defines a service that
[junit]
implements the Runnable interface.<attribute
[junit]
name="service-id" translator="service">The name
[junit]
of a service implementing the Runnable interface.</attribute>
[junit]
<rules>
[junit]
<push-attribute attribute="service-id"/>
[junit] <invoke-parent
method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit]
<element name="runnable">Allows an instance of a class
[junit]
implementing Runnable to be contributed.<attribute
[junit]
name="class" translator="instance">The name of a
[junit]
class implementing Runnable.</attribute> [junit]
<rules>
[junit]
<push-attribute attribute="class"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element> [junit]
</schema>
[junit]
</configuration-point>
[junit] <service-point
id="hivemind.Startup"
[junit]
interface="java.lang.Runnable" uid="21">A service which
is
[junit]
used to bootstrap HiveMind; it obtains the hivemind.Startup
[junit]
configuration and runs each Runnable object or service
[junit]
within.<invoke-factory service-id="hivemind.BuilderFactory">
[junit]
<construct class="org.apache.hivemind.impl.StartupImpl">
[junit]
<set-configuration configuration-id="Startup"
property="runnables"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <configuration-point
id="hivemind.EagerLoad"
[junit]
uid="22">Configuration to which services may be contributed.
[junit]
The corresponding services are instantiated eagerly, as the
[junit] Registry
is started. The order in which services are
[junit]
instantiated is not specified. <schema>
[junit]
<element name="load">Identifies a service that will be
[junit]
eagerly loaded.<attribute name="service-id"
[junit]
required="true" translator="service-point"/>
[junit]
<rules>
[junit]
<push-attribute attribute="service-id"/>
[junit]
<invoke-parent method="addElement"/>
[junit]
</rules>
[junit]
</element>
[junit]
</schema>
[junit]
</configuration-point> [junit]
<service-point id="hivemind.EagerLoad"
[junit]
interface="java.lang.Runnable" uid="23">Service that
[junit]
performs eager loading of other services. This service is
[junit]
contributed into the hivemind.Startup
[junit]
configuration.<invoke-factory model="primitive"
service-id="hivemind.BuilderFactory">
[junit]
<construct
class="org.apache.hivemind.service.impl.EagerLoader">
[junit]
<set-configuration configuration-id="EagerLoad"
property="servicePoints"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <contribution
configuration-id="hivemind.Startup" uid="24">
[junit]
<service service-id="EagerLoad"/>
[junit] </contribution>
[junit] <configuration-point
id="hivemind.ObjectProviders"
[junit]
uid="25">Services that can provide objects for the object
translator.<schema>
[junit]
<element name="provider">
[junit]
<attribute name="prefix" required="true">The prefix
[junit]
used to identify the provider.</attribute> [junit]
<attribute name="service-id" required="true"
[junit]
translator="service">The object providing
service.</attribute>
[junit]
<conversion
class="org.apache.hivemind.service.impl.ObjectProviderContribution">
[junit]
<map attribute="service-id" property="provider"/>
[junit]
</conversion> [junit]
</element>
[junit]
</schema>
[junit]
</configuration-point>
[junit] <service-point
id="hivemind.ObjectTranslator"
[junit]
interface="org.apache.hivemind.schema.Translator" [junit]
uid="26">Translator that works with ObjectProviders to find
[junit]
or create objects.<invoke-factory
service-id="hivemind.BuilderFactory">
[junit]
<construct
[junit]
class="org.apache.hivemind.service.impl.ObjectTranslator"
initialize-method="initializeService">
[junit]
<set-configuration
[junit]
configuration-id="ObjectProviders"
property="contributions"/>
[junit]
</construct>
[junit]
</invoke-factory>
[junit] </service-point>
[junit] <service-point
id="hivemind.ServiceObjectProvider"
[junit]
interface="org.apache.hivemind.service.ObjectProvider" [junit] uid="27">ObjectProvider
that can locate services. Mapped to
[junit]
the service: prefix.<create-instance
class="org.apache.hivemind.service.impl.ServiceObjectProvider"/>
[junit] </service-point>
[junit] <service-point
id="hivemind.ConfigurationObjectProvider"
[junit]
interface="org.apache.hivemind.service.ObjectProvider"
[junit]
uid="28">ObjectProvider that can locate configurations.
[junit]
Mapped to the configuration: prefix.<create-instance
class="org.apache.hivemind.service.impl.ConfigurationObjectProvider"/>
[junit] </service-point>
[junit] <service-point
id="hivemind.ObjectInstanceObjectProvider"
[junit]
interface="org.apache.hivemind.service.ObjectProvider"
[junit]
uid="29">ObjectProvider that will instantiate a new instance
[junit]
of a provided class. Mapped to the instance:
[junit]
prefix.<create-instance
class="org.apache.hivemind.service.impl.ObjectInstanceObjectProvider"/>
[junit] </service-point>
[junit] <service-point
id="hivemind.ServicePropertyObjectProvider" [junit] interface="org.apache.hivemind.service.ObjectProvider"
[junit]
uid="30">ObjectProvider that will extra a property from a
[junit]
service. Mapped to the service-property:
[junit]
...> [junit] at
hivemind.test.ant.TestConstructRegistry.compare(TestConstructRegistry.java:228) [junit] at
hivemind.test.ant.TestConstructRegistry.testJars(TestConstructRegistry.java:218) [junit] at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [junit] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [junit] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) |
- Re: Ant build error Christopher Cheng
- Re: Ant build error Igor A. Deruga
- Re: Ant build error Knut Wannheden
