hlship 2004/08/09 06:24:49
Modified: src/documentation/content/xdocs links.ent
framework/src/documentation/content/xdocs/hivemind
ObjectProviders.xml
library/src/documentation/content/xdocs/hivemind-lib
PipelineFactory.xml
examples/src/descriptor/META-INF panorama.startup.xml
panorama.xml
library/src/test/org/apache/hivemind/lib/pipeline
Pipeline.xml
library/src/descriptor/META-INF hivemodule.xml
Log:
Simply the contributions format for PipelineFactory, to take advantage of
object references.
Revision Changes Path
1.12 +3 -1
jakarta-hivemind/src/documentation/content/xdocs/links.ent
Index: links.ent
===================================================================
RCS file:
/home/cvs/jakarta-hivemind/src/documentation/content/xdocs/links.ent,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- links.ent 16 Jul 2004 23:15:39 -0000 1.11
+++ links.ent 9 Aug 2004 13:24:48 -0000 1.12
@@ -131,6 +131,8 @@
<!-- Entities for common services and configurations. -->
+<!ENTITY object-reference '<link href="site:hivemind.ObjectProviders">object
reference</link>'>
+
<!ENTITY hivemind.ApplicationDefaults '<link
href="site:hivemind.ApplicationDefaults">hivemind.ApplicationDefaults</link>'>
<!ENTITY hivemind.BuilderFactory '<link
href="site:hivemind.BuilderFactory">hivemind.BuilderFactory</link>'>
<!ENTITY hivemind.EagerLoad '<link
href="site:hivemind.EagerLoad">hivemind.EagerLoad</link>'>
1.4 +13 -1
jakarta-hivemind/framework/src/documentation/content/xdocs/hivemind/ObjectProviders.xml
Index: ObjectProviders.xml
===================================================================
RCS file:
/home/cvs/jakarta-hivemind/framework/src/documentation/content/xdocs/hivemind/ObjectProviders.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ObjectProviders.xml 6 Aug 2004 14:16:40 -0000 1.3
+++ ObjectProviders.xml 9 Aug 2004 13:24:48 -0000 1.4
@@ -29,7 +29,19 @@
configuration drives the <code>object</code>
translator. Contributions
define an object <em>provider</em> in terms of a prefix (such as
<code>service</code>)
and a service that implements the <code>ObjectProvider</code>
interface.
- .</p>
+ </p>
+ <p>
+ Object <em>providers</em> exist to support <em>object references</em>.
Object references
+ are a way to contribute objects that may be references to services, or
to other objects, or may even be created
+ on the spot. This is often used with the &hivemind.BuilderFactory;'s
<set-object> element.
+ </p>
+
+ <p>
+ An object reference consists of a <em>prefix</em> and a
<em>locator</em> seperated by a colon. The interpretation of
+ the locator is different for each provider. The prefix determines
which provider will be utilized to interpret the
+ locator.
+ </p>
+
<p>The contribution format defines the name and class for each
service
model:</p>
<source><![CDATA[
1.5 +16 -28
jakarta-hivemind/library/src/documentation/content/xdocs/hivemind-lib/PipelineFactory.xml
Index: PipelineFactory.xml
===================================================================
RCS file:
/home/cvs/jakarta-hivemind/library/src/documentation/content/xdocs/hivemind-lib/PipelineFactory.xml,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- PipelineFactory.xml 8 Aug 2004 13:16:26 -0000 1.4
+++ PipelineFactory.xml 9 Aug 2004 13:24:48 -0000 1.5
@@ -57,7 +57,8 @@
src="images/PipelineCallingSequence.png"/>
<p> The bridge objects implement the <em>service interface</em> (and are
created dynamically at runtime). The <em>terminator</em> at the end
also
- implements the service interface. This can be an object or a service;
if
+ implements the service interface. This is an &object-reference; (it
can be
+ an object or a service) if
no terminator is specified, a <link
href="site:hivemind.lib.DefaultImplementationBuilder">default
implementation</link> is created and used. Only a single terminator is
@@ -73,14 +74,14 @@
<title>Usage</title>
<p> The factory expects a single parameter element: </p>
<source><![CDATA[
-<create-pipeline filter-interface="..." configuration-id="..."
terminator-service-id="..."/>]]></source>
+<create-pipeline filter-interface="..." configuration-id="..."
terminator="..."/>]]></source>
<p> The <code>filter-interface</code> attribute is the complete class
name of the filter interface. </p>
<p>The <code>configuration-id</code> is the id of the companion
configuration (used to define filters).</p>
- <p>The optional <code>terminator-service-id</code> attribute is used
to
- specify a terminator service directly (a terminator may also be
- contributed into the pipline configuration).</p>
+ <p>The optional <code>terminator</code> attribute is used to
+ specify an &object-reference;. A terminator may also be
+ contributed into the pipeline configuration.</p>
</section>
<section>
<title>Configuration</title>
@@ -92,45 +93,32 @@
<section>
<title>Contributions</title>
<p>Contributions into the configuration are used to specify the
filters
- and the terminator. Filters and terminators can be specified as
- services or as objects.</p>
+ and the terminator.</p>
<section>
<title>filter</title>
<source><![CDATA[
-<filter service-id="..." before="..." after="..."/>]]> </source>
- <p>Contributes a filter as a service. The optional
<code>before</code>
+<filter name="..." before="..." after="..." object="..."/>]]> </source>
+ <p>Contributes a filter. The optional <code>before</code>
and <code>after</code> attributes are lists of the ids of other
filters in the pipeline, used to set the ordering of the filters.
They may be comma-seperated lists of filter ids (or filter names),
or
simple <code>*</code> to indicate absolute positioning. </p>
+ <p>
+ The <code>object</code> attribute is the filter object itself, an
+ &object-reference; to an object implementing the <em>filter
interface</em>.
+ </p>
</section>
<section>
- <title>filter-object</title>
- <source><![CDATA[
-<filter-object name="..." object="..." before="..." after="..."/>]]></source>
- <p>Contributes a filter as an instance of the provided class. The
- <code>name</code> attribute is required and will be qualified with
- the contributing module id. The <code>object</code> attribute
- defines the object that will act as a filter. <code>before</code>
and
- <code>after</code> are optional, as with the <filter>
- element.</p>
- </section>
- <section>
<title>terminator</title>
- <source><![CDATA[<terminator service-id="..."/>]]></source>
- <p> Specifies the terminator service for the pipeline. Only a single
+ <source><![CDATA[<terminator object="..."/>]]></source>
+ <p> Specifies the terminator for the pipeline, as an
&object-reference; to an object
+ implementing the <em>service interface</em>. Only a single
terminator may be specified, and the terminator service provided
in
the factory parameters takes precendence over a terminator in the
configuration. </p>
</section>
- <section>
- <title>terminator-object</title>
- <source><![CDATA[<terminator-object class="..."/>]]></source>
- <p> Specifies the termnator for the pipeline as an object (intead of
as
- a service). </p>
- </section>
</section>
</body>
</document>
1.2 +49 -17
jakarta-hivemind/examples/src/descriptor/META-INF/panorama.startup.xml
Index: panorama.startup.xml
===================================================================
RCS file:
/home/cvs/jakarta-hivemind/examples/src/descriptor/META-INF/panorama.startup.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- panorama.startup.xml 3 Aug 2004 14:02:14 -0000 1.1
+++ panorama.startup.xml 9 Aug 2004 13:24:49 -0000 1.2
@@ -15,25 +15,57 @@
limitations under the License.
-->
-<module id="panorama.startup"
- version="1.0.0">Startup logic for Panorama.<schema
- id="Tasks">Defines tasks that can be executed by a task executor
service.<element
- name="task">A task which can invoke an object, or service,
that implements Executable.<attribute
- name="title" required="true">A short, user presentable
description of the task, used in logging output.</attribute>
- <attribute name="id" required="true">A unique id for the task,
which is used to set the order of execution of all tasks.</attribute>
- <attribute name="before">A comma-seperated list of task ids
whose execution should follow this task, or * to indicate that this task must
run first.</attribute>
- <attribute name="after">A comma-seperated list of task ids whose
execution should precede this tasks execution, or * to indicate that this task
must run last.</attribute>
- <attribute name="executable" required="true"
translator="object">An object or service that implements Executable.</attribute>
+<module id="panorama.startup" version="1.0.0">
+
+ Startup logic for Panorama.
+
+ <schema id="Tasks">
+ Defines tasks that can be executed by a task executor service.
+
+ <element name="task">
+ A task which can invoke an object, or service, that implements
Executable.
+ <attribute name="title" required="true">
+ A short, user presentable description of the task, used in
logging output.
+ </attribute>
+
+ <attribute name="id" required="true">
+ A unique id for the task, which is used to set the order of
execution of all tasks.
+ </attribute>
+
+ <attribute name="before">
+ A comma-seperated list of task ids whose execution should follow
this task, or * to indicate that this task must run first.
+ </attribute>
+ <attribute name="after">
+ A comma-seperated list of task ids whose execution should
precede this tasks execution,
+ or * to indicate that this task must run last.
+ </attribute>
+ <attribute name="executable" required="true" translator="object">
+ An object or service that implements Executable.
+ </attribute>
<conversion class="com.panorama.startup.impl.Task"/>
</element>
- <element
- name="static-task">A task which can invoke an object, or
service, that implements Executable.<attribute
- name="title" required="true">A short, user presentable
description of the task, used in logging output.</attribute>
- <attribute name="id" required="true">A unique id for the task,
which is used to set the order of execution of all tasks.</attribute>
- <attribute name="before">A comma-seperated list of task ids
whose execution should follow this task, or * to indicate that this task must
run first.</attribute>
- <attribute name="after">A comma-seperated list of task ids whose
execution should precede this tasks execution, or * to indicate that this task
must run last.</attribute>
- <attribute name="class" required="true" translator="class">A
class containing a public static method to execute.</attribute>
- <attribute name="method">The name of a public static method of
the class; if not specified, 'init' is used.</attribute>
+ <element name="static-task">
+ A task which can invoke an object, or service, that implements
Executable.
+ <attribute name="title" required="true">
+ A short, user presentable description of the task, used in
logging output.
+ </attribute>
+ <attribute name="id" required="true">
+ A unique id for the task, which is used to set the order of
execution of all tasks.
+ </attribute>
+ <attribute name="before">
+ A comma-seperated list of task ids whose execution should
follow this task,
+ or * to indicate that this task must run first.
+ </attribute>
+ <attribute name="after">
+ A comma-seperated list of task ids whose execution should
precede this tasks execution,
+ or * to indicate that this task must run last.
+ </attribute>
+ <attribute name="class" required="true" translator="class">
+ A class containing a public static method to execute.
+ </attribute>
+ <attribute name="method">
+ The name of a public static method of the class; if not
specified, 'init' is used.
+ </attribute>
<rules>
<create-object class="com.panorama.startup.impl.Task"/>
<invoke-parent method="addElement"/>
1.2 +5 -2
jakarta-hivemind/examples/src/descriptor/META-INF/panorama.xml
Index: panorama.xml
===================================================================
RCS file:
/home/cvs/jakarta-hivemind/examples/src/descriptor/META-INF/panorama.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- panorama.xml 3 Aug 2004 14:02:14 -0000 1.1
+++ panorama.xml 9 Aug 2004 13:24:49 -0000 1.2
@@ -15,8 +15,11 @@
limitations under the License.
-->
-<module id="panorama"
- version="1.0.0">The Panorama example application, which includes
several sub-modules.<sub-module descriptor="panorama.startup.xml"/>
+<module id="panorama" version="1.0.0">
+
+ The Panorama example application, which includes several sub-modules.
+
+ <sub-module descriptor="panorama.startup.xml"/>
<sub-module descriptor="panorama.mail.xml"/>
<sub-module descriptor="panorama.discussions.xml"/>
</module>
1.2 +4 -4
jakarta-hivemind/library/src/test/org/apache/hivemind/lib/pipeline/Pipeline.xml
Index: Pipeline.xml
===================================================================
RCS file:
/home/cvs/jakarta-hivemind/library/src/test/org/apache/hivemind/lib/pipeline/Pipeline.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Pipeline.xml 3 Aug 2004 14:02:16 -0000 1.1
+++ Pipeline.xml 9 Aug 2004 13:24:49 -0000 1.2
@@ -18,8 +18,8 @@
<module id="hivemind.lib.test" version="1.0.0">
<configuration-point id="StandardPipeline"
schema-id="hivemind.lib.Pipeline"/>
<contribution configuration-id="StandardPipeline">
- <filter service-id="MultiplyFilter"/>
- <terminator service-id="Terminator"/>
+ <filter name="multiply" object="service:MultiplyFilter"/>
+ <terminator object="service:Terminator"/>
</contribution>
<service-point id="MultiplyFilter"
interface="org.apache.hivemind.lib.pipeline.StandardFilter">
<create-instance
class="org.apache.hivemind.lib.pipeline.StandardFilterImpl"/>
@@ -39,7 +39,7 @@
</service-point>
<configuration-point id="ObjectPipeline"
schema-id="hivemind.lib.Pipeline"/>
<contribution configuration-id="ObjectPipeline">
- <filter-object name="MultiplyFilter"
object="instance:org.apache.hivemind.lib.pipeline.StandardFilterImpl"/>
- <terminator-object
object="instance:org.apache.hivemind.lib.pipeline.StandardServiceImpl"/>
+ <filter name="multiply"
object="instance:org.apache.hivemind.lib.pipeline.StandardFilterImpl"/>
+ <terminator
object="instance:org.apache.hivemind.lib.pipeline.StandardServiceImpl"/>
</contribution>
</module>
1.10 +270 -214
jakarta-hivemind/library/src/descriptor/META-INF/hivemodule.xml
Index: hivemodule.xml
===================================================================
RCS file:
/home/cvs/jakarta-hivemind/library/src/descriptor/META-INF/hivemodule.xml,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- hivemodule.xml 8 Aug 2004 13:16:26 -0000 1.9
+++ hivemodule.xml 9 Aug 2004 13:24:49 -0000 1.10
@@ -15,224 +15,280 @@
limitations under the License.
-->
-<module id="hivemind.lib"
- version="1.0.0">Standard library for HiveMind, providing commonly
used services.<service-point
- id="RemoteExceptionCoordinator"
-
interface="org.apache.hivemind.lib.RemoteExceptionCoordinator">Used to
coordinate propogation of remote exceptions (typically, to allow cached remote
data to be discarded after a remote exception).<create-instance
-
class="org.apache.hivemind.lib.impl.RemoteExceptionCoordinatorImpl"
model="primitive"/>
- </service-point>
- <service-point id="NameLookup"
- interface="org.apache.hivemind.lib.NameLookup">A service which
can perform name lookups of objects using JNDI.<invoke-factory
service-id="hivemind.BuilderFactory">
- <construct class="org.apache.hivemind.lib.impl.NameLookupImpl">
- <set property="initialFactory"
value="${java.naming.factory.initial}"/>
- <set property="URLPackages"
value="${java.naming.factory.url.pkgs}"/>
- <set property="providerURL"
value="${java.naming.provider.url}"/>
- <set-service property="coordinator"
service-id="RemoteExceptionCoordinator"/>
- <event-listener service-id="RemoteExceptionCoordinator"/>
- </construct>
- </invoke-factory>
- </service-point>
- <contribution configuration-id="hivemind.FactoryDefaults">
- <default symbol="java.naming.factory.initial" value=""/>
- <default symbol="java.naming.factory.url.pkgs" value=""/>
- <default symbol="java.naming.provider.url" value=""/>
- </contribution>
- <service-point id="EJBProxyFactory"
interface="org.apache.hivemind.ServiceImplementationFactory">
+<module id="hivemind.lib" version="1.0.0">
+
+ Standard library for HiveMind, providing commonly used services.
+
+ <service-point id="RemoteExceptionCoordinator"
interface="org.apache.hivemind.lib.RemoteExceptionCoordinator">
+
+ Used to coordinate propogation of remote exceptions (typically, to allow
cached remote data to be discarded after a remote exception).
- Core service implementation factory that constructs dynamic proxies to
EJB stateless session beans. Factory parameters are used to specify the JNDI
name of the EJB and the name of its home interface.
+ <create-instance
class="org.apache.hivemind.lib.impl.RemoteExceptionCoordinatorImpl"
model="primitive"/>
+ </service-point>
+
+ <service-point id="NameLookup"
interface="org.apache.hivemind.lib.NameLookup">
+
+ A service which can perform name lookups of objects using JNDI.
+ <invoke-factory service-id="hivemind.BuilderFactory">
+ <construct class="org.apache.hivemind.lib.impl.NameLookupImpl">
+ <set property="initialFactory"
value="${java.naming.factory.initial}"/>
+ <set property="URLPackages" value="${java.naming.factory.url.pkgs}"/>
+ <set property="providerURL" value="${java.naming.provider.url}"/>
+ <set-service property="coordinator"
service-id="RemoteExceptionCoordinator"/>
+ <event-listener service-id="RemoteExceptionCoordinator"/>
+ </construct>
+ </invoke-factory>
+ </service-point>
+
+ <contribution configuration-id="hivemind.FactoryDefaults">
+ <default symbol="java.naming.factory.initial" value=""/>
+ <default symbol="java.naming.factory.url.pkgs" value=""/>
+ <default symbol="java.naming.provider.url" value=""/>
+ </contribution>
+
+ <service-point id="EJBProxyFactory"
interface="org.apache.hivemind.ServiceImplementationFactory">
+
+ Core service implementation factory that constructs dynamic proxies to
EJB stateless session beans. Factory parameters are used to specify the JNDI
name of the EJB and the name of its home interface.
+
+ <parameters-schema>
+ <element name="construct">
+
+ Specifies parameters needed to construct the EJB Proxy.
- <parameters-schema>
- <element name="construct">
-
- Specifies parameters needed to construct the EJB Proxy.
-
- <attribute name="jndi-name" required="true">
- The JNDI Name of the EJB's home interface.
- </attribute>
- <attribute name="home-interface" required="true">
- Complete name of the EJB's home interface. The service
interface must be the remote interface.
- </attribute>
- <attribute name="name-lookup-service-id" translator="service">
- Defines an alternate name lookup service to use when
resolving JNDI names to EJB home interfaces.
- If not specified, the default service hivemind.NameLookup is
used.
- </attribute>
- <conversion
class="org.apache.hivemind.lib.impl.EJBProxyParameters">
- <map attribute="jndi-name" property="jndiName"/>
- <map attribute="home-interface"
property="homeInterfaceClassName"/>
- <map attribute="name-lookup-service-id"
property="nameLookup"/>
- </conversion>
- </element>
- </parameters-schema>
+ <attribute name="jndi-name" required="true">
+ The JNDI Name of the EJB's home interface.
+ </attribute>
+ <attribute name="home-interface" required="true">
+ Complete name of the EJB's home interface. The service interface
must be the remote interface.
+ </attribute>
+ <attribute name="name-lookup-service-id" translator="service">
+ Defines an alternate name lookup service to use when resolving JNDI
names to EJB home interfaces.
+ If not specified, the default service hivemind.NameLookup is used.
+ </attribute>
+ <conversion class="org.apache.hivemind.lib.impl.EJBProxyParameters">
+ <map attribute="jndi-name" property="jndiName"/>
+ <map attribute="home-interface" property="homeInterfaceClassName"/>
+ <map attribute="name-lookup-service-id" property="nameLookup"/>
+ </conversion>
+ </element>
+ </parameters-schema>
+
+ <invoke-factory service-id="hivemind.BuilderFactory">
+ <construct class="org.apache.hivemind.lib.impl.EJBProxyFactory"
service-id-property="pointId">
+ <set-service property="nameLookup" service-id="NameLookup"/>
+ <set-service property="classFactory"
service-id="hivemind.ClassFactory"/>
+ <set-service property="coordinator"
service-id="RemoteExceptionCoordinator"/>
+ </construct>
+ </invoke-factory>
+ </service-point>
+
+ <service-point id="SpringLookupFactory"
interface="org.apache.hivemind.ServiceImplementationFactory">
+
+ A service implementation factory that obtains service implementations
from a Spring BeanFactory.
+
+ <parameters-schema>
+
+ Parameters are used to specify the bean name and, optionally, a
non-default BeanFactory source from which to obtain the Spring BeanFactory.
+
+ <element name="lookup-bean">
+ <attribute name="name" required="true">
+ The name of the Spring bean to obtain.
+ </attribute>
+ <attribute name="source-service-id" translator="service">
+ An optional service implementing the SpringBeanFactorySource
interface.
+ </attribute>
+ <conversion class="org.apache.hivemind.lib.impl.SpringBeanParameter">
+ <map attribute="source-service-id" property="beanFactorySource"/>
+ </conversion>
+ </element>
+ </parameters-schema>
+ <invoke-factory service-id="hivemind.BuilderFactory">
+ <construct
+ class="org.apache.hivemind.lib.impl.SpringLookupFactory"
service-id-property="pointId">
+ <set-service property="defaultBeanFactorySource"
service-id="DefaultSpringBeanFactoryHolder"/>
+ </construct>
+ </invoke-factory>
+ </service-point>
+
+ <service-point id="DefaultSpringBeanFactoryHolder"
interface="org.apache.hivemind.lib.SpringBeanFactoryHolder">
+
+ Default source for Spring BeanFactories. External code can inject a
BeanFactory here, where
+ it is available to the SpringLookupFactory service.
+
+ <create-instance
class="org.apache.hivemind.lib.impl.SpringBeanFactoryHolderImpl"/>
+ </service-point>
+
+ <schema id="BeanFactoryContribution">
+ Schema used with the hivemind.lib.BeanFactoryBuilder service, to define
configuration that accepts definitions of classes
+ that may be vended by the generated BeanFactory.
+
+ <element name="bean">
+ Define one class of bean that may be vended. Beans must have either a
public constructor that takes no arguments,
+ or a public constructor that takes a single string argument (or both).
+ <attribute name="name" required="true">A unique name for the
bean.</attribute>
+ <attribute name="class" required="true" translator="class">The bean
class that will be instantiated by the factory.</attribute>
+ <attribute name="cacheable" translator="boolean">Defines whether
instances of the bean may be cached; the default is specified by the
factory.</attribute>
+ <conversion
class="org.apache.hivemind.lib.factory.BeanFactoryContribution">
+ <map attribute="class" property="beanClass"/>
+ </conversion>
+ </element>
+ </schema>
+
+ <service-point id="BeanFactoryBuilder"
interface="org.apache.hivemind.ServiceImplementationFactory">
+
+ A service which builds Object Factories. Factories are driven by a
configuration that conforms to the hivemind.lib.BeanFactoryContribution
schema.<parameters-schema>
+ <element name="factory">
+ <attribute name="vend-class" translator="class">The class (or
interface) vended by this factory. Contributions must be assignable to this
type, or will be ignored. The default value is java.lang.Object.</attribute>
+ <attribute name="default-cacheable" translator="boolean">The default
value for cacheable for any contributions that are not more specific. The
default value is true.</attribute>
+ <attribute name="configuration-id" required="true"
translator="configuration">The configuration containing the contributions that
define what classes are actually vended. The configuration must use the
hivemind.lib.BeanFactoryContribution schema.</attribute>
+ <conversion
class="org.apache.hivemind.lib.factory.BeanFactoryParameter">
+ <map attribute="configuration-id" property="contributions"/>
+ </conversion>
+ </element>
+ </parameters-schema>
+ <invoke-factory service-id="hivemind.BuilderFactory">
+ <construct class="org.apache.hivemind.lib.factory.BeanFactoryBuilder"/>
+ </invoke-factory>
+ </service-point>
+
+ <service-point id="BeanFactoryObjectProvider"
interface="org.apache.hivemind.service.ObjectProvider">
+
+ Provides the bean: object provider prefix.
+
+ <create-instance
class="org.apache.hivemind.lib.factory.BeanFactoryObjectProvider"/>
+ </service-point>
+
+ <contribution configuration-id="hivemind.ObjectProviders">
+ <provider prefix="bean" service-id="BeanFactoryObjectProvider"/>
+ </contribution>
+
+ <service-point id="DefaultImplementationBuilder"
interface="org.apache.hivemind.lib.DefaultImplementationBuilder">
+
+ A service which can create a default implementation of an arbitrary
interface. The instance returned does nothing.
+ Returned instances are cached and re-used.
+
+ <invoke-factory service-id="hivemind.BuilderFactory">
+ <construct
class="org.apache.hivemind.lib.impl.DefaultImplementationBuilderImpl">
+ <set-service property="classFactory"
service-id="hivemind.ClassFactory"/>
+ </construct>
+ </invoke-factory>
+ </service-point>
+
+ <service-point id="PlaceholderFactory"
interface="org.apache.hivemind.ServiceImplementationFactory">
+
+ A service implementation factory that builds a default implementation of
a service.
+ The service implementation is a placeholder that does nothing.
+
+ <invoke-factory service-id="hivemind.BuilderFactory">
+ <construct class="org.apache.hivemind.lib.impl.PlaceholderFactory">
+ <set-service property="builder"
service-id="DefaultImplementationBuilder"/>
+ </construct>
+ </invoke-factory>
+ </service-point>
+
+ <service-point id="PipelineFactory"
interface="org.apache.hivemind.ServiceImplementationFactory">
+
+ A service implementation factory that assembles a pipeline of filters
into a service.
+
+ <parameters-schema>
+
+ Provides the factory with the filter interface that complements the
service interface,
+ the configuration data used to construct the pipeline and optionally,
+ a terminator service for the pipeline.
- <invoke-factory service-id="hivemind.BuilderFactory">
- <construct class="org.apache.hivemind.lib.impl.EJBProxyFactory"
service-id-property="pointId">
- <set-service property="nameLookup" service-id="NameLookup"/>
- <set-service property="classFactory"
service-id="hivemind.ClassFactory"/>
- <set-service property="coordinator"
service-id="RemoteExceptionCoordinator"/>
- </construct>
- </invoke-factory>
- </service-point>
- <service-point id="SpringLookupFactory"
-
interface="org.apache.hivemind.ServiceImplementationFactory">A service
implementation factory that obtains service implementations from a Spring
BeanFactory.<parameters-schema>Parameters are used to specify the bean name
and, optionally, a non-default BeanFactory source from which to obtain the
Spring BeanFactory.<element name="lookup-bean">
- <attribute name="name" required="true">The name of the
Spring bean to obtain.</attribute>
- <attribute name="source-service-id" translator="service">An
optional service implementing the SpringBeanFactorySource interface.</attribute>
- <conversion
class="org.apache.hivemind.lib.impl.SpringBeanParameter">
- <map attribute="source-service-id"
property="beanFactorySource"/>
- </conversion>
- </element>
- </parameters-schema>
- <invoke-factory service-id="hivemind.BuilderFactory">
- <construct
- class="org.apache.hivemind.lib.impl.SpringLookupFactory"
service-id-property="pointId">
- <set-service property="defaultBeanFactorySource"
service-id="DefaultSpringBeanFactoryHolder"/>
- </construct>
- </invoke-factory>
- </service-point>
- <service-point id="DefaultSpringBeanFactoryHolder"
-
interface="org.apache.hivemind.lib.SpringBeanFactoryHolder">Default source for
Spring BeanFactories. External code can inject a BeanFactory here, where it is
available to the SpringLookupFactory service.<create-instance
class="org.apache.hivemind.lib.impl.SpringBeanFactoryHolderImpl"/>
- </service-point>
- <schema
- id="BeanFactoryContribution">Schema used with the
hivemind.lib.BeanFactoryBuilder service, to define configuration that accepts
definitions of classes that may be vended by the generated BeanFactory.<element
- name="bean">Define one class of bean that may be vended.
Beans must have either a public constructor that takes no arguments, or a
public constructor that takes a single string argument (or both). <attribute
- name="name" required="true">A unique name for the
bean.</attribute>
- <attribute name="class" required="true" translator="class">The
bean class that will be instantiated by the factory.</attribute>
- <attribute name="cacheable" translator="boolean">Defines whether
instances of the bean may be cached; the default is specified by the
factory.</attribute>
- <conversion
class="org.apache.hivemind.lib.factory.BeanFactoryContribution">
- <map attribute="class" property="beanClass"/>
- </conversion>
- </element>
- </schema>
- <service-point id="BeanFactoryBuilder"
interface="org.apache.hivemind.ServiceImplementationFactory">A service which
builds Object Factories. Factories are driven by a configuration that conforms
to the hivemind.lib.BeanFactoryContribution schema.<parameters-schema>
- <element name="factory">
- <attribute name="vend-class" translator="class">The class
(or interface) vended by this factory. Contributions must be assignable to this
type, or will be ignored. The default value is java.lang.Object.</attribute>
- <attribute name="default-cacheable" translator="boolean">The
default value for cacheable for any contributions that are not more specific.
The default value is true.</attribute>
- <attribute name="configuration-id" required="true"
translator="configuration">The configuration containing the contributions that
define what classes are actually vended. The configuration must use the
hivemind.lib.BeanFactoryContribution schema.</attribute>
- <conversion
class="org.apache.hivemind.lib.factory.BeanFactoryParameter">
- <map attribute="configuration-id"
property="contributions"/>
- </conversion>
- </element>
- </parameters-schema>
- <invoke-factory service-id="hivemind.BuilderFactory">
- <construct
class="org.apache.hivemind.lib.factory.BeanFactoryBuilder"/>
- </invoke-factory>
- </service-point>
- <service-point id="BeanFactoryObjectProvider"
- interface="org.apache.hivemind.service.ObjectProvider">Provides
the bean: object provider prefix.<create-instance
class="org.apache.hivemind.lib.factory.BeanFactoryObjectProvider"/>
- </service-point>
- <contribution configuration-id="hivemind.ObjectProviders">
- <provider prefix="bean" service-id="BeanFactoryObjectProvider"/>
- </contribution>
- <service-point id="DefaultImplementationBuilder"
-
interface="org.apache.hivemind.lib.DefaultImplementationBuilder">A service
which can create a default implementation of an arbitrary interface. The
instance returned does nothing. Returned instances are cached and
re-used.<invoke-factory service-id="hivemind.BuilderFactory">
- <construct
class="org.apache.hivemind.lib.impl.DefaultImplementationBuilderImpl">
- <set-service property="classFactory"
service-id="hivemind.ClassFactory"/>
- </construct>
- </invoke-factory>
- </service-point>
- <service-point id="PlaceholderFactory"
- interface="org.apache.hivemind.ServiceImplementationFactory">A
service implementation factory that builds a default implementation of a
service. The service implementation is a placeholder that does
nothing.<invoke-factory service-id="hivemind.BuilderFactory">
- <construct
class="org.apache.hivemind.lib.impl.PlaceholderFactory">
- <set-service property="builder"
service-id="DefaultImplementationBuilder"/>
- </construct>
- </invoke-factory>
- </service-point>
- <service-point id="PipelineFactory"
-
interface="org.apache.hivemind.ServiceImplementationFactory">A service
implementation factory that assembles a pipeline of filters into a
service.<parameters-schema>Provides the factory with the filter interface that
complements the service interface, the configuration data used to construct the
pipeline and optionally, a terminator service for the pipeline.<element
name="create-pipeline">
- <attribute name="filter-interface" required="true"
translator="class">The filter interface should have the same methods as the
service interface, with an additional parameter for each method with the same
type as the service interface.</attribute>
- <attribute name="configuration-id" required="true"
translator="configuration">A configuration used to identify the filters (and
optionally, the terminator) for the pipeline. The configuration should use the
Pipeline schema.</attribute>
- <attribute name="terminator-service-id"
translator="service">Optional terminator service. May also be provided in the
configuration. If in neither, a placeholder is provided.</attribute>
- <conversion
class="org.apache.hivemind.lib.pipeline.PipelineParameters">
- <map attribute="configuration-id"
property="pipelineConfiguration"/>
- <map attribute="terminator-service-id"
property="terminator"/>
- </conversion>
- </element>
- </parameters-schema>
- <invoke-factory service-id="hivemind.BuilderFactory">
- <construct
class="org.apache.hivemind.lib.pipeline.PipelineFactory">
- <set-service property="classFactory"
service-id="hivemind.ClassFactory"/>
- <set-service property="defaultImplementationBuilder"
service-id="DefaultImplementationBuilder"/>
- </construct>
- </invoke-factory>
- </service-point>
- <schema
- id="Pipeline">Used with the PipelineFactory to define the
filters and optional terminator for a pipeline.<element
- name="filter">Defines a filter in terms of an existing
service.<attribute
- name="service-id" required="true" translator="service">The
id of a service implementing the pipeline's filter interface.</attribute>
- <attribute name="before" translator="id-list">A list of ids of
other contributed filters that should precede this filter in the
pipeline.</attribute>
- <attribute name="after" translator="id-list">A list of ids of
other contributed filters that should follow this filter in the
pipeline.</attribute>
- <rules>
- <create-object
class="org.apache.hivemind.lib.pipeline.FilterContribution"/>
- <read-attribute attribute="before" property="before"/>
- <read-attribute attribute="after" property="after"/>
- <read-attribute attribute="service-id" property="filter"/>
- <read-attribute attribute="service-id" property="name"
translator="qualified-id"/>
- <invoke-parent method="addElement"/>
- </rules>
- </element>
- <element
- name="filter-object">Defines a filter in terms of an
object.<attribute
- name="name" required="true" translator="qualified-id">A name
for the filter that is used when setting the order of the filters.</attribute>
- <attribute name="object" required="true" translator="object">The
object to act as a filter.</attribute>
- <attribute name="before" translator="id-list">A list of ids of
other contributed filters that should precede this filter in the
pipeline.</attribute>
- <attribute name="after" translator="id-list">A list of ids of
other contributed filters that should follow this filter in the
pipeline.</attribute>
- <conversion
class="org.apache.hivemind.lib.pipeline.FilterContribution">
- <map attribute="object" property="filter"/>
- </conversion>
- </element>
- <element
- name="terminator">A service, implementing the pipeline's
service interface, that is invoked by the final filter in the
pipeline.<attribute
- name="service-id" required="true" translator="service"/>
- <conversion
class="org.apache.hivemind.lib.pipeline.TerminatorContribution">
- <map attribute="service-id" property="terminator"/>
- </conversion>
- </element>
- <element
- name="terminator-object">An object, implementing the
pipeline's service interface, that is invoked by the final filter in the
pipeline.<attribute
- name="object" required="true" translator="object"/>
- <conversion
class="org.apache.hivemind.lib.pipeline.TerminatorContribution">
- <map attribute="object" property="terminator"/>
- </conversion>
- </element>
- </schema>
-
- <service-point id="ServicePropertyFactory"
interface="org.apache.hivemind.ServiceImplementationFactory">
-
- Creates a service that dynamically (i.e., on each service method
invocation) obtains a property
- from another service and forwards the invocation to the property. The
property must be
- the same type (or assignable to) the constructed service's interface.
Typically,
- the targeted service uses a threaded (or similar) service model, thus
requiring dynamic,
- rather than static, access.
-
- <invoke-factory service-id="hivemind.BuilderFactory">
- <construct
class="org.apache.hivemind.lib.impl.ServicePropertyFactory">
-
- <set-service property="classFactory"
service-id="hivemind.ClassFactory"/>
-
- </construct>
+ <element name="create-pipeline">
+ <attribute name="filter-interface" required="true"
translator="class">
+ The filter interface should have the same methods as the service
interface,
+ with an additional parameter for each method with the same type as
the service interface.
+ </attribute>
+ <attribute name="configuration-id" required="true"
translator="configuration">
+ A configuration used to identify the filters (and optionally, the
terminator) for the pipeline.
+ The configuration should use the Pipeline schema.
+ </attribute>
+ <attribute name="terminator" translator="object">
+ Optional terminator. May also be provided in the configuration.
+ If in neither, a placeholder is provided.
+ </attribute>
+ <conversion
class="org.apache.hivemind.lib.pipeline.PipelineParameters">
+ <map attribute="configuration-id"
property="pipelineConfiguration"/>
+ </conversion>
+ </element>
+ </parameters-schema>
+
+ <invoke-factory service-id="hivemind.BuilderFactory">
+ <construct class="org.apache.hivemind.lib.pipeline.PipelineFactory">
+ <set-service property="classFactory"
service-id="hivemind.ClassFactory"/>
+ <set-service property="defaultImplementationBuilder"
service-id="DefaultImplementationBuilder"/>
+ </construct>
+ </invoke-factory>
+ </service-point>
+
+ <schema id="Pipeline">
+ Used with the PipelineFactory to define the filters and optional
terminator for a pipeline.
+
+ <element name="filter">
+ Defines a filter in terms of an object.
- </invoke-factory>
+ <attribute name="name" required="true" translator="qualified-id">
+ A name for the filter that is used when setting the order of the
filters.
+ </attribute>
+ <attribute name="object" required="true" translator="object">The
object to act as a filter.</attribute>
+ <attribute name="before" translator="id-list">A list of ids of other
contributed filters that should precede this filter in the pipeline.</attribute>
+ <attribute name="after" translator="id-list">A list of ids of other
contributed filters that should follow this filter in the pipeline.</attribute>
+ <conversion
class="org.apache.hivemind.lib.pipeline.FilterContribution">
+ <map attribute="object" property="filter"/>
+ </conversion>
+ </element>
+
+ <element name="terminator">
+ An object, implementing the pipeline's service interface,
+ that is invoked by the final filter in the pipeline.
+
+ <attribute name="object" required="true" translator="object"/>
+ <conversion
class="org.apache.hivemind.lib.pipeline.TerminatorContribution">
+ <map attribute="object" property="terminator"/>
+ </conversion>
+ </element>
+ </schema>
+
+ <service-point id="ServicePropertyFactory"
interface="org.apache.hivemind.ServiceImplementationFactory">
+
+ Creates a service that dynamically (i.e., on each service method
invocation) obtains a property
+ from another service and forwards the invocation to the property. The
property must be
+ the same type (or assignable to) the constructed service's interface.
Typically,
+ the targeted service uses a threaded (or similar) service model, thus
requiring dynamic,
+ rather than static, access.
+
+ <invoke-factory service-id="hivemind.BuilderFactory">
+ <construct class="org.apache.hivemind.lib.impl.ServicePropertyFactory">
- <parameters-schema>
- <element name="construct">
-
- <attribute name="service-id" required="true" translator="service">
-
- The service which contains the property.
-
- </attribute>
-
- <attribute name="property" required="true">
-
- The name of the property of the target service to expose.
- </attribute>
-
- <conversion
class="org.apache.hivemind.lib.impl.ServicePropertyFactoryParameter">
- <map attribute="service-id" property="service"/>
- <map attribute="property" property="propertyName"/>
- </conversion>
-
- </element>
- </parameters-schema>
+ <set-service property="classFactory"
service-id="hivemind.ClassFactory"/>
- </service-point>
+ </construct>
+
+ </invoke-factory>
+
+ <parameters-schema>
+ <element name="construct">
+
+ <attribute name="service-id" required="true" translator="service">
+
+ The service which contains the property.
+
+ </attribute>
+
+ <attribute name="property" required="true">
+
+ The name of the property of the target service to expose.
+ </attribute>
+
+ <conversion
class="org.apache.hivemind.lib.impl.ServicePropertyFactoryParameter">
+ <map attribute="service-id" property="service"/>
+ <map attribute="property" property="propertyName"/>
+ </conversion>
+
+ </element>
+ </parameters-schema>
+
+ </service-point>
</module>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]