commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hls...@apache.org
Subject cvs commit: jakarta-commons-sandbox/hivemind/src/xsl hivemind.xsl
Date Sun, 24 Aug 2003 03:28:30 GMT
hlship      2003/08/23 20:28:30

  Modified:    hivemind/src/java/org/apache/commons/hivemind/parse
                        ServiceDescriptor.java DescriptorParser.java
               hivemind/src/java/org/apache/commons/hivemind
                        HiveMindMessages.properties
               hivemind/xdocs descriptor.xml extension-points.xml
                        services.xml
               hivemind/src/test/hivemind/test/parse
                        TestDescriptorParser.java
               hivemind/src/java/org/apache/commons/hivemind/impl
                        ServiceExtensionPointImpl.java RegistryBuilder.java
               hivemind/src/xsl hivemind.xsl
  Log:
  Remove the required attribute from the <service> element; all services are now required.
  
  Revision  Changes    Path
  1.10      +1 -13     jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/parse/ServiceDescriptor.java
  
  Index: ServiceDescriptor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/parse/ServiceDescriptor.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ServiceDescriptor.java	23 Aug 2003 22:46:03 -0000	1.9
  +++ ServiceDescriptor.java	24 Aug 2003 03:28:29 -0000	1.10
  @@ -72,7 +72,6 @@
   {
       private String _id;
       private String _interfaceClassName;
  -    private boolean _required = true;
       private Schema _parametersSchema;
       private ServiceModel _model = ServiceModel.DEFERRED;
   
  @@ -86,11 +85,6 @@
           return _interfaceClassName;
       }
   
  -    public boolean isRequired()
  -    {
  -        return _required;
  -    }
  -
       public void setId(String string)
       {
           _id = string;
  @@ -101,16 +95,10 @@
           _interfaceClassName = string;
       }
   
  -    public void setRequired(boolean b)
  -    {
  -        _required = b;
  -    }
  -
       protected void extendDescription(ToStringBuilder builder)
       {
           builder.append("id", _id);
           builder.append("interfaceClassName", _interfaceClassName);
  -        builder.append("required", _required);
           builder.append("model", _model);
           builder.append("parametersSchema", _parametersSchema);
       }
  
  
  
  1.28      +1 -3      jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/parse/DescriptorParser.java
  
  Index: DescriptorParser.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/parse/DescriptorParser.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- DescriptorParser.java	23 Aug 2003 22:46:03 -0000	1.27
  +++ DescriptorParser.java	24 Aug 2003 03:28:29 -0000	1.28
  @@ -211,7 +211,6 @@
       static {
           SERVICE_ATTRIBUTES.put("id", Boolean.TRUE);
           SERVICE_ATTRIBUTES.put("interface", Boolean.TRUE);
  -        SERVICE_ATTRIBUTES.put("required", Boolean.FALSE);
           SERVICE_ATTRIBUTES.put("model", Boolean.FALSE);
       }
   
  @@ -895,7 +894,6 @@
   
               sd.setId(getAttribute("id"));
               sd.setInterfaceClassName(getAttribute("interface"));
  -            sd.setRequired(getBooleanAttribute("required", true));
   
               ServiceModel model = (ServiceModel) getEnumAttribute("model", MODEL_MAP);
   
  
  
  
  1.25      +2 -3      jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/HiveMindMessages.properties
  
  Index: HiveMindMessages.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/HiveMindMessages.properties,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- HiveMindMessages.properties	21 Aug 2003 20:07:47 -0000	1.24
  +++ HiveMindMessages.properties	24 Aug 2003 03:28:29 -0000	1.25
  @@ -28,7 +28,6 @@
   ExtensionPointImpl.element-is-null=Module {0} has contributed a null element to configuration
extension point {1} (at {2}).  The contribution has been ignored.
   ExtensionPointImpl.recursive-configuration=A recursive call to construct configuration
{0} has occured.  This indicates a cycle between one or more configurations or services.
   
  -ServiceExtensionPoint.request-for-missing-service=Unable to provide required service {0}
because no module contributed a factory.
   ServiceExtensionPoint.unable-to-construct-service=Unable to construct service {0}: {1}
   ServiceExtensionPoint.factory-returned-null=Instance factory for service {0} returned null.
   ServiceExtensionPoint.factory-wrong-interface=Instance factory for service {0} returned
{1} which does not implement the {2} interface declared by the extension point.
  @@ -57,7 +56,7 @@
   RegistryBuilder.duplicate-module-id=Module {0} is duplicated!  Definition in {2} has been
ignored in favor of existing definition from {1}.
   RegistryBuilder.unknown-service-extension-point=Module {0} contributes to unknown service
extension point {1} (at {2}).  The contribution has been ignored.
   RegistryBuilder.duplicate-factory=Module {0} has contributed a instance builder to service
extension point {1}, which conflicts with an existing contribution by module {2}. The duplicate
contribution has been ignored.  
  -RegistryBuilder.missing-service=No module has contributed a factory for service extension
point {0}.
  +RegistryBuilder.missing-service=No module has contributed a service constructor for service
extension point {0}.
   RegistryBuilder.unknown-configuration-extension-point=Module {0} has contributed to unknown
configuration extension point {1} (at {2}).  The contribution has been ignored.
   RegistryBuilder.wrong-number-of-contributions=Configuration extension point {0} contains
{1,choice,0#no contributions|1#one contribution|1<{1,number,integer} contributions} but
expects {2} contribution.
   RegistryBuilder.one-or-more=at least one
  
  
  
  1.22      +2 -9      jakarta-commons-sandbox/hivemind/xdocs/descriptor.xml
  
  Index: descriptor.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/xdocs/descriptor.xml,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- descriptor.xml	23 Aug 2003 22:46:03 -0000	1.21
  +++ descriptor.xml	24 Aug 2003 03:28:29 -0000	1.22
  @@ -402,14 +402,7 @@
   					<td>The fully qualified name of the Java interface supplied by this
   						service extension point.</td>
   				</tr>
  -				<tr>
  -					<td>required</td>
  -					<td>boolean</td>
  -					<td>no</td>
  -					<td>If true (the default), then a factory contribution must be made to
  -						the extension point. If false, then the service provided by the
  -						extension point is optional.</td>
  -				</tr>				
  +							
   				<tr>
   					<td>model</td>	
   					<td><code>deferred | singleton | threaded</code></td>
  
  
  
  1.6       +4 -2      jakarta-commons-sandbox/hivemind/xdocs/extension-points.xml
  
  Index: extension-points.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/xdocs/extension-points.xml,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- extension-points.xml	20 Aug 2003 20:40:45 -0000	1.5
  +++ extension-points.xml	24 Aug 2003 03:28:30 -0000	1.6
  @@ -249,8 +249,10 @@
   	<li><strong>Are the any default implementations of SymbolSource?</strong>
   		
   		<p>
  -	There is now an extension point for setting "factory defaults":
  +	There is now an extension point for setting factory defaults:
   	<a href="base-registry/hivemind.html#extension-point:hivemind.FactoryDefaults">hivemind.FactoryDefaults</a>.
  +	A second extension point, for application defaults, overrides the factory defaults:
  +	<a href="base-registry/hivemind.html#extension-point:hivemind.ApplicationDefaults">hivemind.ApplicationDefaults</a>.
   	</p>
   	
   	<p>
  
  
  
  1.19      +41 -24    jakarta-commons-sandbox/hivemind/xdocs/services.xml
  
  Index: services.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/xdocs/services.xml,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- services.xml	23 Aug 2003 22:46:03 -0000	1.18
  +++ services.xml	24 Aug 2003 03:28:30 -0000	1.19
  @@ -15,9 +15,10 @@
   				interface. You supply the interface (in a module). You supply the core
   				implementation of the interface (in the same module, or in a different
   				module). At runtime, HiveMind puts it all together.</p>
  -			<p>HiveMind uses two service models: singleton and pooled.  In the singleton model,
  -				each service will ultimately be just a single object instance.  In the pooled model,
  -				there may be many instances simulataneously.</p>
  +			<p>HiveMind uses three service models: singleton, deferred and threaded.  In the
singleton and
  +				deferred models,
  +				each service will ultimately be just a single object instance.  In the threaded model,
  +				there may be many instances simultaneously, one for each thread.</p>
   		</section>
   		<section name="Defining Services">
   			<p>A service definition begins with a Java interface. Any interface will
  @@ -28,8 +29,7 @@
   			
   			<p>Each &_service;
   			 establishes an
  -				id for the service, defines the interface for the service, and indicates
  -				whether the service is optional or required (required is the default).
  +				id for the service and defines the interface for the service.
   				An example is provided later in this document.</p>
   				
   			<p>
  @@ -57,7 +57,7 @@
   				Contributions take three forms: 
   					
   						<ul> 
  -							<li>Implementation constructors:
  +							<li>Service constructors:
   							<ul>
   									<li>&create-instance; to instantiate an instance of a Java class</li>
   									<li>&invoke-factory; to have another service create the implementation</li>
  @@ -68,10 +68,10 @@
   						
   						</p>
   						
  -			<subsection name="Implementation Constructors">
  -				<p>An implementation constructor is used to instantiate a Java class as the
  +			<subsection name="Service Constructors">
  +				<p>An service constructor is used to instantiate a Java class as the
   					core implementation instance for the service. </p>
  -				<p>There are two forms of implementation constructors:
  +				<p>There are two forms of service constructors:
   					 instance creators and
   					implementation factories.</p>
   				<p>An instance creator is represented by a &create-instance; element. It
  @@ -141,8 +141,6 @@
   					whatever interface is defined by the service extension point it will
   					create an instance for.</p>
   					
  -				<p>Interceptor factories can be implemented using dynamic proxies (a
  -					feature introduced in JDK 1.3), or by dynamic bytecode enhancement.</p>
   					
   				<p>A service extension point may have any number of interceptor
   					contributions. If the order in which interceptors are applied is
  @@ -265,6 +263,21 @@
   				knows nor cares about this.</p>
   		</section>
   			
  +		<section name="Singleton Service Model">
  +		
  +		<p>
  +		The simplest service model is the singleton service model; in this model 	
  +		the service is constructed on first reference.  This is appropriate for
  +		services such as service factories and interceptor factories, and for
  +		several of the basic services provided in the
  +		<a href="base-registry/hivemind.html">hivemind module</a>.
  +		</p>	
  +		
  +		
  +			
  +		</section>
  +			
  +			
   		<section name="Deferred Service Model">
   			
   		<p>
  @@ -277,7 +290,7 @@
   		</p>
   		
   		<p>
  -		To resolve this, HiveMind defers the actual creation of services by default This
  +		To resolve this, HiveMind defers the actual creation of services by default. This
   		is controled by the <code>model</code> attribute of the &service; element;
the default model
   		is <b>deferred</b>.  
   		</p>
  @@ -321,7 +334,7 @@
   <p>
   The service implementation is discarded when notified to cleanup; this is controlled by
the
   <a href="base-registry/hivemind.html#service:hivemind.ThreadEventNotifier">hivemind.ThreadEventNotifier</a>
 service.
  -If your application has any threaded service, you are responsible for invoking the <code>fireThreadCleanup()</code>
  +If your application has any threaded services, you are responsible for invoking the <code>fireThreadCleanup()</code>
   method of the service.
   </p>
   
  @@ -329,7 +342,7 @@
   For example, a servlet application may want to add the following:	
   </p>
   
  -<code>
  +<source>
   public void service(ServletRequest request, ServletResponse response)
   throws ServletException, IOException
   {
  @@ -343,7 +356,13 @@
     } 
   }
   	
  -</code>
  +</source>
  +
  +<p>
  +You'll, of course, have to fill in the details, such as the implementation of
  +<code>getThreadEventNotifier()</code>. Presumably, your servlet constructs
  +a HiveMind registry from its <code>init()</code> method.
  +</p>
   		
   			
   		</section>
  @@ -361,14 +380,12 @@
   				<li>
   					<strong>What if no module provides a core implementation of the
   						service?</strong>
  -					<p>If the service is optional, then getService() will return null. For
  -						optional services, you are required to check for null.</p>
  -					<p>For required services, HiveMind checks for an implementation constructor
  -						when the registry itself is assembled. If a required service extension
  -						point has no implementation constructor, an error is logged (identifying the
  -						extension point id). In addition, getService() will throw an
  -						ApplicationRuntimeException. So, if a service is required, you don't
  -						have to check for null.</p>
  +
  +					<p>HiveMind checks for a service constructor
  +						when the registry itself is assembled. If a  service extension
  +						point has no service constructor, an error is logged (identifying the
  +						extension point id). In addition, <code>getService()</code> will throw
an
  +						ApplicationRuntimeException.</p>
   				</li>
   				
   				<li>
  
  
  
  1.22      +1 -2      jakarta-commons-sandbox/hivemind/src/test/hivemind/test/parse/TestDescriptorParser.java
  
  Index: TestDescriptorParser.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/src/test/hivemind/test/parse/TestDescriptorParser.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- TestDescriptorParser.java	21 Aug 2003 20:07:47 -0000	1.21
  +++ TestDescriptorParser.java	24 Aug 2003 03:28:30 -0000	1.22
  @@ -205,7 +205,6 @@
   
           assertEquals("MyService1", sd.getId());
           assertEquals("package.MyService", sd.getInterfaceClassName());
  -        assertEquals(true, sd.isRequired());
   
           CreateInstanceDescriptor cid = (CreateInstanceDescriptor) sd.getInstanceBuilder();
           assertEquals("package.impl.MyServiceImpl", cid.getInstanceClassName());
  
  
  
  1.12      +1 -28     jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/impl/ServiceExtensionPointImpl.java
  
  Index: ServiceExtensionPointImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/impl/ServiceExtensionPointImpl.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ServiceExtensionPointImpl.java	23 Aug 2003 22:46:03 -0000	1.11
  +++ ServiceExtensionPointImpl.java	24 Aug 2003 03:28:30 -0000	1.12
  @@ -88,7 +88,6 @@
       private Class _serviceInterface;
       private ServiceImplementationConstructor _serviceConstructor;
       private List _interceptorContributions;
  -    private boolean _required;
       private boolean _building;
       private Schema _parametersSchema;
       private Object _constructedService;
  @@ -97,7 +96,6 @@
       protected void extendDescription(ToStringBuilder builder)
       {
           builder.append("serviceInterfaceName", _serviceInterfaceName);
  -        builder.append("required", _required);
           builder.append("factoryContribution", _serviceConstructor);
           builder.append("interceptorContributions", _interceptorContributions);
           builder.append("parametersSchema", _parametersSchema);
  @@ -163,16 +161,6 @@
           _serviceInterfaceName = string;
       }
   
  -    public boolean isRequired()
  -    {
  -        return _required;
  -    }
  -
  -    public void setRequired(boolean b)
  -    {
  -        _required = b;
  -    }
  -
       public synchronized void addInterceptorContribution(ServiceInterceptorContribution
contribution)
       {
           if (_interceptorContributions == null)
  @@ -236,21 +224,6 @@
   	 */
       protected Object constructNewServiceImplementation()
       {
  -        if (_serviceConstructor == null)
  -        {
  -            // If the service is required but there's no factory, then throw
  -            // an exception.  The calling code probably doesn't check for null (since
  -            // the service is required), so better an ARE here than an NPE there.
  -
  -            if (_required)
  -                throw new ApplicationRuntimeException(
  -                    HiveMind.format(
  -                        "ServiceExtensionPoint.request-for-missing-service",
  -                        getExtensionPointId()));
  -
  -            return null;
  -        }
  -
           try
           {
               Class serviceType = getServiceInterface();
  
  
  
  1.25      +5 -15     jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/impl/RegistryBuilder.java
  
  Index: RegistryBuilder.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/src/java/org/apache/commons/hivemind/impl/RegistryBuilder.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- RegistryBuilder.java	23 Aug 2003 22:46:03 -0000	1.24
  +++ RegistryBuilder.java	24 Aug 2003 03:28:30 -0000	1.25
  @@ -138,12 +138,6 @@
       private Map _servicePoints = new HashMap();
   
       /**
  -     * List of {@link ServiceExtensionPointImpl} of just the required points.
  -     */
  -
  -    private List _requiredServices = new ArrayList();
  -
  -    /**
        * Map of {@link ExtensionPointImpl} keyed on fully qualified id.
        */
   
  @@ -347,7 +341,6 @@
               point.setExtensionPointId(pointId);
               point.setLocation(sd.getLocation());
               point.setModule(module);
  -            point.setRequired(sd.isRequired());
   
               point.setServiceInterfaceName(sd.getInterfaceClassName());
               point.setParametersSchema(sd.getParametersSchema());
  @@ -359,9 +352,6 @@
   
               _servicePoints.put(pointId, point);
   
  -            if (point.isRequired())
  -                _requiredServices.add(point);
  -
               addInternalServiceContributions(module, pointId, sd);
           }
       }
  @@ -655,14 +645,14 @@
       }
   
       /**
  -     * Checks that each required service has at factory contribution.
  +     * Checks that each service has at service constructor.
        */
       private void checkForMissingServices()
       {
  -        int count = _requiredServices.size();
  -        for (int i = 0; i < count; i++)
  +        Iterator i = _servicePoints.values().iterator();
  +        while (i.hasNext())
           {
  -            ServiceExtensionPointImpl point = (ServiceExtensionPointImpl) _requiredServices.get(i);
  +            ServiceExtensionPointImpl point = (ServiceExtensionPointImpl) i.next();
   
               if (point.getServiceConstructor() != null)
                   continue;
  
  
  
  1.17      +1 -8      jakarta-commons-sandbox/hivemind/src/xsl/hivemind.xsl
  
  Index: hivemind.xsl
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/hivemind/src/xsl/hivemind.xsl,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- hivemind.xsl	23 Aug 2003 22:46:04 -0000	1.16
  +++ hivemind.xsl	24 Aug 2003 03:28:30 -0000	1.17
  @@ -377,13 +377,6 @@
   					</td>
   				</tr>
   				<tr>
  -					<th>Required</th>
  -					<td>
  -						<xsl:if test="not(@required)">true</xsl:if>
  -						<xsl:value-of select="@required"/>
  -					</td>
  -				</tr>
  -				<tr>
   					<th>Service Model</th>
   					<td>
   						<xsl:if test="not(@model)">singleton</xsl:if>
  
  
  

Mime
View raw message