You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by mc...@apache.org on 2003/09/06 11:15:45 UTC

cvs commit: avalon-sandbox/merlin/merlin-platform/xdocs/starting/advanced composite.xml

mcconnell    2003/09/06 02:15:45

  Modified:    merlin/merlin-platform/tutorials/composition README.txt
               merlin/merlin-platform/xdocs/starting/advanced composite.xml
  Log:
  Doc updates (composition tutorial doc was a little out of sync with the actual tutorial implementation).
  
  Revision  Changes    Path
  1.5       +1 -1      avalon-sandbox/merlin/merlin-platform/tutorials/composition/README.txt
  
  Index: README.txt
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/merlin/merlin-platform/tutorials/composition/README.txt,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- README.txt	20 Aug 2003 17:55:07 -0000	1.4
  +++ README.txt	6 Sep 2003 09:15:45 -0000	1.5
  @@ -5,7 +5,7 @@
   Overview
   --------
   
  -This tutorial presents the creation ofn virtual components
  +This tutorial presents the creation of virtual components
   using composition of package containers.  In this demonstration
   we have three application groups, a top level application, a 
   locator system, and a publisher system.  The top level app
  
  
  
  1.4       +59 -66    avalon-sandbox/merlin/merlin-platform/xdocs/starting/advanced/composite.xml
  
  Index: composite.xml
  ===================================================================
  RCS file: /home/cvs/avalon-sandbox/merlin/merlin-platform/xdocs/starting/advanced/composite.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- composite.xml	16 Aug 2003 11:16:34 -0000	1.3
  +++ composite.xml	6 Sep 2003 09:15:45 -0000	1.4
  @@ -11,24 +11,25 @@
       <section name="Advanced Features">
         <subsection name="Composite Blocks">
           <p>
  -         A block can declare services that it exports.  In such a case
  -         the block contains directives that map components declared 
  -         in the block implementation directive as service providers.  
  -         This mechanism enables blocks to behave like regular components.
  +         A container can declare services that it exports.  In such a case
  +         the container declares one or more service directives that map 
  +         components declared within itself as service providers.  
  +         This mechanism enables a container to appear as a regular 
  +         component relative to other components.
           </p>
           <p>
            Content supporting this tutorial is available under the 
  -         tutorial/composition directory.
  +         tutorials/composition directory.
           </p>
         </subsection>
  -      <subsection name="Sample Blocks">
  +      <subsection name="Sample Container">
           <p>
  -         The following block definition contains:
  +         The following container definition includes:
           </p>
           <ul>
  -          <li><p>a publisher block</p></li>
  -          <li><p>a location provider block</p></li>
  -          <li><p>an application block</p></li>
  +          <li><p>an application component</p></li>
  +          <li><p>a location provider block inlcuded by reference</p></li>
  +          <li><p>an application block included by reference</p></li>
           </ul>
           <p>
             The application block declares dependencies on a location 
  @@ -37,72 +38,72 @@
             the general component assembly process - Merlin will assemble 
             blocks relative to the services and dependencies they declare.
             When a block is deployed, it appears to other components as a 
  -          component providing the services it declares.  However in practice
  -          these services are provided by components with the &lt;implementation&gt;
  -          of the block.  
  +          component providing the services it exports.  However in practice
  +          these services are provided by components defined with the 
  +          container (i.e. the container represents the defintion of 
  +          a virtual component and the containers components and subcontainers
  +          represent the virual compoent implementation).
           </p>
  -        <p>The top level block declaration (block.xml):</p>
  +        <p>The top level application block declaration (block.xml):</p>
           <source><![CDATA[
  -<container name="tutotial">
  +<container name="application">
   
        <classloader>
          <classpath>
            <repository>
  -           <resource id="tutorial:composition-api" version="1.0"/>
  +           <resource id="avalon-framework:avalon-framework-api" version="SNAPSHOT"/>
  +           <resource id="avalon-framework:avalon-framework-impl" version="SNAPSHOT"/>
  +           <resource id="merlin-tutorial:locator-api" version="1.0"/>
  +           <resource id="merlin-tutorial:publisher-api" version="1.0"/>
  +           <resource id="merlin-tutorial:application-impl" version="1.0"/>
            </repository>
          </classpath>
        </classloader>
   
  -     <include id="tutorial:composition-publisher" version="1.0"/>
  -     <include id="tutorial:composition-application" version="1.0"/>
  -     <include id="tutorial:composition-location" version="1.0"/>
  +     <!-- 
  +     note: each of the following include directives is equivalent to 
  +     a nested container declaration - using include or declaraing a 
  +     sub-container is semantically equivalent
  +     -->
   
  -</container>
  -]]></source>
  -        <p>
  -          The common shared API (containing interfaces) is declared in 
  -          in the classpath as a referencable library.  The three include 
  -          statements (publisher, application and location) are established
  -          by Merlin in a deployment order consistent with their respective 
  -          dependencies.  In the above example, the block definitions are 
  -          resolved from the block.xml files containing in the respective
  -          jar files.
  -        </p>
  -        <source><![CDATA[
  -<container name="composition-block">
  -
  -     <classloader>
  -       <classpath>
  -         <repository>
  -           <resource id="tutorial:composition-api" version="1.0"/>
  -         </repository>
  -       </classpath>
  -     </classloader>
  +     <include name="location" id="merlin-tutorial:locator-impl" version="1.0"/>
  +     <include name="publisher" id="merlin-tutorial:publisher-impl" version="1.0"/>
   
        <component name="application" 
  -        class="tutorial.application.Application" activation="startup">
  +        class="tutorial.application.Application">
        </component>
   
   </container>
   ]]></source>
           <p>
  -          If we look at the locator block (as an example) we will see a corresponding
  +          If we look at the location block (as an example) we will see a corresponding
             service declaration.  This declaration includes a source reference that is 
             a relative component path that tells Merlin to use the sub-component named
             "location" as the component that will fulfil the service published by this 
             block.
           </p>
           <source><![CDATA[
  -<container name="location-block">
  +<container name="locator">
   
      <services>
  -     <service type="tutorial.LocationService">
  -       <source>location</source>
  +     <service type="tutorial.location.LocationService">
  +       <source>info</source>
        </service>
      </services>
   
  -   <component name="location" 
  -         class="tutorial.location.LocationComponent" activation="startup">
  +   <classloader>
  +     <classpath>
  +       <repository>
  +         <resource id="avalon-framework:avalon-framework-api" version="SNAPSHOT"/>
  +         <resource id="avalon-framework:avalon-framework-impl" version="SNAPSHOT"/>
  +         <resource id="merlin-tutorial:locator-api" version="1.0"/>
  +         <resource id="merlin-tutorial:locator-impl" version="1.0"/>
  +       </repository>
  +     </classpath>
  +   </classloader>
  +
  +   <component name="info" 
  +       class="tutorial.location.LocationComponent">
          <configuration>
            <source>Paris</source>
          </configuration>
  @@ -114,15 +115,12 @@
         </subsection>
         <subsection name="Execution">
           <p>
  -         The execute the tutorial you need to invoke "ant install". This will
  -         result in the installation of the tutorial jar files into the Merlin 
  -         repository.  NOTE: to run the demo use the "src\config\block.xml"
  -         defintion.
  +         To run build and run the example please use the following commands:
           </p>
           <source><![CDATA[
  -$ cd tutorial\composition
  -$ ant install
  -$ merlin scr\config\block.xml
  +$ cd application/impl
  +$ maven build
  +$ merlin target\*.jar -system %MAVEN_HOME% -execute
   ]]></source>
           <p>
            The log output demonstrates the deployment by Merlin of the blocks
  @@ -130,21 +128,16 @@
            execution of the test application.
           </p>
           <source><![CDATA[
  -[INFO   ] (location-block.location): location: Paris
  -[INFO   ] (location-block): initialization
  -[INFO   ] (publisher-block.publisher): created
  -[INFO   ] (publisher-block): initialization
  -[INFO   ] (application-block.application): servicing application
  -[INFO   ] (publisher-block.publisher):
  +[INFO   ] (application.publisher.publisher): created
  +[INFO   ] (application.location.info): location: Paris
  +[INFO   ] (application.application): servicing application
  +[INFO   ] (application.location.info): location: Paris
  +[INFO   ] (application.publisher.publisher): created
  +[INFO   ] (application.publisher.publisher):
   ******************
   * Paris
   ******************
  -[INFO   ] (application-block.application): done
  -[INFO   ] (application-block): initialization
  -[INFO   ] (sys): commencing decommissioning phase
  -[INFO   ] (application-block.application): disposal
  -[INFO   ] (location-block.location): disposal
  -[INFO   ] (publisher-block.publisher): disposal
  +[INFO   ] (application.application): done
   ]]></source>
         </subsection>
         <subsection name="Note">
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org