mcconnell    2004/03/28 10:36:44

  Modified:    merlin/platform/xdocs/reference/component/descriptors
                        index.xml navigation.xml
               merlin/platform/xdocs/starting/tutorial/context casting.xml
  Log:
  Completion of the page concerning component descriptors and loinks to 
relavant pages in the Avalon Meta Package documentation.
  
  Revision  Changes    Path
  1.3       +101 -1    
avalon/merlin/platform/xdocs/reference/component/descriptors/index.xml
  
  Index: index.xml
  ===================================================================
  RCS file: 
/home/cvs/avalon/merlin/platform/xdocs/reference/component/descriptors/index.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- index.xml 27 Mar 2004 23:04:45 -0000      1.2
  +++ index.xml 28 Mar 2004 18:36:44 -0000      1.3
  @@ -35,8 +35,108 @@
         </p>
       </section>
   
  -  </body>
  +    <section name="Specifications">
  +
  +      <subsection name="Javadoc Tag Markup">
  +        <p>
  +Information about a component type may be declared in the form of javadoc 
tags (refer <a href="http://avalon.apache.org/meta/tools/tags/index.html";>Tag 
Specification</a>.  Using <a 
href="http://avalon.apache.org/meta/tools/index.html";>development tools</a> 
supplied as part of the <a 
href="http://avalon.apache.org/meta/index.html";>Avalon Meta</a> package - the 
process of generation of an XML type descriptor can be completely automated.  
  +        </p>
  +        <p>
  +A special tag @avalon.component is used to identify a class as a component.  
The following code framgment illustrates the use of the @avalon.component tag.
  +        </p>
  +<source>
  +/**
  + * Component demonstrating access to standard context entries.
  + *
  + * @avalon.component name="demo" lifestyle="singleton"
  + */
  +public class HelloComponent 
  +{
  +   ...
  +}
  +</source>
  +
  +        <p>
  +Additional tags are used to markup requirements that a component class has 
towards a container.  In the following code fragment a constructor is presented 
with a series of context entry dependencies that the component has during its 
instantiation phase. Each tag represents a particular context entry assumption 
that the component has, and the implicit responsibility of a container to 
fulfill.
  +        </p>
  +
  +<source>
  +   /**
  +    * Creation of a new HelloComponent instance using a 
  +    * container supplied logging channel and context.
  +    * The context supplied by the container holds the 
  +    * standard context entries for the home and 
  +    * working directories, component name and partition.
  +    *
  +    * @avalon.entry key="urn:avalon:name" 
  +    * @avalon.entry key="urn:avalon:partition" 
  +    * @avalon.entry key="urn:avalon:home" type="java.io.File"
  +    * @avalon.entry key="urn:avalon:temp" type="java.io.File"
  +    */
  +    public HelloComponent( Logger logger, Context context )
  +      throws ContextException
  +    {
  +        m_logger = logger;
  +
  +        m_home = (File) context.get( "urn:avalon:home" );
  +        m_temp = (File) context.get( "urn:avalon:temp" );
  +        m_name = (String) context.get( "urn:avalon:name" );
  +        m_partition = (String) context.get( "urn:avalon:partition" );
  +
  +        StringBuffer buffer = new StringBuffer( "standard context entries" );
  +        buffer.append( "\n  name: " + m_name );
  +        buffer.append( "\n  home: " + m_home );
  +        buffer.append( "\n  temp: " + m_temp );
  +        buffer.append( "\n  partition: " + m_partition );
  +
  +        m_logger.info( buffer.toString() );
  +    }
  +</source>
  +
  +      </subsection>
  +
  +      <subsection name="XML External Form">
   
  +        <p>
  +A component type may be associated with a component class by colocating an 
XML file with the suffix "xinfo" with the component implementation class.  For 
example, the class tutorial.Hello is packaged in a jar file under the path 
/tutorial/Hello.class.  The xinfo file is packaged as /tutorial/Hello.xinfo.
  +        </p>
  +
  +        <p>
  +The formal specification of the <a 
href="http://avalon.apache.org/meta/meta/info/index.html";>XML external form</a> 
for component type descriptors is available as part of the <a 
href="http://avalon.apache.org/meta/index.html";>Avalon Meta Package</a>.
  +        </p>
  +
  +        <p>
  +An example of a xinfo XML content taken from the context casting tutorial is 
presented below.
  +        </p>
  +
  +<source><![CDATA[
  +<type>
  +  <info>
  +    <name>demo</name>
  +    <version>1.0.0</version>
  +    <lifestyle>singleton</lifestyle>
  +    <collection>hard</collection>
  +  </info>
  +  <context type="tutorial.DemoContext">
  +    <entry key="urn:avalon:name" />
  +    <entry key="urn:avalon:partition" />
  +    <entry key="urn:avalon:home" type="java.io.File" />
  +    <entry key="urn:avalon:temp" type="java.io.File" />
  +  </context>
  +</type>
  +]]></source>
  +
  +      </subsection>
  +
  +      <subsection name="Type Model">
  +
  +        <p>
  +The Avalon Meta package provides the overal meta-info layer within which a 
component type descriptor is defined.  The descriptor is an immutable data 
object that contains a component classname, attributes, context dependencies, 
deployment dependencies, runtime service dependencies, service and extension 
publication, and associating logging channel assumptions. The full 
specification of the <a 
href="http://avalon.apache.org/meta/api/org/apache/avalon/meta/info/Type.html";>Type</a>
 class is provided in the package javadoc.  Type establishment is typically 
automated by the container by scanner jar file for xinfo descriptors (or 
possibly through dynamic type creation).
  +        </p>
  +
  +      </subsection>
  +    </section>
  +  </body>
   </document>
   
   
  
  
  
  1.3       +8 -1      
avalon/merlin/platform/xdocs/reference/component/descriptors/navigation.xml
  
  Index: navigation.xml
  ===================================================================
  RCS file: 
/home/cvs/avalon/merlin/platform/xdocs/reference/component/descriptors/navigation.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- navigation.xml    28 Mar 2004 06:08:20 -0000      1.2
  +++ navigation.xml    28 Mar 2004 18:36:44 -0000      1.3
  @@ -44,7 +44,14 @@
         <item name="Javadoc" href="/api/index.html"/>
         <item name="Specification" href="/reference/index.html">
           <item name="Component Specification" 
href="/reference/component/index.html">
  -          <item name="Descriptors" 
href="/reference/component/descriptors/index.html"/>
  +          <item name="Descriptors" 
href="/reference/component/descriptors/index.html">
  +            <item name="Javadoc Tags" 
  +              href="/reference/component/descriptors/index.html#Javadoc Tag 
Markup"/>
  +            <item name="External Form" 
  +              href="/reference/component/descriptors/index.html#XML External 
Form"/>
  +            <item name="Type Model" 
  +              href="/reference/component/descriptors/index.html#Type Model"/>
  +          </item>
             <item name="Lifecycle Management" 
href="/reference/component/lifecycle/index.html"/>
             <item name="Lifecycle Artifacts" 
href="/reference/component/artifacts/index.html"/>
             <item name="Artifact Delivery" 
href="/reference/component/delivery/index.html"/>
  
  
  
  1.5       +10 -3     
avalon/merlin/platform/xdocs/starting/tutorial/context/casting.xml
  
  Index: casting.xml
  ===================================================================
  RCS file: 
/home/cvs/avalon/merlin/platform/xdocs/starting/tutorial/context/casting.xml,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- casting.xml       14 Mar 2004 11:12:45 -0000      1.4
  +++ casting.xml       28 Mar 2004 18:36:44 -0000      1.5
  @@ -225,10 +225,17 @@
   <source><![CDATA[
   <type>
     <info>
  -    <name>hello</name>
  -    <version>1.0</version>
  +    <name>demo</name>
  +    <version>1.0.0</version>
  +    <lifestyle>singleton</lifestyle>
  +    <collection>hard</collection>
     </info>
  -  <context type="tutorial.DemoContext"/>
  +  <context type="tutorial.DemoContext">
  +    <entry key="urn:avalon:name" />
  +    <entry key="urn:avalon:partition" />
  +    <entry key="urn:avalon:home" type="java.io.File" />
  +    <entry key="urn:avalon:temp" type="java.io.File" />
  +  </context>
   </type>
   ]]></source>
           <p>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to