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 
&lt;set-object&gt; 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 &lt;filter&gt; 
  -          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]

Reply via email to