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="[EMAIL PROTECTED]">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>
<container name="<font color="darkred">root</font>">
<classpath>
<fileset dir=<font color="darkred">"dist"</font>>
<include name="<font color="darkred">demo.jar</font>"/>
</fileset>
</classpath>
<component name="<font color="darkred">test</font>" class="<font
color="darkred">org.apache.excalibur.playground.BasicComponent</font>"/>
</container>
</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="[EMAIL PROTECTED]">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>
<container name="<font color="darkred">root</font>">
<classpath>
<fileset dir=<font color="darkred">"dist"</font>>
<include name="<font color="darkred">demo.jar</font>"/>
</fileset>
</classpath>
<component name="<font color="darkred">test</font>" class="<font
color="darkred">org.apache.excalibur.playground.BasicComponent</font>"/>
</container>
</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="[EMAIL PROTECTED]">Stephen McConnell</author>
</properties>
<body>
<section name="Deployment">
<p>Components types deployed under this framework must be declared as formal
component types using a <classname>.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><classname>.xinfo
<ul>
<li>General component type information.</li>
<li>Context constraints.</li>
<li>Dependecies.</li>
<li>Service declarations.</li>
</ul>
</li>
<li><classname>.xprofile
<ul>
<li>Packaged profile containing type instantiation criteria.</li>
</ul>
</li>
<li><classname>.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="[EMAIL PROTECTED]">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="[EMAIL PROTECTED]">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>
<kernel>
<classpath>
<fileset dir=<font color="darkred">"dist"</font>>
<include name="<font color="darkred">demo.jar</font>"/>
</fileset>
</classpath>
<container name="<font color="darkred">root</font>">
<component name="<font color="darkred">test</font>" class="<font
color="darkred">org.apache.excalibur.playground.BasicComponent</font>"/>
</container>
</kernel>
</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 © 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
#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
#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:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>