avalon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mcconn...@apache.org
Subject cvs commit: jakarta-avalon-excalibur/assembly/src/xdocs/stylesheets changes.vsl docs.vsl project.xml templates.vm velocity.properties
Date Wed, 17 Jul 2002 13:48:38 GMT
mcconnell    2002/07/17 06:48:38

  Modified:    assembly .cvsignore build.xml default.properties
               assembly/src .cvsignore
               assembly/src/etc merlin.html project.mf
               assembly/src/java/org/apache/excalibur/merlin/model
                        KernelDescriptor.java
               assembly/src/java/org/apache/excalibur/merlin/model/builder
                        XMLKernelCreator.java
  Added:       assembly/src/xdocs container.xml containers.xml
                        deployment.xml index.xml kernel.xml
               assembly/src/xdocs/css ns4_only.css print.css site.css
                        tigris.css
               assembly/src/xdocs/images build.gif code.gif design.gif
                        merlin_logo.gif meta.gif overview.gif update.gif
               assembly/src/xdocs/stylesheets changes.vsl docs.vsl
                        project.xml templates.vm velocity.properties
  Log:
  Addition of site documentation.
  
  Revision  Changes    Path
  1.7       +2 -0      jakarta-avalon-excalibur/assembly/.cvsignore
  
  Index: .cvsignore
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/.cvsignore,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- .cvsignore	12 Jul 2002 15:16:37 -0000	1.6
  +++ .cvsignore	17 Jul 2002 13:48:37 -0000	1.7
  @@ -1,6 +1,8 @@
   local.properties
   build
   dist
  +tools
   checkstyle.cache
   kernel.log
   extensions
  +velocity.log
  
  
  
  1.24      +109 -49   jakarta-avalon-excalibur/assembly/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/build.xml,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- build.xml	16 Jul 2002 10:58:20 -0000	1.23
  +++ build.xml	17 Jul 2002 13:48:37 -0000	1.24
  @@ -16,16 +16,17 @@
         -----------
   
         ${project.title}
  -
  +      
         General Targets:
         ----------------
   
         all              - clean, build and dist
  -      build            - invokes the general build target
  +      build            - compilation and jar creation
  +      deploy           - places internal and external jars into an extensions directory
         javadoc          - javadoc API generation
  -      dist             - executes build, javadoc and support file creation
  -      clean            - destroy the build directory
  -      test             - run the component
  +      clean            - destroy the build, dist and extensions directory
  +      docs             - generates the project documentation
  +      help             - this message
         
       </echo>
     </target>
  @@ -33,43 +34,53 @@
     <property name="apps.path" value="../../jakarta-avalon-apps" />
     <property name="excalibur.path" value="../../jakarta-avalon-excalibur" />
     <property name="avalon.tools.path" value="../../jakarta-avalon/tools" />
  +  <property name="jakarta-site.dir" value="../../jakarta-site"/>
   
     <property name="lib" value="lib" />
  -  <property name="src" value="src" />
  -  <property name="etc" value="${src}/etc" />
  +  <property name="src.dir" value="src" />
  +  <property name="xdocs.dir" value="${src.dir}/xdocs" />
  +  <property name="etc" value="${src.dir}/etc" />
     <property name="build"  value="build" />
  -  <property name="dist"  value="dist" />
  +  <property name="dist.dir"  value="dist" />
  +  <property name="docs.dir" value="${dist.dir}/docs" />
     <property name="extensions"  value="extensions" />
  +  <property name="tools"  value="tools" />
   
  -  <property name="javadoc.root.path"  value="${dist}/javadoc" />
  +  <property name="javadoc.root.path"  value="${dist.dir}/docs/api" />
     <property name="avalon.href"  value="http://jakarta.apache.org/avalon/api/" />
     <property name="jdk.href"  value="http://java.sun.com/j2se/1.4/docs/api/" />
     <property name="meta.href"  value="../meta" />
     <property name="overview.html" value="${etc}/overview.html" />
     <property name="project.manifest" value="project.mf" />
     <property name="meta.jar" value="avalon-meta.jar" />
  -  <property name="merlin.page" value="${src}/etc/merlin.html" />
  -  <property name="meta.page" value="${src}/etc/meta.html" />
  +  <property name="merlin.page" value="${src.dir}/etc/merlin.html" />
  +  <property name="meta.page" value="${src.dir}/etc/meta.html" />
     <property name="merlin.jar" value="merlin.jar" />
   
     <!-- classpath -->
   
  -  <path id="project.classpath">
  +  <path id="project.class.path">
         <fileset dir="${lib}">
           <include name="*.jar" />
         </fileset>
     </path>
   
  +  <path id="tools.class.path">
  +      <fileset dir="${jakarta-site.dir}/lib">
  +        <include name="*.jar" />
  +      </fileset>
  +  </path>
  +
     <!-- MAIN TARGETS -->
   
     <target name="dist" depends="build"/>
     <target name="meta" depends="meta.javadoc"/>
     <target name="merlin" depends="merlin.javadoc"/>
  -  <target name="all" depends="clean,meta,merlin,deploy"/>
  +  <target name="all" depends="clean,meta,merlin,deploy,docs"/>
   
     <target name="clean">
        <delete dir="${build}"/>
  -     <delete dir="${dist}"/>
  +     <delete dir="${dist.dir}"/>
        <delete dir="${extensions}"/>
     </target>
   
  @@ -78,7 +89,7 @@
     <target name="prepare"  >
       <mkdir dir="${build}" />
       <mkdir dir="${build}" />
  -    <mkdir dir="${dist}" />
  +    <mkdir dir="${dist.dir}" />
     </target>
   
     <!-- BLOCK -->
  @@ -87,8 +98,8 @@
   
     <target name="merlin.context" depends="prepare">
       <mkdir dir="dist"/>
  -    <uptodate property="uptodate" targetfile="${dist}/${merlin.jar}">
  -      <srcfiles dir="${src}/java">
  +    <uptodate property="uptodate" targetfile="${dist.dir}/${merlin.jar}">
  +      <srcfiles dir="${src.dir}/java">
            <include name="**/merlin/**/*.*"/>
         </srcfiles>
         <srcfiles dir="${etc}">
  @@ -103,26 +114,26 @@
         <javac debug="off" destdir="${build}/main" deprecation="false"
           includes="org/apache/excalibur/merlin/**">
           <classpath>
  -	    <path refid="project.classpath" />
  -          <pathelement path="${dist}/${meta.jar}" />
  +	    <path refid="project.class.path" />
  +          <pathelement path="${dist.dir}/${meta.jar}" />
   	  </classpath>
  -        <src path="${src}/java" />
  +        <src path="${src.dir}/java" />
         </javac>
         <copy todir="${build}/main">
  -        <fileset dir="${src}/java">
  +        <fileset dir="${src.dir}/java">
             <include name="**/merlin/**/*.xinfo"/>
             <include name="**/merlin/**/*.xml"/>
             <include name="**/merlin/**/*.properties"/>
           </fileset>
         </copy>
  -      <jar jarfile="${dist}/${merlin.jar}" 
  +      <jar jarfile="${dist.dir}/${merlin.jar}" 
            basedir="${build}/main" manifest="${etc}/${project.manifest}"/>
     </target>
   
     <target name="meta.context" depends="prepare">
       <mkdir dir="dist"/>
  -    <uptodate property="meta.uptodate" targetfile="${dist}/${meta.jar}">
  -      <srcfiles dir="${src}">
  +    <uptodate property="meta.uptodate" targetfile="${dist.dir}/${meta.jar}">
  +      <srcfiles dir="${src.dir}">
            <include name="**/meta/**/*.*"/>
         </srcfiles>
       </uptodate>
  @@ -134,26 +145,26 @@
         <javac debug="off" destdir="${build}/meta" deprecation="true"
           includes="org/apache/excalibur/meta/**">
           <classpath>
  -	    <path refid="project.classpath" />
  +	    <path refid="project.class.path" />
   	  </classpath>
  -        <src path="${src}/java" />
  +        <src path="${src.dir}/java" />
         </javac>
         <copy todir="${build}/meta">
  -        <fileset dir="${src}/java">
  +        <fileset dir="${src.dir}/java">
             <include name="**/meta/**/*.xinfo"/>
             <include name="**/meta/**/*.xml"/>
             <include name="**/meta/**/*.properties"/>
             <include name="**/meta/**/*.dtd"/>
           </fileset>
         </copy>
  -      <jar jarfile="${dist}/${meta.jar}" 
  +      <jar jarfile="${dist.dir}/${meta.jar}" 
            basedir="${build}/meta" manifest="${etc}/meta.mf"/>
     </target>
   
   
     <target name="demo.context" depends="prepare">
       <mkdir dir="dist"/>
  -    <uptodate property="demo.uptodate" targetfile="${dist}/demo.jar">
  +    <uptodate property="demo.uptodate" targetfile="${dist.dir}/demo.jar">
         <srcfiles dir="demo/src/java">
            <include name="**/*.*"/>
         </srcfiles>
  @@ -168,7 +179,7 @@
         <mkdir dir="${build}/demo"/>
         <javac debug="off" destdir="${build}/demo" deprecation="true">
           <classpath>
  -	    <path refid="project.classpath" />
  +	    <path refid="project.class.path" />
   	  </classpath>
           <src path="demo/src/java" />
         </javac>
  @@ -180,13 +191,13 @@
             <include name="**/*.xprofile"/>
           </fileset>
         </copy>
  -      <jar jarfile="${dist}/demo.jar" basedir="${build}/demo" manifest="demo/src/etc/demo.mf"/>
  +      <jar jarfile="${dist.dir}/demo.jar" basedir="${build}/demo" manifest="demo/src/etc/demo.mf"/>
     </target>
   
     <!-- UTILITY TARGETS -->
   
     <target name="support">
  -    <copy todir="${dist}">
  +    <copy todir="${dist.dir}">
          <fileset dir="${etc}">
            <include name="LICENSE.TXT"/>
            <include name="README.TXT"/>
  @@ -209,18 +220,18 @@
         packagenames="org.apache.excalibur.merlin.*" 
         overview="${merlin.page}"
         >
  -        <sourcepath path="${src}/java"/>
  +        <sourcepath path="${src.dir}/java"/>
           <classpath>
  -	    <path refid="project.classpath" />
  -          <pathelement path="${dist}/${merlin.jar}" />
  -          <pathelement path="${dist}/${meta.jar}" />
  +	    <path refid="project.class.path" />
  +          <pathelement path="${dist.dir}/${merlin.jar}" />
  +          <pathelement path="${dist.dir}/${meta.jar}" />
   	  </classpath>
   	  <link href="${jdk.href}" />
   	  <link href="${avalon.href}" />
   	  <link href="${meta.href}" />
       </javadoc>
       <copy todir="${javadoc.root.path}/${ant.project.name}">
  -      <fileset dir="${src}/etc">
  +      <fileset dir="${src.dir}/etc">
           <include name="*.gif"/>
           <include name="*.xml"/>
         </fileset>
  @@ -239,15 +250,15 @@
         packagenames="org.apache.excalibur.meta.*" 
         overview="${meta.page}"
         >
  -        <sourcepath path="${src}/java"/>
  +        <sourcepath path="${src.dir}/java"/>
           <classpath>
  -	    <path refid="project.classpath" />
  -          <pathelement path="${dist}/${meta.jar}" />
  +	    <path refid="project.class.path" />
  +          <pathelement path="${dist.dir}/${meta.jar}" />
   	  </classpath>
   	  <link href="${jdk.href}" />
   	  <link href="${avalon.href}" />
       </javadoc>
  -    <copy todir="${javadoc.root.path}/meta" file="${src}/etc/meta.gif"/>
  +    <copy todir="${javadoc.root.path}/meta" file="${src.dir}/etc/meta.gif"/>
     </target>
   
     <target name="deploy" depends="build">
  @@ -258,7 +269,7 @@
            <include name="xml-apis.jar"/>
            <include name="xalan-2.3.1.jar"/>
          </fileset>
  -       <fileset dir="${dist}">
  +       <fileset dir="${dist.dir}">
            <include name="${meta.jar}"/>
            <include name="${merlin.jar}"/>
          </fileset>
  @@ -275,27 +286,76 @@
   
     <target name="kernel" depends="deploy">
        <java jar="${extensions}/${merlin.jar}" fork="true">
  -       <arg value="${src}/etc/kernel.xml"/>
  +       <arg value="${src.dir}/etc/kernel.xml"/>
        </java>
     </target>
   
  -  <!-- Creates the full docs -->
  -  <target name="docs" depends="html-docs" description="generates all the Avalon documentation"/>
  +  <target name="anakia-available">
  +        <available classname="org.apache.velocity.anakia.AnakiaTask"
  +            property="AnakiaTask.present">
  +            <classpath refid="tools.class.path"/>
  +        </available>
  +  </target>
  +
  +  <target name="anakia-check" depends="anakia-available" unless="AnakiaTask.present">
  +        <echo>
  +            AnakiaTask is not present! Please check to make sure that
  +            the velocity jar and dependent resources are in your classpath.
  +        </echo>
  +  </target>
  +
  +  <target name="docs" depends="anakia-check" description="Generate documentation and website">
  +
  +        <taskdef name="anakia"
  +            classname="org.apache.velocity.anakia.AnakiaTask">
  +            <classpath refid="tools.class.path"/>
  +        </taskdef>
  +
  +        <anakia basedir="${xdocs.dir}"
  +            destdir="${docs.dir}"
  +            style="docs.vsl"
  +            projectfile="stylesheets/project.xml"
  +            includes="**/*.xml"
  +            excludes="stylesheets/** history/** changes.xml announcement.xml"
  +            velocitypropertiesfile="${xdocs.dir}/stylesheets/velocity.properties"
  +            />
  +
  +        <anakia basedir="${xdocs.dir}"
  +            destdir="${docs.dir}"
  +            style="changes.vsl"
  +            projectfile="stylesheets/project.xml"
  +            includes="changes.xml"
  +            velocitypropertiesfile="${xdocs.dir}/stylesheets/velocity.properties"
  +            />
  +
  +     <copy todir="${docs.dir}" filtering="off">
  +      <fileset dir="${xdocs.dir}">
  +        <include name="**/images/**"/>
  +        <include name="**/*.gif"/>
  +        <include name="**/*.jpg"/>
  +        <include name="**/*.png"/>
  +        <include name="**/*.css"/>
  +        <include name="**/*.js"/>
  +      </fileset>
  +    </copy>
  +  </target>
  +
   
  +  <!-- Creates the full docs using cocoon -->
  +  <!--
  +  <target name="docsx" depends="html-docs" description="generates all the Avalon documentation"/>
     <target name="html-docs" description="generates the xdocs-based documentation">
         <ant antfile="../cocoonbuild.xml"/>
     </target>
  -        
  -  <target name="site" depends="javadocs, docs" description=" Places Docs ready for hosting on website">  
  -  
  +  <target name="site" depends="javadocs, docsx" description=" Places Docs ready for hosting on website">  
         <mkdir dir="../site/dist/docs/${dir-name}"/>
         <copy todir="../site/dist/docs/${dir-name}">
           <fileset dir="${build.docs}">
             <include name="**"/>
           </fileset>
         </copy>        
  -  
     </target>
  +  -->
   
     <target name="patch">
       <replace 
  
  
  
  1.2       +1 -1      jakarta-avalon-excalibur/assembly/default.properties
  
  Index: default.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/default.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- default.properties	16 Jul 2002 11:01:43 -0000	1.1
  +++ default.properties	17 Jul 2002 13:48:37 -0000	1.2
  @@ -40,7 +40,7 @@
   build.tests = ${build.dir}/tests
   build.reports = ${build.dir}/reports
   build.docs = ${build.dir}/docs
  -build.javadocs = ${build.docs}/api
  +build.javadocs = ${build.docs}/assembly
   
   #  Set the properties for source directories
   src.dir = src
  
  
  
  1.4       +2 -1      jakarta-avalon-excalibur/assembly/src/.cvsignore
  
  Index: .cvsignore
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/.cvsignore,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- .cvsignore	4 Jul 2002 09:01:34 -0000	1.3
  +++ .cvsignore	17 Jul 2002 13:48:37 -0000	1.4
  @@ -1 +1,2 @@
  -doc
  \ No newline at end of file
  +doc
  +xdocs~
  \ No newline at end of file
  
  
  
  1.7       +1 -1      jakarta-avalon-excalibur/assembly/src/etc/merlin.html
  
  Index: merlin.html
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/etc/merlin.html,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- merlin.html	15 Jul 2002 02:12:23 -0000	1.6
  +++ merlin.html	17 Jul 2002 13:48:37 -0000	1.7
  @@ -14,7 +14,7 @@
   </p>
   
   <h3>Kernel Model</h3>
  -Merlin seperates the notion of a kernel from a container.  A kernal manages resources (Objects) whereas a container manages services (Objects that serve as service providers and consumers).  The Merlin implementation provides a default kernal that manages a container hierachy.  The kernel provides the framework for overall management including startup, shutting down, extensions management, and other system wide facilities.  The Melin implementation provides a utility class {@link org.apache.excalibur.merlin.Main} that handles establish of a kernel based on a single command line argument.</p>
  +<p>Merlin seperates the notion of a kernel from a container.  A kernal manages resources (Objects) whereas a container manages services (Objects that serve as service providers and consumers).  The Merlin implementation provides a default kernal that manages a container hierachy.  The kernel provides the framework for overall management including startup, shutting down, extensions management, and other system wide facilities.  The Melin implementation provides a utility class {@link org.apache.excalibur.merlin.Main} that handles establish of a kernel based on a single command line argument.</p>
   
   <p>A merlin kernel is created using a kernel model ({@link org.apache.excalibur.merlin.model.KernelDescriptor}).  The model may be defined programatically or through an XML file.  A kernel XML file contains the defintion of kernal execution parameters and a root container.</P>
   <p><i>Minimilist kernel defintion.</i></p>
  
  
  
  1.10      +1 -1      jakarta-avalon-excalibur/assembly/src/etc/project.mf
  
  Index: project.mf
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/etc/project.mf,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- project.mf	12 Jul 2002 15:11:57 -0000	1.9
  +++ project.mf	17 Jul 2002 13:48:37 -0000	1.10
  @@ -7,7 +7,7 @@
   Implementation-Version: 0.1
   Class-Path: avalon-framework.jar logkit.jar excalibur-logger-1.0.jar excalibur-i18n-1.0.jar 
    excalibur-configuration-1.0.jar excalibur-extension-1.0a.jar 
  - avalon-meta.jar 
  + avalon-meta.jar xerces-2.0.1.jar xml-apis.jar xalan-2.3.1.jar
   Main-Class: org.apache.excalibur.merlin.Main
   
   Name: org/apache/excalibur/merlin/container/DefaultContainer.class
  
  
  
  1.4       +12 -1     jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/KernelDescriptor.java
  
  Index: KernelDescriptor.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/KernelDescriptor.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- KernelDescriptor.java	14 Jul 2002 00:55:12 -0000	1.3
  +++ KernelDescriptor.java	17 Jul 2002 13:48:37 -0000	1.4
  @@ -173,4 +173,15 @@
           return m_classpath;
       }
       
  +    /**
  +     * Return the root container.
  +     *
  +     * @return the root {@link ContainerDescriptor}.
  +     */
  +    public ContainerDescriptor getContainer()
  +    {
  +        return m_container;
  +    }
  +
  +
   }
  
  
  
  1.5       +3 -1      jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/builder/XMLKernelCreator.java
  
  Index: XMLKernelCreator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-excalibur/assembly/src/java/org/apache/excalibur/merlin/model/builder/XMLKernelCreator.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XMLKernelCreator.java	14 Jul 2002 12:11:20 -0000	1.4
  +++ XMLKernelCreator.java	17 Jul 2002 13:48:37 -0000	1.5
  @@ -60,6 +60,8 @@
           LoggingDescriptor logging = createLoggingDescriptor( config.getChild("logging"), name );
           ExtensionsDescriptor extensions = createExtensionsDescriptor( config.getChild("extensions") );
           ClasspathDescriptor classpath = createClasspathDescriptor( config.getChild("classpath") );
  +
  +        manager.addClasspath( classpath );
           ContainerDescriptor container = createContainerDescriptor( config.getChild("container"), manager );
           return new KernelDescriptor( name, logging, extensions, container );
       }
  
  
  
  1.1                  jakarta-avalon-excalibur/assembly/src/xdocs/container.xml
  
  Index: container.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <document>
    <properties>
      <title>Container</title>
      <author email="mcconnell@apache.org">Stephen McConnell</author>
    </properties>
    <body>
  
      <section name="Container">
  
        <p>The Merlin system provides support for a cascading containers. This model enables component assemblers to associate jar files under a protected container scope where each container is associated with its own classloader.</p>
        <p>Merlin will handle resolution of service dependencies for components contained in containers by looking for explicitly declared components commencing within the local container, and working progressively up the container hierachy.  If no explict solutions are resolved, Merlin will attempt to build an implicit solution based on components declared in the respective container classpath declarations.</p>
  
      </section>
  
      <section name="Container Model">
  
        <p>A new container is created using a container model.  The model is the defintion of the container, its classpath, and the profiles of the components it is resposible for managing.  Container models are declared programatically or via an XML description.</p>
  
        <p><i>Minimilist container defintion.</i></p>
  <pre>
      &lt;container name="<font color="darkred">root</font>"&gt;
        &lt;classpath&gt;
          &lt;fileset dir=<font color="darkred">"dist"</font>&gt;
            &lt;include name="<font color="darkred">demo.jar</font>"/&gt;
          &lt;/fileset&gt;
        &lt;/classpath&gt;
        &lt;component name="<font color="darkred">test</font>" class="<font color="darkred">org.apache.excalibur.playground.BasicComponent</font>"/&gt;
      &lt;/container&gt;
  </pre>
  
      </section>
  
    </body>
  
    <footer>
      <legal>
        Copyright (c) @year@ The Jakarta Apache Project All rights reserved.
        $Revision: 1.1 $ $Date: 2002/07/17 13:48:37 $
      </legal>
    </footer>
  
  </document>
  
  
  
  1.1                  jakarta-avalon-excalibur/assembly/src/xdocs/containers.xml
  
  Index: containers.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <document>
    <properties>
      <title>Containers</title>
      <author email="mcconnell@apache.org">Stephen McConnell</author>
    </properties>
    <body>
  
      <section name="Container">
  
        <p>The Merlin system provides support for a cascading containers. This model enables component assemblers to associate jar files under a protected container scope where each container is associated with its own classloader.</p>
        <p>Merlin will handle resolution of service dependencies for components contained in containers by looking for explicitly declared components commencing within the local container, and working progressively up the container hierachy.  If no explict solutions are resolved, Merlin will attempt to build an implicit solution based on components declared in the respective container classpath declarations.</p>
  
      </section>
  
      <section name="Container Model">
  
        <p>A new container is created using a container model.  The model is the defintion of the container, its classpath, and the profiles of the components it is resposible for managing.  Container models are declared programatically or via an XML description.</p>
  
        <p><i>Minimilist container defintion.</i></p>
  <pre>
      &lt;container name="<font color="darkred">root</font>"&gt;
        &lt;classpath&gt;
          &lt;fileset dir=<font color="darkred">"dist"</font>&gt;
            &lt;include name="<font color="darkred">demo.jar</font>"/&gt;
          &lt;/fileset&gt;
        &lt;/classpath&gt;
        &lt;component name="<font color="darkred">test</font>" class="<font color="darkred">org.apache.excalibur.playground.BasicComponent</font>"/&gt;
      &lt;/container&gt;
  </pre>
  
      </section>
  
    </body>
  
    <footer>
      <legal>
        Copyright (c) @year@ The Jakarta Apache Project All rights reserved.
        $Revision: 1.1 $ $Date: 2002/07/17 13:48:37 $
      </legal>
    </footer>
  
  </document>
  
  
  
  1.1                  jakarta-avalon-excalibur/assembly/src/xdocs/deployment.xml
  
  Index: deployment.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <document>
    <properties>
      <title>Deployment</title>
      <author email="mcconnell@apache.org">Stephen McConnell</author>
    </properties>
    <body>
      <section name="Deployment">
  
  <p>Components types deployed under this framework must be declared as formal component types using a &lt;classname&gt;.xinfo descriptor as defined by the <a href="api/meta/index.html">Avalon Meta Model,</a>. Components types may also deployed with default profile criteria and configuration information.</p>
  
  <ul>
    <li>&lt;classname&gt;.xinfo
      <ul>
        <li>General component type information.</li>
        <li>Context constraints.</li>
        <li>Dependecies.</li>
        <li>Service declarations.</li>
      </ul>
    </li>
    <li>&lt;classname&gt;.xprofile
      <ul>
        <li>Packaged profile containing type instantiation criteria.</li>
      </ul>
    </li>
    <li>&lt;classname&gt;.xconfig
      <ul>
        <li>Default configuration/parameter.</li>
        <li>Default context directives.</li>
      </ul>
    </li>
  </ul>
  
        <p>Components assembly rerquires the declaration of at least one component with the kernal configuration profile. The profile enables the declaration of a hierachy of containers and component profiles within containers.  The containers within a hierachy collaborate to resolve service dependecies for the components they respectively manage.</p>
  
        <p>Example components and a kernel.xml profile are included in the distribution.</p>
  
      </section>
  
    </body>
  
    <footer>
      <legal>
        Copyright (c) @year@ The Jakarta Apache Project All rights reserved.
        $Revision: 1.1 $ $Date: 2002/07/17 13:48:37 $
      </legal>
    </footer>
  
  </document>
  
  
  
  1.1                  jakarta-avalon-excalibur/assembly/src/xdocs/index.xml
  
  Index: index.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <document>
    <properties>
      <title>Overview</title>
      <author email="mcconnell@apache.org">Stephen McConnell</author>
    </properties>
    <body>
  
      <section name="Introduction">
  
        <p>Merlin 2 is a container including a set of services dealing with the definition 
        of a system kernel, container hierarchies, component assembly, component deployment, and
        decommissioning.</p>
  
        <p>Main components of the framework include:
        <ul>
          <li>Application Kernel.</li>
          <li>Heirachical container model.</li>
          <li>Automated assembly system.</li>
          <li>Component defaults management.</li>
          <li>Candidate resolution.</li>
        </ul>
        </p>
  
        <p>The function of the kernel is to provide a set of bootstap services and context 
        entries to the container it is managing, and subsequently publish establish entries 
        and services (derived from container deployment) towards kernel clients.</p>
  
      </section>
  
      <section name="Demo">
  
        <p>The Merlin project includes a number of demonstration components.  One of these
        components declares several dependencies, which in turn refer to other components
        with dependencies.  A sample kernel.xml file included in this distribution references
        this component as a target.  Merlin handles the resolution of all dependecies, activation
        ordering, and the lifecycle processing automatically.</p>
  
        <p>To build and execute the demo, invoke the following commands:</p>
        <pre>
        $ ant
        $ kernel 
        </pre>
        <p>For a description of the demo see the javadoc document for the <a href="api/assembly/org/apache/excalibur/merlin/Main.html">Main</a> class.</p>
  
  
      </section>
  
      <section name="Status">
  
        <p>Merlin 2.0 is under active ALPHA development.  APIs are subject to change.
        Merlin 2.0 is operational and usable for a broad spectrum of components.  However, 
        work relating to configuration management, context management and service manager 
        management.</p>
      </section>
  
    </body>
  
    <footer>
      <legal>
        Copyright (c) @year@ The Jakarta Apache Project All rights reserved.
        $Revision: 1.1 $ $Date: 2002/07/17 13:48:37 $
      </legal>
    </footer>
  
  </document>
  
  
  
  1.1                  jakarta-avalon-excalibur/assembly/src/xdocs/kernel.xml
  
  Index: kernel.xml
  ===================================================================
  <?xml version="1.0"?>
  
  <document>
  
    <properties>
      <title>Kernel</title>
      <author email="mcconnell@apache.org">Stephen McConnell</author>
    </properties>
  
    <body>
  
      <section name="Kernel">
  
      <p>Merlin seperates the notion of a kernel from a container.  A kernel manages resources (Objects) whereas a container manages services.  The Merlin implementation provides a default kernel that manages a container hierachy.  The <a href="api/assembly/org/apache/excalibur/merlin/kernel/DefaultKernel.html">DefaultKernel</a> implementation provides the framework for overall management including startup, shutting down, extensions management, and other system wide facilities.  The Melin implementation provides a utility class (<a href="api/assembly/org/apache/excalibur/merlin/Main.html">Main</a>) that handles establish of a kernel based on a single command line argument.</p>
  
      <p>The function of the kernel is to provide a set of bootstap services and context entries to the container it is managing, and subsequently publish establish entries and services (derived from container deployment) towards kernel clients.</p>
  
      <p><i>Kernel to Container conceptual relationship.</i></p>
  
      <img src="/images/overview.gif" />
  
    </section>
  
    <section name="Kernel Model">
  
      <p>A merlin kernel is created using a kernel model (<a href="api/assembly/org/apache/excalibur/merlin/model/KernelDescriptor.html">KernelDescriptor</a>).  The model may be defined programatically or through an XML file.  A kernel XML file contains the defintion of kernel execution parameters and a root container.</p>
  
      <p><i>Minimilist kernel defintion.</i></p>
  <pre>
    &lt;kernel&gt;
      &lt;classpath&gt;
        &lt;fileset dir=<font color="darkred">"dist"</font>&gt;
          &lt;include name="<font color="darkred">demo.jar</font>"/&gt;
        &lt;/fileset&gt;
      &lt;/classpath&gt;
      &lt;container name="<font color="darkred">root</font>"&gt;
        &lt;component name="<font color="darkred">test</font>" class="<font color="darkred">org.apache.excalibur.playground.BasicComponent</font>"/&gt;
      &lt;/container&gt;
    &lt;/kernel&gt;
  </pre>
  
  </section>
  
  </body>
  
    <footer>
      <legal>
        Copyright (c) @year@ The Jakarta Apache Project All rights reserved.
        $Revision: 1.1 $ $Date: 2002/07/17 13:48:37 $
      </legal>
    </footer>
  
  </document>
  
  
  
  1.1                  jakarta-avalon-excalibur/assembly/src/xdocs/css/ns4_only.css
  
  Index: ns4_only.css
  ===================================================================
  /* simple rules suitable for Netscape 4.x only; richer rules are in tigris.css. see <http://style.tigris.org/> */
  
  /* colors, backgrounds, borders, link indication */ 
  
  body {
   background: #fff;
   color: #000;
   }
  #leftcol a:link, #leftcol a:visited {
   color: blue;
   }
  a:active, a:hover, #leftcol a:active, #leftcol a:hover {
   color: #f30;
   }
  #login a:link, #login a:visited {
   color: white; 
   text-decoration: underline;
   }
  #banner a:active, #banner a:hover {
   color: #f90;
   }
  #leftcol a, #breadcrumbs a  {
   text-decoration: none;
   }
  h2 .lastchild {
   color: #777
   } 
  .a td { 
   background: #ddd;
   }
  .b td { 
   background: #efefef;
   }
  .tabs td, .tabs th {
   background-color: #ddd;
   }
  body .app th {
   background-color: #bbb;
   }
  body .tabs th {
   background-color: #888;
   color: #fff;
   }
  body .app .axial th {
   background-color: #ddd;
   color: black
   }
  .tabs td {
   background-color: #ddd;
   }
  .alert { 
   color: #c00;
   }
  .confirm {
   color: green;
   }
  .info {
   color: blue;
   }
  .selection {
   background: #ffc;
   }
  #login {
   color: #fff;
   }
  #helptext th {
   background: #cc9;
   }
  #helptext td {
   background: #ffc;
   }
  .tabs a  {
   text-decoration: none;
   }
  #navcolumn div strong {
   color: #555;
   }
  #banner, #banner td { 
   background: #036;
   color: #fff;
   }
  body #banner #login a { 
   color: white;
   }
  
  
  /* font and text properties, exclusive of link indication, alignment, text-indent */
  
  body, div, p, th, td, li, dl, dd {
   font-family: Lucida, Arial, Helvetica, sans-serif;
   }
  code, pre {
   font-family: 'Andale Mono', Courier, monospace;
   }
  h2, h3, h4 {
   font-family: Tahoma, Verdana, Helvetica, Arial, sans-serif;
   }
  .selection {
   font-weight: bold
   }
  #login .username {
   font-weight: bold;
   }
  
  
  /* box properties (exclusive of borders), positioning, alignments, list types, text-indent */
  
  th, td {
   text-align: left;
   vertical-align: top 
   }
  .right {
   text-align: right;
   }
  .center {
   text-align: center;
   }
  body .app .axial th {
   text-align: right;
   }
  .app .axial td th {
   text-align: left;
   }
  body td .stb {
   margin-top: 1em;
   text-indent: 0;
   }
  body td .mtb {
   margin-top: 2em;
   text-indent: 0;
   }
  dd {
   margin-bottom: .67em;
   }
  #footer {
   margin: 4px
   }
  #helptext {
   margin-top: 1em
   }
  #helptext td div {
   margin: .5em
   }
  .courtesylinks {
   margin-top: 1em;
   padding-top: 1em
   }
  #navcolumn div {
   margin-bottom: .5em;
   }
  #navcolumn div div {
   margin-top: .3em
   }
  #navcolumn div div {
   padding-left: 1em;
   }
  #banner, #banner td { 
   vertical-align: middle;
   }
  body.docs, body.nonav {
   margin: 1em
   }
  
  
  
  1.1                  jakarta-avalon-excalibur/assembly/src/xdocs/css/print.css
  
  Index: print.css
  ===================================================================
  #banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks	{
  	display: none;
  	}
  body.docs div.docs	{
  	margin: 0 !important;
  	border: none !important
  	}
  
  
  
  1.1                  jakarta-avalon-excalibur/assembly/src/xdocs/css/site.css
  
  Index: site.css
  ===================================================================
  
  div#banner {
   border-top: 1px solid #fff;
   border-bottom: 1px solid #aaa;
  }
  
  #banner, #banner td {
   background: #fff;
   color: #036;
  }
  
  #source {
   background-color: #fff;
   color: #000;
   border-right: 1px solid #888;
   border-left: 1px solid #888;
   border-top: 1px solid #888;
   border-bottom: 1px solid #888;
   margin-right: 7px;
   margin-left: 7px;
   margin-top: 1em;
  }
  
  #source pre {
   margin-right: 7px;
   margin-left: 7px;
  }
  
  
  
  1.1                  jakarta-avalon-excalibur/assembly/src/xdocs/css/tigris.css
  
  Index: tigris.css
  ===================================================================
  /* contains rules unsuitable for Netscape 4.x; simpler rules are in ns4_only.css. see <http://style.tigris.org/> */
  
  /* colors, backgrounds, borders, link indication */ 
  
  body {
   background: #fff;
   color: #000;
   }
  .app h3, .app h4, .tabs td, .tabs th, .functnbar {
   background-image: url(../images/nw_min.gif);
   background-repeat: no-repeat;
   }
  #navcolumn div div, body.docs #toc li li  {
   background-image: url(../images/strich.gif);
   background-repeat: no-repeat;
   background-position: .5em .5em;
   }
  #navcolumn div div.heading  {
   background-image: none;
   }
  .app h3, .app h4 {
   color: #fff;
   }
  .app h3 {
   background-color: #036;
   }
  .app h4 { 
   background-color: #888;
   }
  .a td { 
   background: #ddd;
   }
  .b td { 
   background: #efefef;
   }
  table, th, td {
   border: none
   } 
  .mtb {
   border-top: solid 1px #ddd;
   }
  div.colbar {
   background: #bbb;
   }
  #banner {
   border-top: 1px solid #369;
   border-bottom: 1px solid #003;
   }
  div#helptext th {
   border-bottom: 1px solid #996;
   border-right: 1px solid #996;
   }
  div#helptext td {
   border-bottom: 1px solid #cc9;
   border-right: 1px solid #cc9;
   }
  .tabs th {
   border-right: 1px solid #333;
   background-color: #ddd;
   color: #fff;
   }
  .tabs td {
   background-color: #999;
   border-bottom: 1px solid #fff;
   border-right: 1px solid #fff;
   }
  .tabs { 
   border-bottom: 6px #ddd solid;
   }
  .tabs th, .tabs th a:link, .tabs th a:visited {
   color: #555;
   }
  .tabs td, .tabs td a:link, .tabs td a:visited  { 
   color: #fff;
   }
  .tabs a  {
   text-decoration: none;
   }
  #navcolumn {
   background: #eee;
   border-right: 1px solid #aaa;
   border-bottom: 1px solid #aaa;
   }
  #breadcrumbs {
   border-bottom: 1px solid #aaa;
   background-color: #ddd
   }
  #navcolumn, #breadcrumbs {
   border-top: 1px solid #fff;
   }
  #rightcol div.www, #rightcol div.help {
   border: 1px solid #ddd;
   }
  div#navcolumn div.focus { 
   border-top: 1px solid #aaa;
   border-left: 1px solid #aaa;
   background-color: #fff;
   } 
  body.docs div.docs { 
   background: #fff;
   border-left: 1px solid #ddd;
   border-top: 1px solid #ddd;
   }
  body.docs { 
   background: #eee url(../images/help_logo.gif) top right no-repeat !important;
   }
  .docs h3, .docs h4 {
   border-top: solid 1px #000;
   }
  #alerterrormessage { 
   background: url(../images/icon_alert.gif) top left no-repeat !important;
   }
  .functnbar {
   background-color: #aaa;
   }
  .functnbar2, .functnbar3  {
   background: #aaa url(../images/sw_min.gif) no-repeat bottom left;
   }
  .functnbar3 {
   background-color: #ddd;
   }
  .functnbar, .functnbar2, .functnbar3 {
   color: #000;
   }
  .functnbar a, .functnbar2 a, .functnbar3 a {
   color: #000;
   text-decoration: underline;
   }
  #topmodule {
   background: #ddd;
   border-top: 1px solid #fff;
   border-bottom: 1px solid #aaa; 
   border-right: 1px solid #aaa; 
   }
  #topmodule #issueid {
   border-right: 1px solid #aaa;
   }
  a:link, #navcolumn a:visited, .app a:visited, .tasknav a:visited {
   color: blue;
   }
  a:link.selfref, a:visited.selfref {
   color: #555 !important;
   text-decoration: none;
   }
  a:active, a:hover, #leftcol a:active, #leftcol a:hover {
   color: #f30 !important;
   }
  #login a:link, #login a:visited {
   color: white; 
   text-decoration: underline;
   }
  #banner a:active, #banner a:hover {
   color: #f90 !important;
   }
  #leftcol a, #breadcrumbs a  {
   text-decoration: none;
   }
  #apphead h2 em {
   color: #777;
   }
  a:link.selfref, a:visited.selfref {
   color: #555 !important;
   text-decoration: none;
   }
  .app th {
   background-color: #bbb;
   }
  .axial th {
   background-color: #ddd;
   color: black
   }
  .alert { 
   color: #c00;
   }
  .confirm {
   color: green;
   }
  .info {
   color: blue;
   }
  .selection {
   background: #ffc;
   }
  #login {
   color: #fff;
   }
  #helptext th {
   background: #cc9;
   }
  #helptext td {
   background: #ffc;
   }
  #navcolumn div strong {
   color: #000;
   }
  #banner, #banner td { 
   background: #036;
   color: #fff;
   }
  body #banner #login a { 
   color: #fff;
   }
  h4 a:link, h4 a:visited  {
   text-decoration: underline;
   color: #fff;
   }
  
  /* font and text properties, exclusive of link indication, alignment, text-indent */
  
  body, th, td, input, select, textarea, h2 small {
   font-family: Verdana, Helvetica, Arial, sans-serif;
   }
  code, pre {
   font-family: 'Andale Mono', Courier, monospace;
   }
  html body, body th, body td, textarea, h2 small, .app h3, .app h4, #rightcol h3, #bodycol pre, #bodycol code {
   font-size: x-small;
   voice-family: "\"}\"";
   voice-family: inherit;
   font-size: small
   }
  html>body, html>body th, html>body td, html>body input, html>body select, html>body textarea, html>body h2 small, html>body .app h3, html>body .app h4, html>body #rightcol h3, html>body #bodycol pre, html>body #bodycol code {
   font-size: small
   }
  small, div#footer td, div#login, div.tabs th, div.tabs td, input, select, .paginate, .functnbar, .functnbar2, .functnbar3, #breadcrumbs td, .courtesylinks, #rightcol div.help, .colbar, .tasknav, body.docs div#toc, #leftcol {
   font-size: x-small;
   voice-family: "\"}\"";
   voice-family: inherit;
   font-size: x-small
   }
  html>body small, html>body div#footer td, html>body div#login, html>body div.tabs th, html>body div.tabs td, html>body input, html>body select, html>body .paginate, html>body .functnbar, html>body .functnbar2, html>body .functnbar3, html>body #breadcrumbs td, html>body .courtesylinks, html>body #rightcol div.help, html>body .colbar, html>body .tasknav, html>body.docs #toc, html>body #leftcol {
   font-size: x-small
   }
  #bodycol h2 {
   font-family: Tahoma, Verdana, Helvetica, Arial, sans-serif;
   font-size: 1.5em;
   font-weight: normal;
   }
  .tabs td, .tabs th, dt, .tasknav .selfref, #login .username, .selection {
   font-weight: bold
   }
  h4 {
   font-size: 1em;
   }
  #apphead h2 em {
  	font-style: normal;
   } 
  
  /* box properties (exclusive of borders), positioning, alignments, list types, text-indent */
  
  #bodycol h2 {
   margin-top: .3em;
   margin-bottom: .5em;
   }
  p, ul, ol, dl {
   margin-top: .67em;
   margin-bottom: .67em;
   }
  h3, h4 {
   margin-bottom: 0;
   }
  form {
   margin-top: 0;
   margin-bottom: 0;
   }
  #bodycol {
   padding-left: 12px;
   padding-right: 12px;
   width: 100%;
   voice-family: "\"}\"";
   voice-family: inherit;
   width: auto;
   }
  html>body #bodycol {
   width: auto;
   }
  .docs {
   line-height: 1.4;
   }
  .app h3, .app h4 {
   padding: 5px;
   margin-right: 2px;
   margin-left: 2px;
   }
  .h3 p, .h4 p, .h3 dt, .h4 dt {
   margin-right: 7px;
   margin-left: 7px;
   }
  .tasknav {
   margin-bottom: 1.33em
   }
  div.colbar {
   padding: 3px;
   margin: 2px 2px 0;
   }
  .tabs { 
   margin-top: .67em;
   margin-right: 2px;
   margin-left: 2px;
   }
  #leftcol {
   padding-bottom: .5em;
   }
  #breadcrumbs td {
   vertical-align: middle;
   padding: 2px 8px;
   } 
  .tabs td, .tabs th {
   padding: 3px 9px;
   }
  #rightcol div.www, #rightcol div.help {
   padding: 0 .5em
   }
  #navcolumn {
   margin: -8px -8px 0 -8px;
   padding: 4px;
   }
  #navcolumn div {
   padding-left: 5px
   }
  div#navcolumn div div {
   margin-top: .3em;
   margin-bottom: .3em;
   }
  div#navcolumn div.focus { 
   margin-top: -.1em;
   padding: .2em 4px; 
   } 
  body.docs #toc { 
   position: absolute;
   top: 15px;
   left: 0px;
   width: 120px;
   padding: 0 20px 0 0
   }
  body.docs #toc ul, #toc ol {
   margin-left: 0;
   padding-left: 0;
   }
  body.docs #toc li {
   margin-top: 7px;
   padding-left: 10px;
   list-style-type: none;
   }
  body.docs div.docs { 
   margin: 61px 0 0 150px;
   padding: 1em 2em 1em 1em !important;
   }
  .docs p+p {
   text-indent: 5%;
   margin-top: -.67em
   }
  .docs h3, .docs h4 {
   margin-bottom: .1em;
   padding-top: .3em;
   }
  #alerterrormessage { 
   padding-left: 100px;
   }
  .functnbar, .functnbar2, .functnbar3 {
   padding: 5px;
   margin: .67em 2px;
   }
  #topmodule td {
   vertical-align: middle;
   padding: 2px 8px
   } 
  body {
   padding: 1em;
   }
  body.composite, body.docs {
   margin: 0;
   padding: 0;
   }
  th, td {
   text-align: left;
   vertical-align: top 
   }
  .right {
   text-align: right !important;
   }
  .center {
   text-align: center !important;
   }
  .axial th {
   text-align: right;
   }
  .app .axial td th {
   text-align: left;
   }
  body td .stb {
   margin-top: 1em;
   text-indent: 0;
   }
  body td .mtb {
   margin-top: 2em;
   text-indent: 0;
   }
  dd {
   margin-bottom: .67em;
   }
  #footer {
   margin: 4px
   }
  #helptext {
   margin-top: 1em
   }
  #helptext td div {
   margin: .5em
   }
  .courtesylinks {
   margin-top: 1em;
   padding-top: 1em
   }
  #navcolumn div {
   margin-bottom: .5em;
   }
  #navcolumn div div {
   margin-top: .3em
   }
  #navcolumn div div {
   padding-left: 1em;
   }
  #banner, #banner td { 
   vertical-align: middle;
   }
  
  
  
  1.1                  jakarta-avalon-excalibur/assembly/src/xdocs/images/build.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-avalon-excalibur/assembly/src/xdocs/images/code.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-avalon-excalibur/assembly/src/xdocs/images/design.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-avalon-excalibur/assembly/src/xdocs/images/merlin_logo.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-avalon-excalibur/assembly/src/xdocs/images/meta.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-avalon-excalibur/assembly/src/xdocs/images/overview.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-avalon-excalibur/assembly/src/xdocs/images/update.gif
  
  	<<Binary file>>
  
  
  1.1                  jakarta-avalon-excalibur/assembly/src/xdocs/stylesheets/changes.vsl
  
  Index: changes.vsl
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  
  #parse( "templates.vm" )
  
  <!-- Content Stylesheet for Site -->
  
      ## Defined variables
      #set ($bodybg = "#ffffff")
      #set ($bodyfg = "#000000")
      #set ($bodylink = "#525D76")
      #set ($bannerbg = "#525D76")
      #set ($bannerfg = "#ffffff")
      #set ($subbannerbg = "#828DA6")
      #set ($subbannerfg = "#ffffff")
      #set ($tablethbg = "#039acc")
      #set ($tabletdbg = "#a0ddf0")
      #set ($pound = "#" )
  
  <!-- start the processing -->
  #changes()
  <!-- end the processing -->
  
  #macro (change $action)
    <p>$action.getText() ($action.getAttributeValue("dev"))</p>
  #end
  
  #macro (changeset $release)
    <table border="0" cellspacing="0" cellpadding="2" width="100%">
      <tr><td bgcolor="$subbannerbg">
        <font color="$subbannerfg" face="arial,helvetica,sanserif">
          <strong>
            Revision $release.getAttributeValue("version") ($release.getAttributeValue("date"))
          </strong>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
          <ul>
          #foreach ($action in $release.getChildren("action"))
          <li>#change ($action)</li>
          #end
          </ul>
        </blockquote>
      </td></tr>
    </table>
    </a>
  #end
  
  #macro (changes)
    #header
    <table border="0" cellspacing="0" cellpadding="2" width="100%">
      <tr><td bgcolor="$bannerbg">
        <font color="$bannerfg" face="arial,helvetica,sanserif">
          <strong>ChangeLog</strong>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
        #set ($releases = $root.getChildren("release"))
        #foreach ( $release in $releases )
          #changeset ($release)
        #end
        </blockquote>
      </td></tr>
    </table>
    #footer
  #end
  
  
  
  1.1                  jakarta-avalon-excalibur/assembly/src/xdocs/stylesheets/docs.vsl
  
  Index: docs.vsl
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  
  #parse ( "templates.vm" )
  
  #macro(document)
    #header()
    #set($allSections = $root.getChild("body").getChildren("section"))
    #foreach( $section in $allSections )
      #section ($section)
    #end
    #footer()
  #end
  
  #macro ( subsection $subsection)
    <div class="h4">
      #if ( $subsection.getAttributeValue("anchor") )
        #set ($anchor = $subsection.getAttributeValue("anchor"))
      #else
        #set ($anchor = $subsection.getAttributeValue("name"))
      #end
      <h4><a name="$anchor">$subsection.getAttributeValue("name")</a></h4>
      #foreach ( $items in $subsection.getChildren() )
        #copy($items)
      #end
    </div>
  #end
  
  #macro (section $section)
    <div class="h3">
      #if ( $section.getAttributeValue("anchor") )
        #set ($anchor = $section.getAttributeValue("anchor"))
      #else
        #set ($anchor = $section.getAttributeValue("name"))
      #end
      <h3><a name="$anchor">$section.getAttributeValue("name")</a></h3>
      #foreach ( $items in $section.getChildren() )
        #if ($items.getName().equals("subsection"))
          #subsection ($items)
        #else
          #copy($items)
        #end
      #end
    </div>
  #end
  
  #parse ( "templates.vm" )
  
  <!-- This is a generated file.  Do not edit. -->
  #document()
  
  
  
  1.1                  jakarta-avalon-excalibur/assembly/src/xdocs/stylesheets/project.xml
  
  Index: project.xml
  ===================================================================
  <project name="Avalon Merlin"
      href="http://jakarta.apache.org/avalon/merlin">
  
      <title>Merlin Service Management</title>
      <logo href="images/merlin_logo.gif">Merlin</logo>
  
      <body>
  
          <item name="Jakarta main" href="http://jakarta.apache.org/"/>
          <item name="Avalon main" href="http://jakarta.apache.org/avalon"/>
  
          <menu name="Essentials">
              <item name="Overview" href="/index.html"/>
              <item name="Kernel" href="/kernel.html"/>
              <item name="Containers" href="/containers.html"/>
              <item name="Deployment" href="/deployment.html"/>
          </menu>
  
          <menu name="Reference">
              <item name="Merlin API" href="/api/assembly/index.html"/>
              <item name="Meta-Info API" href="/api/meta/index.html"/>
          </menu>
  
      </body>
  
  </project>
  
  
  
  1.1                  jakarta-avalon-excalibur/assembly/src/xdocs/stylesheets/templates.vm
  
  Index: templates.vm
  ===================================================================
  #macro (header)
    <html>
      <head>
        <style type="text/css">
          @import url("$relativePath/css/tigris.css");
          @import url("$relativePath/css/site.css");
        </style>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
  
        #set ($authors = $root.getChild("properties").getChildren("author"))
        #foreach ( $au in $authors )
          #metaauthor ( $au.getText() $au.getAttributeValue("email") )
        #end
  
        <title>$project.getChild("title").getText() - $root.getChild("properties").getChild("title").getText()</title>
      </head>
  
      <body marginwidth="0" marginheight="0" class="composite">
  
        <div id="banner">
          <table border="0" cellspacing="0" cellpadding="8" width="100%">
            <!-- TOP IMAGE -->
            <tr>
              <td>#getProjectImage()</td>
              <td><div align="right" valign="bottom"><b><font size="+3">$project.getChild("title").getText()</font></b></div></td>
            </tr>
          </table>
        </div>
  
        <table border="0" cellspacing="0" cellpadding="8" width="100%" id="main">
          <tr valign="top">
            <!-- LEFT SIDE NAVIGATION -->
            <td id="leftcol" width="20%">
              <div id="navcolumn">
              #makeProject()
              </div>
            </td>
            <td><div id="bodycol"><div class="app">
  #end
  
  #macro (footer)
            </div>
  	#getAuthorList()
            </div></td>
          </tr>
        </table>
  
        <!-- FOOTER -->
        <div id="footer">
          <table border="0" cellspacing="0" cellpadding="4">
            <tr>
              <td>Copyright &#169; 1999-2002, Apache Software Foundation</td>
            </tr>
          </table>
        </div>
  
      </body>
    </html>
  #end
  
  #macro ( subsection $subsection)
    <div class="h4">
      #if ( $subsection.getAttributeValue("anchor") )
        #set ($anchor = $subsection.getAttributeValue("anchor"))
      #else
        #set ($anchor = $subsection.getAttributeValue("name"))
      #end
      <h4><a name="$anchor">$subsection.getAttributeValue("name")</a></h4>
      #foreach ( $items in $subsection.getChildren() )
        #copy($items)
      #end
    </div>
  #end
  
  #macro (section $section)
    <div class="h3">
      #if ( $section.getAttributeValue("anchor") )
        #set ($anchor = $section.getAttributeValue("anchor"))
      #else
        #set ($anchor = $section.getAttributeValue("name"))
      #end
      <h3><a name="$anchor">$section.getAttributeValue("name")</a></h3>
      #foreach ( $items in $section.getChildren() )
        #if ($items.getName().equals("subsection"))
          #subsection ($items)
        #else
          #copy($items)
        #end
      #end
    </div>
  #end
  
  #macro ( table $table)
    #set ($rowcount = 1)
    <table cellpadding="3" cellspacing="2" border="1" width="100%">
    #foreach ( $items in $table.getChildren() )
      #if ($items.getName().equals("tr"))
        #tr ($items)
      #end
    #end
    </table>
  #end
  
  #macro ( tr $tr)
    #printRow ($rowcount)
    #set ($rowcount = $rowcount + 1)
    #foreach ( $items in $tr.getChildren() )
      #if ($items.getName().equals("td"))
        #td ($items)
      #elseif ($items.getName().equals("th"))
        #th ($items)
      #end
    #end
    </tr>
  #end
  
  #macro (printRow $count)
    #if ($count % 2 > 0)
      <tr class="a">
    #else
      <tr class="b">
    #end
  #end
  
  #macro ( td $value)
    <td
      #if ($value.getAttributeValue("colspan"))
        #set ($colspan = $value.getAttributeValue("colspan"))
        colspan="$!colspan"
      #end
      #if ($value.getAttributeValue("rowspan"))
        #set ($rowspan = $value.getAttributeValue("rowspan"))
        rowspan="$!rowspan"
      #end
    >
      #if ($value.getText().length() != 0 || $value.hasChildren())
        #copycontent($value)
      #else
        &nbsp;
      #end
    </td>
  #end
  
  #macro ( th $value)
    <th
      #if ($value.getAttributeValue("colspan"))
         #set ($colspan = $value.getAttributeValue("colspan"))
         colspan="$!colspan"
      #end
      #if ($value.getAttributeValue("rowspan"))
        #set ($rowspan = $value.getAttributeValue("rowspan"))
        rowspan="$!rowspan"
      #end
    >
      #if ($value.getText().length() != 0 || $value.hasChildren())
        #copycontent($value)
      #else
        &nbsp;
      #end
    </th>
  #end
  
  #macro ( anchor $name $value )
    #if ($value.startsWith("http://"))
      <a href="$value">$name</a>
    #elseif ($value.startsWith("/site"))
      <a href="http://jakarta.apache.org$value">$name</a>
    #elseif ( $value.startsWith("/") )
      <a href="$relativePath$value">$name</a>
    #else
      <a href="$value">$name</a>
    #end
  #end
  
  #macro ( metaauthor $author $email )
    <meta name="author" value="$author">
    <meta name="email" value="$email">
  #end
  
  #macro ( image $value )
    #if ($value.getAttributeValue("width"))
      #set ($width=$value.getAttributeValue("width"))
    #end
    #if ($value.getAttributeValue("height"))
      #set ($height=$value.getAttributeValue("height"))
    #end
    #if ($value.getAttributeValue("align"))
      #set ($align=$value.getAttributeValue("align"))
    #end
    <img src="$relativePath$value.getAttributeValue("src")">
  #end
  
  #macro ( source $value)
    <div id="source">
      <pre>$escape.getText( $value.text.trim() )</pre>
    </div>
  #end
  
  #macro ( makeProject )
    #set ($menus = $project.getChild("body").getChildren("menu"))
    #foreach ( $menu in $menus )
      <div>
        <strong>$menu.getAttributeValue("name")</strong>
        #foreach ( $item in $menu.getChildren() )
          #set ($name = $item.getAttributeValue("name"))
          <div><small>#anchor($name $item.getAttributeValue("href"))</small></div>
        #end
      </div>
    #end
  #end
  
  #macro (getProjectImage)
    #if ($project.getChild("logo"))
      <td align="left">
      <a href="http://jakarta.apache.org"><img src="http://jakarta.apache.org/images/jakarta-logo.gif" border="0"/></a>
      </td>
      <td align="right">
      #set ( $logoString = $project.getChild("logo").getAttributeValue("href") )
      #if ( $logoString.startsWith("/") )
        <a href="$project.getAttributeValue("href")"><img src="$relativePath$logoString" alt="$project.getChild("logo").getText()" border="0"/></a>
      #else
        <a href="$project.getAttributeValue("href")"><img src="$relativePath/$logoString" alt="$project.getChild("logo").getText()" border="0"/></a>
      #end
      </td>
    #else
      <td colspan="2">
      <a href="http://jakarta.apache.org"><img src="http://jakarta.apache.org/images/jakarta-logo.gif" align="left" border="0"/></a>
      </td>
    #end
  #end
  
  #macro (copy $element)
    #if ( $element.name == "a" )
      #anchor ( $element.content $element.getAttributeValue( "href" ) )
    #elseif ( $element.name == "img" )
      #image ($element)
    #elseif ( $element.name == "source" )
      #source ($element)
    #elseif ( $element.name == "table" )
      #table ($element)
    #elseif ( $element.name == "pre" )
      <pre>$element.content</pre>
    #elseif ( $element.name == "escaped" )
      $element.text
    #else
      <$element.name
      #foreach ( $attr in $element.attributes )
        $attr.name="$attr.value"
      #end
      >#copycontent($element)</$element.name>
    #end
  #end
  
  #macro (getAuthorList)
  	<div align="right" id="authors">
  	#set ($authors = $root.getChild("properties").getChildren("author"))
  	#foreach ( $au in $authors )
   #if( $velocityCount == 1 )by #end
   #if( $velocityCount != 1 ),#end <a href="$au.getAttributeValue("email")">$au.getText()</a>
  	#end
  	</div>
  #end
  
  #macro (copycontent $element)
    #if ( $element.children.size() > 0 )
      #foreach ( $child in $element.content )
        #if ( $child.class.name.endsWith( "Element" ) )
          #copy( $child )
        #else
          $escape.getText( $child.getText() )
        #end
      #end
    #else
      $element.content
    #end
  #end
  
  
  
  1.1                  jakarta-avalon-excalibur/assembly/src/xdocs/stylesheets/velocity.properties
  
  Index: velocity.properties
  ===================================================================
  file.resource.loader.path=src/xdocs/stylesheets
  # disable this for now velocimacro.library=templates.vm
  
  
  

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


Mime
View raw message