Skip to Content.
Sympa Menu

notify-dpml - r1617 - in trunk: central/site/src/docs/depot/tutorials central/site/src/docs/depot/tutorials/complex central/site/src/docs/depot/tutorials/modules central/site/src/docs/depot/tutorials/simple central/tutorials/components/context/src/test/org/acme/test central/tutorials/components/customize/clock/src/test/org/acme/test central/tutorials/components/customize/custom/src/test/org/acme/test central/tutorials/components/examples/src/test/org/acme/test central/tutorials/components/hello/src/test/org/acme/test central/tutorials/components/import/demo/src/test/org/acme/test central/tutorials/components/lifestyle/src/test/org/acme/test central/tutorials/components/logging/src/test/org/acme/test central/tutorials/components/lookup/src/test/org/acme/test central/tutorials/components/parts/src/test/org/acme/test central/tutorials/components/singleton/src/test/org/acme/test central/tutorials/components/state/src/test/org/acme/test central/tutorials/components/thread/src/test/org! /acme/test central/tutorials/components/transient/src/test/org/acme/test central/tutorials/components/type/src/test/org/acme/test central/tutorials/tooling/simple central/tutorials/tooling/simple/automation central/tutorials/tooling/simple/automation/src central/tutorials/tooling/simple/automation/src/main central/tutorials/tooling/simple/automation/src/main/org central/tutorials/tooling/simple/automation/src/main/org/acme central/tutorials/tooling/simple/build central/tutorials/tooling/simple/filters central/tutorials/tooling/simple/properties central/tutorials/tooling/simple/symbolic central/tutorials/tooling/simple/types central/tutorials/tooling/simple/types/src central/tutorials/tooling/simple/types/src/main central/tutorials/tooling/simple/types/src/main/org central/tutorials/tooling/simple/types/src/main/org/acme main/depot/tools/builder/src/main/net/dpml/tools main/depot/tools/builder/src/main/net/dpml/tools/impl main/depot/tools/builder/src/main/net/dpml/tools/task! s main/transit/core/src/main/net/dpml/transit

notify-dpml AT lists.ibiblio.org

Subject: DPML Notify

List archive

Chronological Thread  
  • From: mcconnell at BerliOS <mcconnell AT mail.berlios.de>
  • To: notify-dpml AT lists.ibiblio.org
  • Subject: r1617 - in trunk: central/site/src/docs/depot/tutorials central/site/src/docs/depot/tutorials/complex central/site/src/docs/depot/tutorials/modules central/site/src/docs/depot/tutorials/simple central/tutorials/components/context/src/test/org/acme/test central/tutorials/components/customize/clock/src/test/org/acme/test central/tutorials/components/customize/custom/src/test/org/acme/test central/tutorials/components/examples/src/test/org/acme/test central/tutorials/components/hello/src/test/org/acme/test central/tutorials/components/import/demo/src/test/org/acme/test central/tutorials/components/lifestyle/src/test/org/acme/test central/tutorials/components/logging/src/test/org/acme/test central/tutorials/components/lookup/src/test/org/acme/test central/tutorials/components/parts/src/test/org/acme/test central/tutorials/components/singleton/src/test/org/acme/test central/tutorials/components/state/src/test/org/acme/test central/tutorials/components/thread/src/test/org! /acme/test central/tutorials/components/transient/src/test/org/acme/test central/tutorials/components/type/src/test/org/acme/test central/tutorials/tooling/simple central/tutorials/tooling/simple/automation central/tutorials/tooling/simple/automation/src central/tutorials/tooling/simple/automation/src/main central/tutorials/tooling/simple/automation/src/main/org central/tutorials/tooling/simple/automation/src/main/org/acme central/tutorials/tooling/simple/build central/tutorials/tooling/simple/filters central/tutorials/tooling/simple/properties central/tutorials/tooling/simple/symbolic central/tutorials/tooling/simple/types central/tutorials/tooling/simple/types/src central/tutorials/tooling/simple/types/src/main central/tutorials/tooling/simple/types/src/main/org central/tutorials/tooling/simple/types/src/main/org/acme main/depot/tools/builder/src/main/net/dpml/tools main/depot/tools/builder/src/main/net/dpml/tools/impl main/depot/tools/builder/src/main/net/dpml/tools/task! s main/transit/core/src/main/net/dpml/transit
  • Date: Thu, 20 Jul 2006 18:40:00 +0200

Author: mcconnell
Date: 2006-07-20 18:39:36 +0200 (Thu, 20 Jul 2006)
New Revision: 1617

Added:
trunk/central/site/src/docs/depot/tutorials/complex/index.xml
trunk/central/site/src/docs/depot/tutorials/complex/navigation.xml
trunk/central/site/src/docs/depot/tutorials/complex/runtime.xml
trunk/central/site/src/docs/depot/tutorials/modules/
trunk/central/site/src/docs/depot/tutorials/modules/index.xml
trunk/central/site/src/docs/depot/tutorials/modules/navigation.xml
trunk/central/site/src/docs/depot/tutorials/simple/alias.xml
trunk/central/site/src/docs/depot/tutorials/simple/automation.xml
trunk/central/site/src/docs/depot/tutorials/simple/types.xml
trunk/central/site/src/docs/depot/tutorials/versioned.xml
trunk/central/tutorials/tooling/simple/automation/
trunk/central/tutorials/tooling/simple/automation/build.xml
trunk/central/tutorials/tooling/simple/automation/index.xml
trunk/central/tutorials/tooling/simple/automation/src/
trunk/central/tutorials/tooling/simple/automation/src/main/
trunk/central/tutorials/tooling/simple/automation/src/main/org/
trunk/central/tutorials/tooling/simple/automation/src/main/org/acme/

trunk/central/tutorials/tooling/simple/automation/src/main/org/acme/Demo.java
trunk/central/tutorials/tooling/simple/types/
trunk/central/tutorials/tooling/simple/types/build.xml
trunk/central/tutorials/tooling/simple/types/index.xml
trunk/central/tutorials/tooling/simple/types/src/
trunk/central/tutorials/tooling/simple/types/src/main/
trunk/central/tutorials/tooling/simple/types/src/main/org/
trunk/central/tutorials/tooling/simple/types/src/main/org/acme/
trunk/central/tutorials/tooling/simple/types/src/main/org/acme/Demo.java
Modified:
trunk/central/site/src/docs/depot/tutorials/navigation.xml
trunk/central/site/src/docs/depot/tutorials/simple/filters.xml
trunk/central/site/src/docs/depot/tutorials/simple/index.xml
trunk/central/site/src/docs/depot/tutorials/simple/navigation.xml
trunk/central/site/src/docs/depot/tutorials/simple/properties.xml
trunk/central/site/src/docs/depot/tutorials/simple/symbolic.xml

trunk/central/tutorials/components/context/src/test/org/acme/test/DemoTestCase.java

trunk/central/tutorials/components/customize/clock/src/test/org/acme/test/DemoTestCase.java

trunk/central/tutorials/components/customize/custom/src/test/org/acme/test/DemoTestCase.java

trunk/central/tutorials/components/examples/src/test/org/acme/test/DemoTestCase.java

trunk/central/tutorials/components/hello/src/test/org/acme/test/DemoTestCase.java

trunk/central/tutorials/components/import/demo/src/test/org/acme/test/DemoTestCase.java

trunk/central/tutorials/components/lifestyle/src/test/org/acme/test/DemoTestCase.java

trunk/central/tutorials/components/logging/src/test/org/acme/test/DemoTestCase.java

trunk/central/tutorials/components/lookup/src/test/org/acme/test/DemoTestCase.java

trunk/central/tutorials/components/parts/src/test/org/acme/test/DemoTestCase.java

trunk/central/tutorials/components/singleton/src/test/org/acme/test/DemoTestCase.java

trunk/central/tutorials/components/state/src/test/org/acme/test/DemoTestCase.java

trunk/central/tutorials/components/thread/src/test/org/acme/test/DemoTestCase.java

trunk/central/tutorials/components/transient/src/test/org/acme/test/DemoTestCase.java

trunk/central/tutorials/components/type/src/test/org/acme/test/DemoTestCase.java
trunk/central/tutorials/tooling/simple/build/build.xml
trunk/central/tutorials/tooling/simple/filters/build.xml
trunk/central/tutorials/tooling/simple/properties/build.xml
trunk/central/tutorials/tooling/simple/symbolic/build.xml
trunk/main/depot/tools/builder/src/main/net/dpml/tools/Context.java

trunk/main/depot/tools/builder/src/main/net/dpml/tools/impl/DefaultContext.java

trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/InstallTask.java

trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/JUnitTestTask.java

trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/ModuleTask.java

trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/PackageTask.java
trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/PartTask.java
trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/TestTask.java

trunk/main/transit/core/src/main/net/dpml/transit/SecuredTransitContext.java
Log:
Adding a bunch of Depot tutorial content.

Added: trunk/central/site/src/docs/depot/tutorials/complex/index.xml
===================================================================
--- trunk/central/site/src/docs/depot/tutorials/complex/index.xml
2006-07-20 08:16:28 UTC (rev 1616)
+++ trunk/central/site/src/docs/depot/tutorials/complex/index.xml
2006-07-20 16:39:36 UTC (rev 1617)
@@ -0,0 +1,209 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<document>
+ <properties>
+ <author email="mcconnell AT osm.net">Stephen McConnell</author>
+ <title>Development Tooling</title>
+ </properties>
+
+ <body>
+
+ <section name="Multi-Project Build Sequencing">
+
+ <p>
+ An important aspect of Depot is the support for transitive
+ dependency management. Dependencies between project are maintained
+ relative to the following scopes:
+ </p>
+
+ <table>
+ <tr>
+ <td>build</td>
+ <td>
+ Declaration of one or build sequence dependencies. When
+ a project declares a build scoped dependency on another
+ project - Depot will ensure that the dependee project is
+ built before the dependee project.
+ </td>
+ </tr>
+ <tr>
+ <td>runtime</td>
+ <td>
+ Declaration of one or runtime dependencies. Runtime dependencies
+ are used by Depot to construct classloader chains resulting in
+ the potential automation of several common build requirements
+ (such as source code compilation). Runtime dependencies are
+ fully transitive in that the runtime dependencies of a project
+ are constructed by expanding the runtime dependencies of any
+ projects declared as runtime dependencies, and any runtime
+ dependencies of the dependee projects (etc., etc.).
+ </td>
+ </tr>
+ <tr>
+ <td>test</td>
+ <td>
+ Declaration of one or test dependencies. Test scoped dependencies
+ are used to suppliment transitive runtime dependencies and are
typically
+ applied to the automation of test-cases. An import aspect of
+ of test scope dependencies is the abiluity to separate test
concerns from
+ runtime concerns - ensuring that runtime meta-data is not
poluted with
+ test related information.
+ </td>
+ </tr>
+ </table>
+
+ <subsection name="index.xml">
+
+ <p>
+ Our index file has been updated to declare two projects named widget
and gizmo
+ and we have relocated our index file to a directory above the
respective
+ project basedirs. The <tt>gizmo</tt> project is declaring a
build-time dependency
+ on the <tt>widget</tt> project which simply ensures that
<tt>widget</tt> will be
+ built before <tt>gizmo</tt>. Basedir values for both projects are
declared as
+ immidiate subdirectories relative to the location of the index.xml
file.
+ </p>
+
+<source>
+&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;
+&lt;index xmlns="link:xsd:dpml/lang/dpml-module#1.0">
+
+ <font color="darkred">&lt;project name="widget" basedir="widget"/&gt;
+
+ &lt;project name="gizmo" basedir="gizmo"&gt;
+ &lt;dependencies>
+ &lt;build>
+ &lt;include key="widget"/&gt;
+ &lt;/build&gt;
+ &lt;/dependencies&gt;
+ &lt;/project&gt;</font>
+
+&lt;/index&gt;
+</source>
+
+ </subsection>
+
+ <subsection name="Listing project sequence">
+
+ <p>
+ Before building our projects we will take a moment to look at the
build
+ tools <tt>-list</tt> option.
+ </p>
+
+ <pre>$ cd central\tutorials\tooling\complex\build</pre>
+
+ <p>
+ The following command list all project below our current directory
+ in proper build sequence:
+ </p>
+
+ <pre>
+$ build -list
+Selection: [2]
+
+ [1] project:widget#SNAPSHOT
+ [2] project:gizmo#SNAPSHOT
+</pre>
+
+ </subsection>
+
+ <subsection name="Listing project details">
+
+ <p>
+ We can also list information about a specific project as shown in
the following
+ example where we are requesting a detailing listing of the gizmo
project.
+ </p>
+
+ <pre>
+$ build -list -select gizmo
+Listing project: gizmo
+
+project:gizmo#SNAPSHOT
+
+ version: SNAPSHOT
+ basedir: D:\dpml\central\tutorials\tooling\complex\build\gizmo
+ build phase providers: (1)
+ project:widget#SNAPSHOT</pre>
+
+ <p>
+ Just for reference - the above command can be simplified to:
+ </p>
+
+<pre>$ build -l -s gizmo</pre>
+
+ </subsection>
+
+ <subsection name="Addition build options">
+
+ <p>For additional information on the build tool command options
+ the <tt>-help</tt> option is always available.
+ </p>
+
+<pre>$ build -help</pre>
+
+ </subsection>
+
+ <subsection name="Building the projects ..">
+
+ <p>
+ In the following example the <tt>build</tt> command is invoked
+ in the parent directory to the widget and gizmo projects. As such
+ the build tool will evaluate all projects declared in the index and
+ establish a build selection that includes all projects with a basedir
+ that is equal to or deeper that our current directory. This selction
+ is then sorted in terms of build-time dependencies resulting in
widget
+ appearing before gizmo. The build tool then initiates the build of
+ each project. If there is a failure of an indivial build then the
+ multi-project build sequence will fail.
+ </p>
+
+ <pre>
+$ build
+[2788 ] [INFO ] (depot.build): Initiating build sequence: (2)
+
+ (1) widget
+ (2) gizmo
+
+
+-------------------------------------------------------------------------
+widget#SNAPSHOT
+-------------------------------------------------------------------------
+
+build:
+ [echo] Executing WIDGET build
+
+BUILD SUCCESSFUL
+Total time: 0 seconds
+
+-------------------------------------------------------------------------
+gizmo#SNAPSHOT
+-------------------------------------------------------------------------
+
+build:
+ [echo] Executing GIZMO build
+
+BUILD SUCCESSFUL
+Total time: 0 seconds
+ </pre>
+
+ </subsection>
+
+ <subsection name="Summary">
+
+ <p>
+ This tutorial has introduced the subject of build-scoped dependencies
+ and how these dependencyt declarations impact build sequencing. In
practice
+ you will not generally need build-time dependency declarations -
instead it
+ is much more common to see runtime dependencies linking projects
together, and
+ its within runtime depedencies that we can do things like automatic
classpath
+ construction. The <a href="runtime.html">following tutorial</a>
focuses on
+ runtime dependencies and demonstrates how an API defined in one
project can be
+ automatically included in the classpath of a dependent project.
+ </p>
+
+ </subsection>
+
+ </section>
+
+ </body>
+</document>
+

Added: trunk/central/site/src/docs/depot/tutorials/complex/navigation.xml
===================================================================
--- trunk/central/site/src/docs/depot/tutorials/complex/navigation.xml
2006-07-20 08:16:28 UTC (rev 1616)
+++ trunk/central/site/src/docs/depot/tutorials/complex/navigation.xml
2006-07-20 16:39:36 UTC (rev 1617)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2005 Stephen McConnell
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.dpml.net/central/about/legal/
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<project>
+
+ <title>Magic Training Programme</title>
+
+ <body>
+
+ <menu>
+ <item name="Runtime Dependencies" href="runtime.html"/>
+ </menu>
+
+ </body>
+
+</project>

Added: trunk/central/site/src/docs/depot/tutorials/complex/runtime.xml
===================================================================
--- trunk/central/site/src/docs/depot/tutorials/complex/runtime.xml
2006-07-20 08:16:28 UTC (rev 1616)
+++ trunk/central/site/src/docs/depot/tutorials/complex/runtime.xml
2006-07-20 16:39:36 UTC (rev 1617)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<document>
+ <properties>
+ <author email="mcconnell AT osm.net">Stephen McConnell</author>
+ <title>Development Tooling</title>
+ </properties>
+
+ <body>
+
+ <section name="Runtime Dependencies">
+
+ <p>
+ </p>
+
+ </section>
+
+ </body>
+</document>
+

Added: trunk/central/site/src/docs/depot/tutorials/modules/index.xml
===================================================================
--- trunk/central/site/src/docs/depot/tutorials/modules/index.xml
2006-07-20 08:16:28 UTC (rev 1616)
+++ trunk/central/site/src/docs/depot/tutorials/modules/index.xml
2006-07-20 16:39:36 UTC (rev 1617)
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<document>
+ <properties>
+ <author email="mcconnell AT osm.net">Stephen McConnell</author>
+ <title>Component Development Strategies</title>
+ </properties>
+
+ <body>
+
+ <section name="Creating a group Module">
+
+ <subsection name="Tutorial Objective">
+
+ <p>
+ The objective of this tutorial is to intrioduce the concept of a
module
+ and walk through the process of module creation. The tutorial
concludes
+ with the summary of the generated module artifact and a description
of
+ how a module can be used when sharing your project resources with
others.
+ </p>
+
+ </subsection>
+
+ <subsection name="dev/library.xml">
+
+ <p>
+ We need to update our library.xml file to include the declaration of
a
+ module basedir and the assignment of an output artifact type.
+ </p>
+
+<source>
+&lt;library xmlns="artifact:xsd:dpml/lang/dpml-module#1.0"&gt;
+
+ &lt;imports&gt;
+ &lt;import uri="link:module:ant"/&gt;
+ &lt;/imports&gt;
+
+ &lt;modules&gt;
+
+ &lt;module name="acme" <font color="darkred">basedir="."</font>&gt;
+
+ <font color="darkred">&lt;types&gt;
+ &lt;type id="module"/&gt;
+ &lt;/types&gt;</font>
+
+ &lt;project name="acme-client" basedir="client"&gt;
+ &lt;types&gt;
+ &lt;type id="jar"/&gt;
+ &lt;/types&gt;
+ &lt;/project&gt;
+
+ &lt;project name="acme-system" basedir="system"&gt;
+ &lt;types&gt;
+ &lt;type id="jar"/&gt;
+ &lt;/types&gt;
+ &lt;dependencies&gt;
+ &lt;include key="acme-client"/&gt;
+ &lt;/dependencies&gt;
+ &lt;dependencies scope="test"&gt;
+ &lt;include ref="ant/ant-junit"/&gt;
+ &lt;/dependencies&gt;
+ &lt;/project&gt;
+
+ &lt;/module&gt;
+
+ &lt;/modules&gt;
+
+&lt;/library&gt;
+</source>
+
+ </subsection>
+
+ <subsection name="Validating Module Definition">
+
+ <p>
+ To validate that the module has been declared correctly you should
be able
+ list information about the module project using the following
command:
+ </p>
+
+<pre>
+$ build -list -select acme
+
+Listing module [acme]
+
+module:acme
+
+ version: SNAPSHOT
+ basedir: C:\dev\osm\trunk\tutorial\tooling\104
+ imports: (1)
+ module:ant
+ resources: (2)
+ project:acme/acme-client
+ project:acme/acme-system
+</pre>
+
+ <p>
+ Building the module will result in the creation of a module resource
+ under the <tt>target/deliverables/modules</tt> subdirectory.
+ </p>
+
+<pre>
+$ build -select acme
+</pre>
+
+ <p>
+ The resulting module file is shown below. The principal differences
+ between the original library file and the generated module is the
removal
+ of build-time concerns. For example, projects are represented as
resource,
+ basedir info has been removed along with build and test pahse
dependency
+ information.
+ </p>
+
+<source><![CDATA[
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<module name="acme" version="SNAPSHOT"
+ xmlns="link:xsd:dpml/lang/dpml-module#1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
+
+ <types>
+ <type id="module" alias="true"/>
+ </types>
+
+ <resource name="acme-client" version="SNAPSHOT">
+ <types>
+ <type id="jar"/>
+ </types>
+ </resource>
+
+ <resource name="acme-system" version="SNAPSHOT">
+ <types>
+ <type id="jar"/>
+ </types>
+ <dependencies>
+ <runtime>
+ <include ref="acme/acme-client"/>
+ </runtime>
+ </dependencies>
+ </resource>
+
+</module>
+]]></source>
+
+ </subsection>
+
+ <subsection name="Referencing the Module Resource">
+
+ <p>
+ The contents of the module resources created as an output of the
build is
+ an encoded XML file. It contains all module property declarations
and our
+ two projects in the form of resource definitions suitable for use by
external
+ projects in the same way we imported the ant module during the
testcase
+ tutorial.
+ </p>
+
+ <p><i>Example of an import by an external library of the module
created above:</i></p>
+
+<source>
+&lt;library&gt;
+
+ &lt;imports&gt;
+ &lt;import uri="<font
color="darkred">artifact:module:acme#SNAPSHOT</font>"/&gt;
+ &lt;/imports&gt;
+
+ &lt;modules&gt;
+
+ ...
+
+ &lt;/modules&gt;
+
+&lt;/library>
+</source>
+
+ </subsection>
+
+ <subsection name="Summary">
+
+ <p>
+ This tutorial has demonstrated the creation of a stand-alone module
definition
+ suitable for import by external projects - hoewever - the tutorial
has introduced
+ an issue in that we have added a SNAPSHOT reference to our library
defintion and
+ that is a bad thing. Our next torial addresses this issue through
the declaration
+ and usage of <a href="alias.html">platform independent symbolic
links</a>.
+ </p>
+
+ </subsection>
+
+ </section>
+
+ </body>
+</document>
+

Added: trunk/central/site/src/docs/depot/tutorials/modules/navigation.xml
===================================================================
--- trunk/central/site/src/docs/depot/tutorials/modules/navigation.xml
2006-07-20 08:16:28 UTC (rev 1616)
+++ trunk/central/site/src/docs/depot/tutorials/modules/navigation.xml
2006-07-20 16:39:36 UTC (rev 1617)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Copyright 2005 Stephen McConnell
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.dpml.net/central/about/legal/
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<project>
+
+ <title>Magic Training Programme</title>
+
+ <body>
+
+ <menu>
+ <!--<item name="Runtime Dependencies" href="runtime.html"/>-->
+ </menu>
+
+ </body>
+
+</project>

Modified: trunk/central/site/src/docs/depot/tutorials/navigation.xml
===================================================================
--- trunk/central/site/src/docs/depot/tutorials/navigation.xml 2006-07-20
08:16:28 UTC (rev 1616)
+++ trunk/central/site/src/docs/depot/tutorials/navigation.xml 2006-07-20
16:39:36 UTC (rev 1617)
@@ -26,6 +26,9 @@

<menu>
<item name="Getting Started" href="simple/index.html"/>
+ <item name="Multiproject Builds" href="complex/index.html"/>
+ <item name="Using Modules" href="modules/index.html"/>
+ <item name="Versioned Builds" href="versioned.html"/>
</menu>

</body>

Added: trunk/central/site/src/docs/depot/tutorials/simple/alias.xml
===================================================================
--- trunk/central/site/src/docs/depot/tutorials/simple/alias.xml
2006-07-20 08:16:28 UTC (rev 1616)
+++ trunk/central/site/src/docs/depot/tutorials/simple/alias.xml
2006-07-20 16:39:36 UTC (rev 1617)
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<document>
+ <properties>
+ <author email="mcconnell AT osm.net">Stephen McConnell</author>
+ <title>Component Development Strategies</title>
+ </properties>
+
+ <body>
+
+ <section name="Using alias statements">
+
+ <p>
+ In our previouse example dealing with the creation of a module
suitable
+ for external project reference - we have introduced an issue
concerning
+ references SNAPSHOT versions. One should keep in mind that it is
bad practive
+ to reference SNAPSHOT versions and it is considered very bad
practive
+ to publish SNAPSHOT artifacts.
+ </p>
+
+ <p>
+ A solution to this problem is to publish a platform independent
symbolic link
+ to the artifact (a.k.a. an alias).
+ </p>
+
+ <subsection name="Adding an Alias">
+
+ <p>
+ To simplify local management of modules we can use the
<tt>alias</tt> attribuite
+ on a type declaration. This request the creation of a link which is
an artifact
+ that references another artifact. The following example
demonstrates the addition
+ of an <tt>alias</tt> attribute to the type production statement in
our module
+ definition.
+ </p>
+
+<source>
+&lt;library&gt;
+
+ &lt;imports&gt;
+ &lt;import uri="link:module:ant"/&gt;
+ &lt;/imports&gt;
+
+ &lt;modules&gt;
+
+ &lt;module name="acme" basedir="."&gt;
+
+ &lt;types&gt;
+ &lt;type id="module" <font color="darkred">alias="true"</font>/&gt;
+ &lt;/types&gt;
+
+ ...
+
+ &lt;/module&gt;
+
+ &lt;/modules&gt;
+
+&lt;/library&gt;
+</source>
+
+ <p>
+ After executing the module build you will find an artifact named
+ <tt>acme.module.link</tt> in the <tt>target/deliverables/modules</tt>
+ directory. The link datastructure can be referenced using Transit's
+ link protocol as show in the following example import statement.
+ </p>
+
+<source>
+&lt;library&gt;
+
+ &lt;imports&gt;
+ &lt;import uri="<font color="darkred">link:module:acme</font>"/&gt;
+ &lt;/imports&gt;
+
+ &lt;modules&gt;
+
+ ...
+
+ &lt;/modules&gt;
+
+&lt;/library>
+</source>
+
+ </subsection>
+
+ <subsection name="Summary">
+
+
+ <p>
+ The link datastructure is simply a reference to a
+ versioned artifact (similar to a unix symlink for artifacts). This
tutorial
+ has covered the creation of a simple non-versioned alias associated
with the
+ produced module definition. Alias attributes may be used on any
resource type
+ production statement. Also, an alternative form of versioned alias
production
+ is available using the <tt>version</tt> attribute a value in place
of <tt>alias</tt>.
+ For example - the following statement would result in the generation
of a alias
+ artifact associated with the version 1.0.
+ </p>
+
+<source>
+ &lt;types&gt;
+ &lt;type id="module" <font color="darkred">version="1.0"</font>/&gt;
+ &lt;/types&gt;
+</source>
+
+ <p>
+ Our next subject deals with <a href="versioned.html">versioned
builds</a>.
+ </p>
+
+ </subsection>
+
+ </section>
+
+ </body>
+</document>
+

Added: trunk/central/site/src/docs/depot/tutorials/simple/automation.xml
===================================================================
--- trunk/central/site/src/docs/depot/tutorials/simple/automation.xml
2006-07-20 08:16:28 UTC (rev 1616)
+++ trunk/central/site/src/docs/depot/tutorials/simple/automation.xml
2006-07-20 16:39:36 UTC (rev 1617)
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<document>
+ <properties>
+ <author email="mcconnell AT osm.net">Stephen McConnell</author>
+ <title>Development Tooling</title>
+ </properties>
+
+ <body>
+
+ <section name="Build Automation using Templates">
+
+ <p>
+ One of the nice features added to Ant 1.6 is the support for
+ the import of template build files. The Depot system comes with
+ a default template that handles the establishment of a number of
+ tasks that are project-aware. Using information about a target
+ project these tasks can handle the complete automation of code-base
+ preparation, compilation, packaging, testing and publication to the
+ system cache.
+ </p>
+
+ <subsection name="build.xml">
+
+ <p>
+ Using a template we can simplify the build instructions down to
+ the following:
+ </p>
+
+<source>
+&lt;project name="demo" default="install"
+ xmlns:transit="antlib:net.dpml.transit"&gt;
+
+ <font color="darkred">&lt;transit:import
uri="local:template:dpml/tools/standard"/&gt;</font>
+
+&lt;/project&gt;
+</source>
+
+ </subsection>
+
+ <subsection name="Building the project ..">
+
+ <pre>
+$ cd central\tutorials\tooling\simple\automation
+$ build
+
+-------------------------------------------------------------------------
+demo#SNAPSHOT
+-------------------------------------------------------------------------
+
+init:
+
+prepare:
+[x:prepare] Created dir:
D:\dpml\central\tutorials\tooling\simple\automation\target
+[x:prepare] Created dir:
D:\dpml\central\tutorials\tooling\simple\automation\target\build\main
+[x:prepare] Copying 1 file to
D:\dpml\central\tutorials\tooling\simple\automation\target\build\main
+
+build:
+ [javac] Created dir:
D:\dpml\central\tutorials\tooling\simple\automation\target\classes\main
+ [javac] Compiling 1 source file to
D:\dpml\central\tutorials\tooling\simple\automation\target\classes\main
+
+package:
+ [jar] Created dir:
D:\dpml\central\tutorials\tooling\simple\automation\target\deliverables\jars
+ [jar] Building jar:
D:\dpml\central\tutorials\tooling\simple\automation\target\deliverables\jars\demo-SNAPSHOT.jar
+ [jar] Creating md5 checksum
+
+test:
+
+install:
+[x:install] Copying 2 files to D:\system\dpml\data\cache
+
+BUILD SUCCESSFUL
+Total time: 3 seconds
+</pre>
+
+ </subsection>
+
+ <subsection name="Summary">
+
+ <p>
+ In the above example we have demonstrated an ability to completely
automate the
+ production of a jar file simply through the use of a template build
file and
+ a project codebase that follows a standard layout convention. In
this case we
+ are using a template provided by the Depot project (which is used to
build the
+ majority of DPML projects) - however - the inclusion of a template
is a basic
+ Ant capability and you could easily write alternative templates
based on
+ pure ant or your own custom tasks. Generally speaking when you
increase the level
+ of build automation you typically reduce build related errors and
maintenance
+ overheads.
+ </p>
+
+ </subsection>
+
+ </section>
+
+ </body>
+
+</document>
+

Modified: trunk/central/site/src/docs/depot/tutorials/simple/filters.xml
===================================================================
--- trunk/central/site/src/docs/depot/tutorials/simple/filters.xml
2006-07-20 08:16:28 UTC (rev 1616)
+++ trunk/central/site/src/docs/depot/tutorials/simple/filters.xml
2006-07-20 16:39:36 UTC (rev 1617)
@@ -8,10 +8,136 @@

<body>

- <section name="Using Global Filters">
+ <section name="Global Filters">
+
+ <p>
+ Filters are used to replace tokens in source code with assigned values
+ and are applied during copy operations when filtering is enabled. This
+ tutorial demonstrates this feature by extending our project definition
+ to include such a filter specification.
+ </p>
+
+ <subsection name="index.xml">
+
+ <p>
+ Any number of filters can be declared within an enclosing
<tt>filters</tt>
+ element. The <tt>filters</tt> element may be declared within a
project
+ or module defintion. In the following example we are declaring a
single
+ filter inside the project defintion which declares a filter token of
+ <tt>MESSAGE</tt> and a substition value equal to the expansion of
the
+ <tt>${message}</tt> property value. As such, any copy operation
declared
+ in the build file that has filtering enabled will result in the
substitution
+ of the toke <tt>@MESSAGE@</tt> with the assigned value.
+ </p>
+
+<source>
+&lt;index xmlns="link:xsd:dpml/lang/dpml-module#1.0"&gt;

+ &lt;project name="demo" basedir="."&gt;
+ &lt;properties&gt;
+ &lt;property name="location" value="New York"/&gt;
+ &lt;property name="message" value="Hello for ${user.name} in
${location}"/&gt;
+ &lt;/properties&gt;
+ <font color="darkred">&lt;filters&gt;
+ &lt;filter token="MESSAGE" value="${message}"/&gt;
+ &lt;/filters&gt;</font>
+ &lt;/project&gt;
+
+&lt;/index&gt;
+</source>
+
+ </subsection>
+
+ <subsection name="build.xml">
+
+ <p>
+ To demonstrate the above we have updated the build file to
+ copy a file named src/DEMO.TXT to target/RESULT.TXT. The DEMO.TXT
+ file contains the <tt>@MESSAGE@</tt> token and the resulting
+ RESULT.TXT file should contain the expanded value. The build
+ target validates this by loading the result file and echoing its
+ contents.
+ </p>
+
+<source>
+&lt;project name="demo" default="install">
+
+ <font color="darkred">&lt;target name="init"&gt;
+ &lt;property name="src" location="${basedir}/src"/&gt;
+ &lt;property name="target" location="${basedir}/target"/&gt;
+ &lt;/target&gt;
+
+ &lt;target name="clean" depends="init"&gt;
+ &lt;delete dir="${target}"/&gt;
+ &lt;/target&gt;
+
+ &lt;target name="build" depends="init,clean"&gt;
+ &lt;mkdir dir="${target}"/&gt;
+ &lt;copy file="${src}/DEMO.TXT" toFile="${target}/RESULT.TXT"
filtering="true"/&gt;
+ &lt;loadfile srcFile="${target}/RESULT.TXT" property="result"/&gt;
+ &lt;echo message="${result}"/&gt;
+ &lt;/target&gt;</font>
+
+ &lt;target name="install" depends="build"/&gt;
+
+&lt;/project&gt;
+</source>
+
+ </subsection>
+
+ <subsection name="Building the project ..">
+
+ <pre>
+$ cd central\tutorials\tooling\simple\filters
+$ build
+
+-------------------------------------------------------------------------
+demo#SNAPSHOT
+-------------------------------------------------------------------------
+
+init:
+
+clean:
+
+build:
+ [mkdir] Created dir:
D:\dpml\central\tutorials\tooling\simple\filters\target
+ [copy] Copying 1 file to
D:\dpml\central\tutorials\tooling\simple\filters\target
+ [echo]
+ [echo] The message is Hello for mcconnell in New York.
+
+install:
+
+BUILD SUCCESSFUL
+Total time: 0 seconds
+
+$
+ </pre>
+
+ </subsection>
+
+ <subsection name="Summary">
+
+ <p>
+ Property and filter declarations demonstrated here deal with
resonably simple
+ value assignments (either direct values or values resolved by
dereferencing
+ symbolic values). However - when dealing with large numbers of
projects you
+ will frequently need to reference features of another project in the
declaration
+ of a local property of feature value. Before addressing this
subject we need
+ to introduce multiple projects and the support that Depot provides
in build
+ sequencing.
+ </p>
+
+ <p>
+ The <a href="../complex/index.html">next totorial</a> introduces the
subject
+ of multi-project build sequencing.
+ </p>
+
+ </subsection>
+
+
</section>

</body>
+
</document>


Modified: trunk/central/site/src/docs/depot/tutorials/simple/index.xml
===================================================================
--- trunk/central/site/src/docs/depot/tutorials/simple/index.xml
2006-07-20 08:16:28 UTC (rev 1616)
+++ trunk/central/site/src/docs/depot/tutorials/simple/index.xml
2006-07-20 16:39:36 UTC (rev 1617)
@@ -8,8 +8,121 @@

<body>

- <section name="Definining a Project">
+ <section name="Setting up the Index">
+
+ <p>
+ The Depot build system centralizes information about projects in
+ an index file. This tutorial demonstrates the declaration of a single
+ project and serves as a starting point for the introduction of
+ properties and filters.
+ </p>
+
+ <subsection name="index.xml">
+
+ <p>
+ The following index file declares a single project named 'demo'.
+ The basedir of the project is the directory containing the project
+ build content and is the path that the Depot tool uses to locate
+ the project's build.xml file. Basedir values are resolved relative
to
+ the basedir of the enclosing entity - in this case the
<tt>&lt;index&gt;</tt>
+ is the enclosing entity so the basedir is resolved relative to the
+ directory containing the index file.
+ </p>
+
+<source><![CDATA[
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<index xmlns="link:xsd:dpml/lang/dpml-module#1.0">

+ <project name="demo" basedir="."/>
+
+</index>
+]]></source>
+
+ </subsection>
+
+ <subsection name="build.xml">
+
+ <p>
+ The following Ant build file simply logs a message to confirm
+ that it is building. It contains a couple of empty targets
+ (clean and install) which are added simply for consistency (but
+ will be used in subsequent tutorials).
+ </p>
+
+<source><![CDATA[
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project name="demo" default="install">
+
+ <target name="clean">
+ <!-- nothing to do -->
+ </target>
+
+ <target name="build">
+ <echo message="Executing the simple project build."/>
+ </target>
+
+ <target name="install" depends="build"/>
+
+</project>
+]]></source>
+
+ </subsection>
+
+ <subsection name="Building the project ..">
+
+ <p>
+ Assuming that you have the build file and the index file in a
+ directory and Depot is installed - you should be able to start
+ the build proces using Depot's <tt>build</tt> command as shown
+ below:
+ </p>
+
+ <pre>
+$ cd central\tutorials\tooling\simple\build
+$ build
+
+-------------------------------------------------------------------------
+demo#SNAPSHOT
+-------------------------------------------------------------------------
+
+build:
+ [echo] Executing the simple project build.
+
+BUILD SUCCESSFUL
+Total time: 0 seconds
+
+$
+ </pre>
+
+ </subsection>
+
+ <subsection name="Summary">
+
+ <p>
+ When we invoked the build command as shown above - the build tool
+ located the index.xml file (by searching from the current directory
+ up the directory tree until the file was found) and located the
+ demo project by matching the current directory with directory
resolved
+ from the project <tt>basedir</tt> attribute. Once the project
defintion
+ is located Depot constructs an internal defintion containing
information
+ about the project name, group, version, properties, filters,
+ dependency information, and information about resources that will be
+ produced by the build process.
+ </p>
+
+ <p>
+ The following totorials deal with the association of properties and
+ filters with a project:
+ </p>
+
+ <ul>
+ <li><a href="properties.html">Adding general properties.</a></li>
+ <li><a href="symbolic.html">Using symbolic references.</a></li>
+ <li><a href="filters.html">Declaring global filters.</a></li>
+ </ul>
+
+ </subsection>
+
</section>

</body>

Modified: trunk/central/site/src/docs/depot/tutorials/simple/navigation.xml
===================================================================
--- trunk/central/site/src/docs/depot/tutorials/simple/navigation.xml
2006-07-20 08:16:28 UTC (rev 1616)
+++ trunk/central/site/src/docs/depot/tutorials/simple/navigation.xml
2006-07-20 16:39:36 UTC (rev 1617)
@@ -20,7 +20,7 @@

<project>

- <title>Magic Training Programme</title>
+ <title>Depot Tutorials</title>

<body>

@@ -28,6 +28,9 @@
<item name="General Properties" href="properties.html"/>
<item name="Symbolic References" href="symbolic.html"/>
<item name="Global Filters" href="filters.html"/>
+ <item name="Type Production" href="types.html"/>
+ <item name="Build Automation" href="automation.html"/>
+ <item name="Alias Declarations" href="alias.html"/>
</menu>

</body>

Modified: trunk/central/site/src/docs/depot/tutorials/simple/properties.xml
===================================================================
--- trunk/central/site/src/docs/depot/tutorials/simple/properties.xml
2006-07-20 08:16:28 UTC (rev 1616)
+++ trunk/central/site/src/docs/depot/tutorials/simple/properties.xml
2006-07-20 16:39:36 UTC (rev 1617)
@@ -8,10 +8,121 @@

<body>

- <section name="Adding Properties">
+ <section name="Declaring Properties">
+
+ <p>
+ This tutorial demonstrates the addition of property declarations
+ to our project definition.
+ </p>
+
+ <subsection name="index.xml">
+
+ <p>
+ Any number of properties can be declared within an enclosing
<tt>properties</tt>
+ element. The <tt>properties</tt> element may be declared within a
project
+ defintion, a module defintion (more on that later), and/or within
the index
+ file. In the following example we are declaring a single property
inside the
+ project defintion which we will reference in our build file.
+ </p>
+
+<source>
+&lt;index xmlns="link:xsd:dpml/lang/dpml-module#1.0"&gt;

+ &lt;project name="demo" basedir="."&gt;
+ <font color="darkred">&lt;properties&gt;
+ &lt;property name="message" value="Hello"/&gt;
+ &lt;/properties&gt;</font>
+ &lt;/project&gt;
+
+&lt;/index&gt;
+</source>
+
+ </subsection>
+
+ <subsection name="build.xml">
+
+ <p>
+ The build file is updated to demonstrate a reference to our project
+ defined property value in an echo statement.
+ </p>
+
+<source>
+&lt;project name="demo" default="install">
+
+ &lt;target name="clean"&gt;
+ &lt;!-- nothing to do --&gt;
+ &lt;/target>
+
+ &lt;target name="build"&gt;
+ <font color="darkred">&lt;echo message="${message}"/&gt;</font>
+ &lt;/target&gt;
+
+ &lt;target name="install" depends="build"/&gt;
+
+&lt;/project&gt;
+</source>
+
+ </subsection>
+
+ <subsection name="Building the project ..">
+
+ <pre>
+$ cd central\tutorials\tooling\simple\properties
+$ build
+
+-------------------------------------------------------------------------
+demo#SNAPSHOT
+-------------------------------------------------------------------------
+
+build:
+ <font color="blue">[echo] Hello</font>
+
+BUILD SUCCESSFUL
+Total time: 0 seconds
+
+$
+ </pre>
+
+ </subsection>
+
+ <subsection name="Standard Properties">
+
+ <p>
+ When Depot creates a new Ant project it automatically populates the
project
+ with a set of properties derived from the associated project model.
These
+ properties contain information about the project name, group,
version, and
+ default directory locations for src files, test source files,
compiled classes,
+ deliverables resulting from the build and the system wide cache
location.
+ If the project also declares one or more produced types - then a set
of
+ properties are made available that contain deliverable names and
local directories
+ together with the directories and full paths relative to the system
cache.
+ An example of the use of standard properties is included in the <a
href="types.html">
+ Type Production Tutorial</a> build file.
+ </p>
+
+ </subsection>
+
+ <subsection name="Summary">
+
+ <p>
+ When Depot establishes the Ant project, it consults the Depot project
+ defintion for all properties declared within the project and any
enclosing
+ scopes (e.g. module level properties and properties declared within
the
+ index itself). Properties declared within a project take precidence
over
+ properties declared at module scope which in turn take precidence
over
+ properties declared at index scope.
+ </p>
+
+ <p>
+ The <a href="symbolic.html">following totorial</a> updates the
example to
+ include symbolic references to system properties.
+ </p>
+
+ </subsection>
+
</section>

</body>
+
</document>


Modified: trunk/central/site/src/docs/depot/tutorials/simple/symbolic.xml
===================================================================
--- trunk/central/site/src/docs/depot/tutorials/simple/symbolic.xml
2006-07-20 08:16:28 UTC (rev 1616)
+++ trunk/central/site/src/docs/depot/tutorials/simple/symbolic.xml
2006-07-20 16:39:36 UTC (rev 1617)
@@ -10,6 +10,72 @@

<section name="Using Symbolic References">

+ <p>
+ Ant users will be familiar to the <tt>${name}</tt> convention when
referencing
+ property values. This tutorial demonstrates the equivalent
functionality within
+ the Depot project defintion.
+ </p>
+
+ <subsection name="index.xml">
+
+ <p>
+ The index file has been updated to reference an existing property and
+ a system property in the defintion of our message property. In this
case we are referencing
+ the system property <tt>user.name</tt> and the property
<tt>location</tt> in the
+ defintion of <tt>message</tt>.
+ </p>
+
+<source>
+&lt;index xmlns="link:xsd:dpml/lang/dpml-module#1.0"&gt;
+
+ &lt;project name="demo" basedir="."&gt;
+ &lt;properties&gt;
+ <font color="darkred">&lt;property name="location" value="New
York"/&gt;
+ &lt;property name="message" value="Hello for ${user.name} in
${location}"/&gt;</font>
+ &lt;/properties&gt;
+ &lt;/project&gt;
+
+&lt;/index&gt;
+</source>
+
+ </subsection>
+
+ <subsection name="Building the project ..">
+
+ <pre>
+$ cd central\tutorials\tooling\simple\properties
+$ build
+
+-------------------------------------------------------------------------
+demo#SNAPSHOT
+-------------------------------------------------------------------------
+
+build:
+ <font color="blue">[echo] Hello from mcconnell in New York</font>
+
+BUILD SUCCESSFUL
+Total time: 0 seconds
+
+$
+ </pre>
+
+ </subsection>
+
+ <subsection name="Summary">
+
+ <p>
+ Symbolic references to property names may include any property
defined
+ within the project or any enclosing scope (module or index) and any
+ system property declared by tyhe JVM.
+ </p>
+
+ <p>
+ The <a href="filters.html">following totorial</a> demonstrates the
+ addition of token-based filters to our project defintion.
+ </p>
+
+ </subsection>
+
</section>

</body>

Added: trunk/central/site/src/docs/depot/tutorials/simple/types.xml
===================================================================
--- trunk/central/site/src/docs/depot/tutorials/simple/types.xml
2006-07-20 08:16:28 UTC (rev 1616)
+++ trunk/central/site/src/docs/depot/tutorials/simple/types.xml
2006-07-20 16:39:36 UTC (rev 1617)
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<document>
+ <properties>
+ <author email="mcconnell AT osm.net">Stephen McConnell</author>
+ <title>Development Tooling</title>
+ </properties>
+
+ <body>
+
+ <section name="Using Type Production Statements">
+
+ <p>
+ A project definition can contain multiple <tt>&lt;type&gt;</tt>
statements within an
+ enclosing <tt>&lt;types&gt;</tt> element. The direct impact of a type
declaration is
+ the automatic definition of several Ant project properties dealing
with the local
+ directory and filenames of produced types that follow a single
convention. This convention
+ states that all resources (files, etc.) produces by a build shall be
placed in a directory
+ named ${basedir}/target/deliverables/[type]s/[name]-[version]. The
convention also
+ requires that resources declared within a project defintion should be
published to the
+ local system cache for potential usage by other projects (taking into
account the potentially
+ customizable layout employed by the cache).
+ </p>
+
+ <subsection name="Type Related Properties">
+
+ <p>
+ The following table summarises the type related properties
automatically established
+ by Depot.
+ </p>
+
+ <table>
+ <tr>
+ <td>project.deliverable.[type].path</td>
+ <td>The path of the resource relative to the project
basedir.</td>
+ </tr>
+ <tr>
+ <td>project.deliverable.[type].dir</td>
+ <td>The path of the enclosing directory relative to the project
basedir.</td>
+ </tr>
+ <tr>
+ <td>project.cache.[type].path</td>
+ <td>The path of the resource relative to the system cache.</td>
+ </tr>
+ <tr>
+ <td>project.cache.[type].dir</td>
+ <td>The path of the enclosing directory relative to the system
cache.</td>
+ </tr>
+ </table>
+
+ </subsection>
+
+ <subsection name="index.xml">
+
+ <p>
+ The index.xml file shown below includes the addition of a type
product
+ statement <tt>&lt;type id="jar"/&gt;</tt> indicating that the
project produces
+ a jar file. As such, Ant project project properties will be created
for the
+ local and cache-based locations of enclosing directories and
resource paths.
+ These properties can be used within a build file to simplify the
handling of
+ file names and locations.
+ </p>
+
+<source>
+&lt;index xmlns="link:xsd:dpml/lang/dpml-module#1.0"&gt;
+
+ &lt;project name="demo" basedir="."&gt;
+ &lt;properties&gt;
+ &lt;property name="location" value="New York"/&gt;
+ &lt;property name="message" value="Hello for ${user.name} in
${location}"/&gt;
+ &lt;/properties&gt;
+ <font color="darkred">&lt;types&gt;
+ &lt;type id="jar"/&gt;
+ &lt;/types&gt;</font>
+ &lt;filters&gt;
+ &lt;filter token="MESSAGE" value="${message}"/&gt;
+ &lt;/filters&gt;
+ &lt;/project&gt;
+
+&lt;/index&gt;
+</source>
+
+ </subsection>
+
+ <subsection name="build.xml">
+
+ <p>
+ The following build file uses standard properties concerning target
+ directory location, strc file location, compiled classes directory,
+ final jar deliverable naming, and cache path to construct and publish
+ a jar file.
+ </p>
+
+<source>
+&lt;project name="demo" default="install"&gt;
+
+ &lt;target name="clean"&gt;
+ &lt;delete dir="${project.target.dir}"/&gt;
+ &lt;/target&gt;
+
+ <font color="gray">&lt;!--
+ Copy the src content to the target/build/main directory with filtering
+ applied and compile the resulting source files into the target/classes/main
+ directory.
+ --&gt;</font>
+ &lt;target name="build"&gt;
+ <font color="darkred">&lt;mkdir
dir="${project.target.build.main.dir}"/&gt;
+ &lt;copy toDir="${project.target.build.main.dir}" filtering="true"&gt;
+ &lt;fileset dir="${project.src.main.dir}"/&gt;
+ &lt;/copy&gt;
+ &lt;mkdir dir="${project.target.classes.main.dir}"/&gt;
+ &lt;javac srcdir="${project.target.build.main.dir}"
+ destdir="${project.target.classes.main.dir}"/&gt;</font>
+ &lt;/target>
+
+ <font color="gray">&lt;!--
+ Package the compiled classes into a jar file and place the result in the
+ target/deliverables/jars directory.
+ --&gt;</font>
+ <font color="darkred">&lt;target name="package" depends="build"&gt;
+ &lt;mkdir dir="${project.deliverable.jar.dir}"/&gt;
+ &lt;jar destfile="${project.deliverable.jar.path}"
+ basedir="${project.target.classes.main.dir}"/&gt;
+ &lt;/target&gt;</font>
+
+ <font color="gray">&lt;!--
+ Copy the jar file to the system cache.
+ --&gt;</font>
+ &lt;target name="install" depends="package"&gt;
+ <font color="darkred">&lt;mkdir
dir="${project.cache}/${project.cache.jar.dir}"/&gt;
+ &lt;copy file="${project.deliverable.jar.path}"
+ toFile="${project.cache}/${project.cache.jar.path}"/&gt;</font>
+ &lt;/target&gt;
+
+&lt;/project&gt;
+</source>
+
+ </subsection>
+
+ <subsection name="Building the project ..">
+
+ <pre>
+$ cd central\tutorials\tooling\simple\types
+$ build
+
+-------------------------------------------------------------------------
+demo#SNAPSHOT
+-------------------------------------------------------------------------
+
+build:
+ [mkdir] Created dir:
D:\dpml\central\tutorials\tooling\simple\types\target\build\main
+ [copy] Copying 1 file to
D:\dpml\central\tutorials\tooling\simple\types\target\build\main
+ [mkdir] Created dir:
D:\dpml\central\tutorials\tooling\simple\types\target\classes\main
+ [javac] Compiling 1 source file to
D:\dpml\central\tutorials\tooling\simple\types\target\classes\main
+
+package:
+ [mkdir] Created dir:
D:\dpml\central\tutorials\tooling\simple\types\target\deliverables\jars
+ [jar] Building jar:
D:\dpml\central\tutorials\tooling\simple\types\target\deliverables\jars\demo-SNAPSHOT.jar
+
+install:
+ [mkdir] Created dir: D:\system\dpml\data\cache\jars
+ [copy] Copying 1 file to D:\system\dpml\data\cache\jars
+
+BUILD SUCCESSFUL
+Total time: 1 second
+
+$
+ </pre>
+
+ </subsection>
+
+ <subsection name="Summary">
+
+ <p>
+ This tutorial has demonstrated the benefits gained from standard and
type-derived property
+ values. These benefits really come down to the usage of a standard
project layout, naming
+ conventions, and shared repository. Given these resources combinaed
with support for
+ programatic access to a project defintion - the logic next step is
the automation of common
+ taks such as jar file production. In the <a
href="automation.html">next tutorial</a> we
+ introduce the usage of a imported build template that handles the
establishment of a number
+ of tasks that are project-defintion-aware.
+ </p>
+
+ </subsection>
+
+
+ </section>
+
+ </body>
+
+</document>
+

Added: trunk/central/site/src/docs/depot/tutorials/versioned.xml
===================================================================
--- trunk/central/site/src/docs/depot/tutorials/versioned.xml 2006-07-20
08:16:28 UTC (rev 1616)
+++ trunk/central/site/src/docs/depot/tutorials/versioned.xml 2006-07-20
16:39:36 UTC (rev 1617)
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<document>
+ <properties>
+ <author email="mcconnell AT osm.net">Stephen McConnell</author>
+ <title>Component Development Strategies</title>
+ </properties>
+
+ <body>
+
+ <section name="Versioned Builds">
+
+ <subsection name="Tutorial Objective">
+
+ <p>
+ The objective of this tutorial is to demonstrate the usage of
+ the <tt>-version</tt> option when building multiple projects.
+ </p>
+
+ </subsection>
+
+ <subsection name="Executing a versioned build">
+
+ <p>
+ By default the build system assigns the version identifier of
+ <tt>SNAPSHOT</tt>.
+ </p>
+ <p>
+ We can override this using the <tt>-version</tt>
+ commandline option.
+ </p>
+
+<pre>
+$ build -version 1.0.0 clean install
+</pre>
+
+<source><![CDATA[
+C:\dev\osm\trunk\tutorial\tooling\104>build clean install -version 1.0.0
+[1276 ] [INFO ] (depot.build): Initiating build sequence: (3)
+
+ (1) acme/acme-client
+ (2) acme/acme-system
+ (3) acme
+
+
+-------------------------------------------------------------------------
+acme/acme-client#1.0.0
+-------------------------------------------------------------------------
+
+init:
+
+clean:
+ [delete] Deleting directory
C:\dev\osm\trunk\tutorial\tooling\104\client\target
+
+init:
+
+prepare:
+[x:prepare] Created dir: C:\dev\osm\trunk\tutorial\tooling\104\client\target
+[x:prepare] Created dir:
C:\dev\osm\trunk\tutorial\tooling\104\client\target\build\main
+[x:prepare] Copying 1 file to
C:\dev\osm\trunk\tutorial\tooling\104\client\target\build\main
+
+build:
+ [javac] Created dir:
C:\dev\osm\trunk\tutorial\tooling\104\client\target\classes\main
+ [javac] Compiling 1 source file to
C:\dev\osm\trunk\tutorial\tooling\104\client\target\classes\main
+
+package:
+ [jar] Created dir:
C:\dev\osm\trunk\tutorial\tooling\104\client\target\deliverables\jars
+ [jar] Building jar:
C:\dev\osm\trunk\tutorial\tooling\104\client\target\deliverables\jars\acme-client-1.0.0.jar
+ [jar] Creating md5 checksum
+
+test:
+
+install:
+[x:install] Copying 2 files to C:\dpml\data\cache\acme
+
+BUILD SUCCESSFUL
+Total time: 3 seconds
+
+-------------------------------------------------------------------------
+acme/acme-system#1.0.0
+-------------------------------------------------------------------------
+
+init:
+
+clean:
+ [delete] Deleting directory
C:\dev\osm\trunk\tutorial\tooling\104\system\target
+
+init:
+
+prepare:
+[x:prepare] Created dir: C:\dev\osm\trunk\tutorial\tooling\104\system\target
+[x:prepare] Created dir:
C:\dev\osm\trunk\tutorial\tooling\104\system\target\build\main
+[x:prepare] Copying 1 file to
C:\dev\osm\trunk\tutorial\tooling\104\system\target\build\main
+[x:prepare] Created dir:
C:\dev\osm\trunk\tutorial\tooling\104\system\target\build\test
+[x:prepare] Copying 1 file to
C:\dev\osm\trunk\tutorial\tooling\104\system\target\build\test
+[x:prepare] Created dir:
C:\dev\osm\trunk\tutorial\tooling\104\system\target\test
+
+standard.build:
+ [javac] Created dir:
C:\dev\osm\trunk\tutorial\tooling\104\system\target\classes\main
+ [javac] Compiling 1 source file to
C:\dev\osm\trunk\tutorial\tooling\104\system\target\classes\main
+ [javac] Created dir:
C:\dev\osm\trunk\tutorial\tooling\104\system\target\classes\test
+ [javac] Compiling 1 source file to
C:\dev\osm\trunk\tutorial\tooling\104\system\target\classes\test
+
+build:
+ [rmic] RMI Compiling 1 class to
C:\dev\osm\trunk\tutorial\tooling\104\system\target\classes\main
+
+package:
+ [jar] Created dir:
C:\dev\osm\trunk\tutorial\tooling\104\system\target\deliverables\jars
+ [jar] Building jar:
C:\dev\osm\trunk\tutorial\tooling\104\system\target\deliverables\jars\acme-system-1.0.0.jar
+ [jar] Creating md5 checksum
+
+test:
+ [junit] Created dir:
C:\dev\osm\trunk\tutorial\tooling\104\system\target\reports\test
+ [junit] executing in local jvm
+ [junit] Running acme.impl.test.DefaultWidgetTestCase
+I'm a plain old red widget named acme-system.
+I'm a blue widget named acme-system
+ [junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 0.031 sec
+
+install:
+[x:install] Copying 2 files to C:\dpml\data\cache\acme
+
+BUILD SUCCESSFUL
+Total time: 3 seconds
+
+-------------------------------------------------------------------------
+acme#1.0.0
+-------------------------------------------------------------------------
+
+init:
+
+clean:
+ [delete] Deleting directory C:\dev\osm\trunk\tutorial\tooling\104\target
+
+init:
+
+prepare:
+[x:prepare] Created dir: C:\dev\osm\trunk\tutorial\tooling\104\target
+
+build:
+
+package:
+ [module] Exporting module to:
C:\dev\osm\trunk\tutorial\tooling\104\target\deliverables\modules\acme-1.0.0.module
+
+test:
+
+install:
+[x:install] acme.module.link
+[x:install] artifact:module:acme#1.0.0
+[x:install] Copying 2 files to C:\dpml\data\cache
+
+BUILD SUCCESSFUL
+Total time: 1 second
+]]></source>
+
+ </subsection>
+
+ </section>
+
+ </body>
+
+</document>
+

Modified:
trunk/central/tutorials/components/context/src/test/org/acme/test/DemoTestCase.java
===================================================================
---
trunk/central/tutorials/components/context/src/test/org/acme/test/DemoTestCase.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/central/tutorials/components/context/src/test/org/acme/test/DemoTestCase.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -48,7 +48,7 @@

private URI getPartURI() throws Exception
{
- String path = System.getProperty(
"project.deliverable.part.filename" );
+ String path = System.getProperty( "project.deliverable.part.path" );
File file = new File( path );
return file.toURI();
}

Modified:
trunk/central/tutorials/components/customize/clock/src/test/org/acme/test/DemoTestCase.java
===================================================================
---
trunk/central/tutorials/components/customize/clock/src/test/org/acme/test/DemoTestCase.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/central/tutorials/components/customize/clock/src/test/org/acme/test/DemoTestCase.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -49,7 +49,7 @@

private URI getPartURI() throws Exception
{
- String path = System.getProperty(
"project.deliverable.part.filename" );
+ String path = System.getProperty( "project.deliverable.part.path" );
File file = new File( path );
return file.toURI();
}

Modified:
trunk/central/tutorials/components/customize/custom/src/test/org/acme/test/DemoTestCase.java
===================================================================
---
trunk/central/tutorials/components/customize/custom/src/test/org/acme/test/DemoTestCase.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/central/tutorials/components/customize/custom/src/test/org/acme/test/DemoTestCase.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -49,7 +49,7 @@

private URI getPartURI() throws Exception
{
- String path = System.getProperty(
"project.deliverable.part.filename" );
+ String path = System.getProperty( "project.deliverable.part.path" );
File file = new File( path );
return file.toURI();
}

Modified:
trunk/central/tutorials/components/examples/src/test/org/acme/test/DemoTestCase.java
===================================================================
---
trunk/central/tutorials/components/examples/src/test/org/acme/test/DemoTestCase.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/central/tutorials/components/examples/src/test/org/acme/test/DemoTestCase.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -48,7 +48,7 @@

private URI getPartURI() throws Exception
{
- String path = System.getProperty(
"project.deliverable.part.filename" );
+ String path = System.getProperty( "project.deliverable.part.path" );
File file = new File( path );
return file.toURI();
}

Modified:
trunk/central/tutorials/components/hello/src/test/org/acme/test/DemoTestCase.java
===================================================================
---
trunk/central/tutorials/components/hello/src/test/org/acme/test/DemoTestCase.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/central/tutorials/components/hello/src/test/org/acme/test/DemoTestCase.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -48,7 +48,7 @@

private URI getPartURI() throws Exception
{
- String path = System.getProperty(
"project.deliverable.part.filename" );
+ String path = System.getProperty( "project.deliverable.part.path" );
File file = new File( path );
return file.toURI();
}

Modified:
trunk/central/tutorials/components/import/demo/src/test/org/acme/test/DemoTestCase.java
===================================================================
---
trunk/central/tutorials/components/import/demo/src/test/org/acme/test/DemoTestCase.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/central/tutorials/components/import/demo/src/test/org/acme/test/DemoTestCase.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -48,7 +48,7 @@

private URI getPartURI() throws Exception
{
- String path = System.getProperty(
"project.deliverable.part.filename" );
+ String path = System.getProperty( "project.deliverable.part.path" );
File file = new File( path );
return file.toURI();
}

Modified:
trunk/central/tutorials/components/lifestyle/src/test/org/acme/test/DemoTestCase.java
===================================================================
---
trunk/central/tutorials/components/lifestyle/src/test/org/acme/test/DemoTestCase.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/central/tutorials/components/lifestyle/src/test/org/acme/test/DemoTestCase.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -50,7 +50,7 @@

private URI getPartURI() throws Exception
{
- String path = System.getProperty(
"project.deliverable.part.filename" );
+ String path = System.getProperty( "project.deliverable.part.path" );
File file = new File( path );
return file.toURI();
}

Modified:
trunk/central/tutorials/components/logging/src/test/org/acme/test/DemoTestCase.java
===================================================================
---
trunk/central/tutorials/components/logging/src/test/org/acme/test/DemoTestCase.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/central/tutorials/components/logging/src/test/org/acme/test/DemoTestCase.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -48,7 +48,7 @@

private URI getPartURI() throws Exception
{
- String path = System.getProperty(
"project.deliverable.part.filename" );
+ String path = System.getProperty( "project.deliverable.part.path" );
File file = new File( path );
return file.toURI();
}

Modified:
trunk/central/tutorials/components/lookup/src/test/org/acme/test/DemoTestCase.java
===================================================================
---
trunk/central/tutorials/components/lookup/src/test/org/acme/test/DemoTestCase.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/central/tutorials/components/lookup/src/test/org/acme/test/DemoTestCase.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -51,7 +51,7 @@

private URI getPartURI() throws Exception
{
- String path = System.getProperty(
"project.deliverable.part.filename" );
+ String path = System.getProperty( "project.deliverable.part.path" );
File file = new File( path );
return file.toURI();
}

Modified:
trunk/central/tutorials/components/parts/src/test/org/acme/test/DemoTestCase.java
===================================================================
---
trunk/central/tutorials/components/parts/src/test/org/acme/test/DemoTestCase.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/central/tutorials/components/parts/src/test/org/acme/test/DemoTestCase.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -48,7 +48,7 @@

private URI getPartURI() throws Exception
{
- String path = System.getProperty(
"project.deliverable.part.filename" );
+ String path = System.getProperty( "project.deliverable.part.path" );
File file = new File( path );
return file.toURI();
}

Modified:
trunk/central/tutorials/components/singleton/src/test/org/acme/test/DemoTestCase.java
===================================================================
---
trunk/central/tutorials/components/singleton/src/test/org/acme/test/DemoTestCase.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/central/tutorials/components/singleton/src/test/org/acme/test/DemoTestCase.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -48,7 +48,7 @@

private URI getPartURI() throws Exception
{
- String path = System.getProperty(
"project.deliverable.part.filename" );
+ String path = System.getProperty( "project.deliverable.part.path" );
File file = new File( path );
return file.toURI();
}

Modified:
trunk/central/tutorials/components/state/src/test/org/acme/test/DemoTestCase.java
===================================================================
---
trunk/central/tutorials/components/state/src/test/org/acme/test/DemoTestCase.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/central/tutorials/components/state/src/test/org/acme/test/DemoTestCase.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -50,7 +50,7 @@

private URI getPartURI() throws Exception
{
- String path = System.getProperty(
"project.deliverable.part.filename" );
+ String path = System.getProperty( "project.deliverable.part.path" );
File file = new File( path );
return file.toURI();
}

Modified:
trunk/central/tutorials/components/thread/src/test/org/acme/test/DemoTestCase.java
===================================================================
---
trunk/central/tutorials/components/thread/src/test/org/acme/test/DemoTestCase.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/central/tutorials/components/thread/src/test/org/acme/test/DemoTestCase.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -48,7 +48,7 @@

private URI getPartURI() throws Exception
{
- String path = System.getProperty(
"project.deliverable.part.filename" );
+ String path = System.getProperty( "project.deliverable.part.path" );
File file = new File( path );
return file.toURI();
}

Modified:
trunk/central/tutorials/components/transient/src/test/org/acme/test/DemoTestCase.java
===================================================================
---
trunk/central/tutorials/components/transient/src/test/org/acme/test/DemoTestCase.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/central/tutorials/components/transient/src/test/org/acme/test/DemoTestCase.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -48,7 +48,7 @@

private URI getPartURI() throws Exception
{
- String path = System.getProperty(
"project.deliverable.part.filename" );
+ String path = System.getProperty( "project.deliverable.part.path" );
File file = new File( path );
return file.toURI();
}

Modified:
trunk/central/tutorials/components/type/src/test/org/acme/test/DemoTestCase.java
===================================================================
---
trunk/central/tutorials/components/type/src/test/org/acme/test/DemoTestCase.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/central/tutorials/components/type/src/test/org/acme/test/DemoTestCase.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -51,7 +51,7 @@

private URI getPartURI() throws Exception
{
- String path = System.getProperty(
"project.deliverable.part.filename" );
+ String path = System.getProperty( "project.deliverable.part.path" );
File file = new File( path );
return file.toURI();
}

Added: trunk/central/tutorials/tooling/simple/automation/build.xml
===================================================================
--- trunk/central/tutorials/tooling/simple/automation/build.xml 2006-07-20
08:16:28 UTC (rev 1616)
+++ trunk/central/tutorials/tooling/simple/automation/build.xml 2006-07-20
16:39:36 UTC (rev 1617)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<project name="demo" default="install"
+ xmlns:transit="antlib:net.dpml.transit">
+
+ <transit:import uri="local:template:dpml/tools/standard"/>
+
+</project>

Added: trunk/central/tutorials/tooling/simple/automation/index.xml
===================================================================
--- trunk/central/tutorials/tooling/simple/automation/index.xml 2006-07-20
08:16:28 UTC (rev 1616)
+++ trunk/central/tutorials/tooling/simple/automation/index.xml 2006-07-20
16:39:36 UTC (rev 1617)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<index xmlns="link:xsd:dpml/lang/dpml-module#1.0">
+
+ <project name="demo" basedir=".">
+ <properties>
+ <property name="location" value="New York"/>
+ <property name="message" value="Hello from ${user.name} in
${location}"/>
+ </properties>
+ <types>
+ <type id="jar"/>
+ </types>
+ <filters>
+ <filter token="MESSAGE" value="${message}"/>
+ </filters>
+ </project>
+
+</index>

Added:
trunk/central/tutorials/tooling/simple/automation/src/main/org/acme/Demo.java
===================================================================
---
trunk/central/tutorials/tooling/simple/automation/src/main/org/acme/Demo.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/central/tutorials/tooling/simple/automation/src/main/org/acme/Demo.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2006 Stephen J. McConnell.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.acme;
+
+import java.util.logging.Logger;
+import java.util.logging.Level;
+
+/**
+ * A simple class.
+ *
+ * @author <a href="@PUBLISHER-URL@">@PUBLISHER-NAME@</a>
+ * @version @PROJECT-VERSION@
+ */
+public class Demo
+{
+ //------------------------------------------------------------------
+ // constructor
+ //------------------------------------------------------------------
+
+ /**
+ * Creation of a new demo instance.
+ */
+ public Demo()
+ {
+ Logger logger = Logger.getLogger( "demo" );
+ if( logger.isLoggable( Level.INFO ) )
+ {
+ logger.info( "@MESSAGE@" );
+ }
+ }
+}

Modified: trunk/central/tutorials/tooling/simple/build/build.xml
===================================================================
--- trunk/central/tutorials/tooling/simple/build/build.xml 2006-07-20
08:16:28 UTC (rev 1616)
+++ trunk/central/tutorials/tooling/simple/build/build.xml 2006-07-20
16:39:36 UTC (rev 1617)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>

-<project name="demo" default="build">
+<project name="demo" default="install">

<target name="clean">
<!-- nothing to do -->

Modified: trunk/central/tutorials/tooling/simple/filters/build.xml
===================================================================
--- trunk/central/tutorials/tooling/simple/filters/build.xml 2006-07-20
08:16:28 UTC (rev 1616)
+++ trunk/central/tutorials/tooling/simple/filters/build.xml 2006-07-20
16:39:36 UTC (rev 1617)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>

-<project name="demo" default="build">
+<project name="demo" default="install">

<target name="init">
<property name="src" location="${basedir}/src"/>

Modified: trunk/central/tutorials/tooling/simple/properties/build.xml
===================================================================
--- trunk/central/tutorials/tooling/simple/properties/build.xml 2006-07-20
08:16:28 UTC (rev 1616)
+++ trunk/central/tutorials/tooling/simple/properties/build.xml 2006-07-20
16:39:36 UTC (rev 1617)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>

-<project name="demo" default="build">
+<project name="demo" default="install">

<target name="clean">
<!-- nothing to do -->

Modified: trunk/central/tutorials/tooling/simple/symbolic/build.xml
===================================================================
--- trunk/central/tutorials/tooling/simple/symbolic/build.xml 2006-07-20
08:16:28 UTC (rev 1616)
+++ trunk/central/tutorials/tooling/simple/symbolic/build.xml 2006-07-20
16:39:36 UTC (rev 1617)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>

-<project name="demo" default="build">
+<project name="demo" default="install">

<target name="clean">
<!-- nothing to do -->

Added: trunk/central/tutorials/tooling/simple/types/build.xml
===================================================================
--- trunk/central/tutorials/tooling/simple/types/build.xml 2006-07-20
08:16:28 UTC (rev 1616)
+++ trunk/central/tutorials/tooling/simple/types/build.xml 2006-07-20
16:39:36 UTC (rev 1617)
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<project name="demo" default="install">
+
+ <target name="clean">
+ <delete dir="${project.target.dir}"/>
+ </target>
+
+ <!--
+ Copy the src content to the target/build/main directory with filtering
+ applied and compile the resulting source files into the target/classes/main
+ directory.
+ -->
+ <target name="build">
+ <mkdir dir="${project.target.build.main.dir}"/>
+ <copy toDir="${project.target.build.main.dir}" filtering="true">
+ <fileset dir="${project.src.main.dir}"/>
+ </copy>
+ <mkdir dir="${project.target.classes.main.dir}"/>
+ <javac srcdir="${project.target.build.main.dir}"
+ destdir="${project.target.classes.main.dir}"/>
+ </target>
+
+ <!--
+ Package the compiled classes into a jar file and place the result in the
+ target/deliverables/jars directory.
+ -->
+ <target name="package" depends="build">
+ <mkdir dir="${project.deliverable.jar.dir}"/>
+ <jar destfile="${project.deliverable.jar.path}"
basedir="${project.target.classes.main.dir}"/>
+ </target>
+
+ <!--
+ Copy the jar file to the Depot system cache.
+ -->
+ <target name="install" depends="package">
+ <mkdir dir="${project.cache}/${project.cache.jar.dir}"/>
+ <copy file="${project.deliverable.jar.path}"
toFile="${project.cache}/${project.cache.jar.path}"/>
+ </target>
+
+</project>

Added: trunk/central/tutorials/tooling/simple/types/index.xml
===================================================================
--- trunk/central/tutorials/tooling/simple/types/index.xml 2006-07-20
08:16:28 UTC (rev 1616)
+++ trunk/central/tutorials/tooling/simple/types/index.xml 2006-07-20
16:39:36 UTC (rev 1617)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<index xmlns="link:xsd:dpml/lang/dpml-module#1.0">
+
+ <project name="demo" basedir=".">
+ <properties>
+ <property name="location" value="New York"/>
+ <property name="message" value="Hello from ${user.name} in
${location}"/>
+ </properties>
+ <types>
+ <type id="jar"/>
+ </types>
+ <filters>
+ <filter token="MESSAGE" value="${message}"/>
+ </filters>
+ </project>
+
+</index>

Added:
trunk/central/tutorials/tooling/simple/types/src/main/org/acme/Demo.java
===================================================================
--- trunk/central/tutorials/tooling/simple/types/src/main/org/acme/Demo.java
2006-07-20 08:16:28 UTC (rev 1616)
+++ trunk/central/tutorials/tooling/simple/types/src/main/org/acme/Demo.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2006 Stephen J. McConnell.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.acme;
+
+import java.util.logging.Logger;
+import java.util.logging.Level;
+
+/**
+ * A simple class.
+ *
+ * @author <a href="@PUBLISHER-URL@">@PUBLISHER-NAME@</a>
+ * @version @PROJECT-VERSION@
+ */
+public class Demo
+{
+ //------------------------------------------------------------------
+ // constructor
+ //------------------------------------------------------------------
+
+ /**
+ * Creation of a new demo instance.
+ */
+ public Demo()
+ {
+ Logger logger = Logger.getLogger( "demo" );
+ if( logger.isLoggable( Level.INFO ) )
+ {
+ logger.info( "@MESSAGE@" );
+ }
+ }
+}

Modified: trunk/main/depot/tools/builder/src/main/net/dpml/tools/Context.java
===================================================================
--- trunk/main/depot/tools/builder/src/main/net/dpml/tools/Context.java
2006-07-20 08:16:28 UTC (rev 1616)
+++ trunk/main/depot/tools/builder/src/main/net/dpml/tools/Context.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -256,9 +256,24 @@
* @param id the artifact type
* @return the filename
*/
- String getLayoutPath( String id );
+ String getLayoutFilename( String id );

/**
+ * Return the directory path representing the module structure and type
+ * using the layout strategy employed by the cache.
+ * @param id the artifact type
+ * @return the path from the root of the cache to the directory
containing the artifact
+ */
+ String getLayoutBase( String id );
+
+ /**
+ * Return the full path to an artifact using the layout employed by the
cache.
+ * @param id the artifact type
+ * @return the full path including base path and filename
+ */
+ String getLayoutPath( String id );
+
+ /**
* Utility operation to construct a new classpath path instance.
* @param scope the build scope
* @return the path

Modified:
trunk/main/depot/tools/builder/src/main/net/dpml/tools/impl/DefaultContext.java
===================================================================
---
trunk/main/depot/tools/builder/src/main/net/dpml/tools/impl/DefaultContext.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/main/depot/tools/builder/src/main/net/dpml/tools/impl/DefaultContext.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -42,6 +42,8 @@
import net.dpml.transit.Artifact;
import net.dpml.transit.Transit;
import net.dpml.transit.link.LinkManager;
+import net.dpml.transit.Layout;
+import net.dpml.transit.ClassicLayout;

import net.dpml.util.Logger;
import net.dpml.util.DefaultLogger;
@@ -53,13 +55,15 @@
import org.apache.tools.ant.types.Path;

/**
- * Default implmentation of a project context.
+ * Default implementation of a project context.
*
* @author <a href="@PUBLISHER-URL@">@PUBLISHER-NAME@</a>
* @version @PROJECT-VERSION@
*/
public final class DefaultContext implements Context
{
+ private static final Layout CLASSIC_LAYOUT = new ClassicLayout();
+
private final Project m_project;
private final Resource m_resource;

@@ -113,6 +117,10 @@
setProperty( "project.resource.path", resource.getResourcePath() );
setProperty( "project.basedir", resource.getBaseDir().toString() );

+ File cache = Transit.getInstance().getCacheDirectory();
+ String cachePath = cache.getCanonicalPath();
+ setProperty( "project.cache", cachePath );
+
Filter[] filters = resource.getFilters();
for( int i=0; i<filters.length; i++ )
{
@@ -135,14 +143,14 @@
setProperty( "project.nl", "\n" );
setProperty(
"project.line",
-
"---------------------------------------------------------------------------\n"
);
+
"---------------------------------------------------------------------------\n",
false );
setProperty(
"project.info",

"---------------------------------------------------------------------------\n"
+ resource.getResourcePath()
+ "#"
+ resource.getVersion()
- +
"\n---------------------------------------------------------------------------"
);
+ +
"\n---------------------------------------------------------------------------",
false );

setProperty( "project.src.dir", getSrcDirectory().toString() );
setProperty( "project.src.main.dir",
getSrcMainDirectory().toString() );
@@ -161,6 +169,10 @@
setProperty( "project.target.test.dir",
getTargetTestDirectory().toString() );
setProperty( "project.target.reports.dir",
getTargetReportsDirectory().toString() );

+ // add properties dealing with produced types
+
+ addProductionProperties();
+
// add listeners declared in the builder configuration

ListenerDirective[] listeners =
StandardBuilder.CONFIGURATION.getListenerDirectives();
@@ -175,16 +187,49 @@
}
}

+ private void addProductionProperties() throws IOException
+ {
+ Resource resource = getResource();
+ Type[] types = resource.getTypes();
+ for( int i=0; i<types.length; i++ )
+ {
+ Type type = types[i];
+ String id = type.getID();
+ File file = getTargetDeliverable( id );
+ String path = file.getCanonicalPath();
+ setProperty( "project.deliverable." + id + ".path", path );
+ File dir = file.getParentFile();
+ String spec = dir.getCanonicalPath();
+ setProperty( "project.deliverable." + id + ".dir", spec );
+ String base = getLayoutBase( id );
+ setProperty( "project.cache." + id + ".dir", base );
+ String address = getLayoutPath( id );
+ setProperty( "project.cache." + id + ".path", address );
+ }
+ }
+
private void setProperty( String key, String value )
{
+ setProperty( key, value, true );
+ }
+ private void setProperty( String key, String value, boolean verbose )
+ {
Project project = getProject();
String v = project.getProperty( key );
if( null == v )
{
+ if( verbose )
+ {
+ project.log( "setting property [" + key + "] to [" + value +
"]", Project.MSG_VERBOSE );
+ }
project.setProperty( key, value );
}
else if( !value.equals( v ) )
{
+ if( verbose )
+ {
+ project.log( "updating property [" + key + "] to [" + value
+ "]", Project.MSG_VERBOSE );
+ }
project.setProperty( key, value );
}
}
@@ -211,7 +256,7 @@
{
File deliverables = getTargetDeliverablesDirectory();
File jars = new File( deliverables, "jars" );
- String filename = getLayoutPath( "jar" );
+ String filename = getLayoutFilename( "jar" );
File jar = new File( jars, filename );
m_test.createPathElement().setLocation( jar );
}
@@ -542,7 +587,8 @@
*/
public File getTargetDeliverable( String type )
{
- String path = getLayoutPath( type );
+ Artifact artifact = m_resource.getArtifact( type );
+ String path = CLASSIC_LAYOUT.resolveFilename( artifact );
String types = type + "s";
File root = new File( getTargetDeliverablesDirectory(), types );
return new File( root, path );
@@ -564,13 +610,36 @@
* @param id the artifact type
* @return the filename
*/
- public String getLayoutPath( String id )
+ public String getLayoutFilename( String id )
{
Artifact artifact = m_resource.getArtifact( id );
return Transit.getInstance().getCacheLayout().resolveFilename(
artifact );
}
+
+ /**
+ * Return the directory path representing the module structure and type
+ * using the layout strategy employed by the cache.
+ * @param id the artifact type
+ * @return the path from the root of the cache to the directory
containing the artifact
+ */
+ public String getLayoutBase( String id )
+ {
+ Artifact artifact = m_resource.getArtifact( id );
+ return Transit.getInstance().getCacheLayout().resolveBase( artifact
);
+ }

/**
+ * Return the full path to an artifact using the layout employed by the
cache.
+ * @param id the artifact type
+ * @return the full path including base path and filename
+ */
+ public String getLayoutPath( String id )
+ {
+ Artifact artifact = m_resource.getArtifact( id );
+ return Transit.getInstance().getCacheLayout().resolvePath( artifact
);
+ }
+
+ /**
* Utility operation to construct a new classpath path instance.
* @param scope the build scope
* @return the path

Modified:
trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/InstallTask.java
===================================================================
---
trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/InstallTask.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/InstallTask.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -76,7 +76,7 @@
//

String id = type.getID();
- String filename = getContext().getLayoutPath( id );
+ String filename = getContext().getLayoutFilename( id );
File group = new File( deliverables, id + "s" );
File target = new File( group, filename );
if( !target.exists() && !id.equalsIgnoreCase( "null" ) )

Modified:
trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/JUnitTestTask.java
===================================================================
---
trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/JUnitTestTask.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/JUnitTestTask.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -80,21 +80,33 @@
public static final String FORK_KEY = "project.test.fork";

/**
- * Constant test halt-on-error key.
+ * Constant test fork mode key.
*/
- public static final String HALT_ON_ERROR_KEY =
"project.test.halt-on-error";
+ public static final String TEST_FORK_MODE_KEY = "project.test.fork.mode";

/**
- * Constant test fork mode key.
+ * Constant test halt-on-error key (default is false).
*/
- public static final String TEST_FORK_MODE_KEY = "project.test.fork.mode";
+ public static final String HALT_ON_ERROR_KEY =
"project.test.halt-on-error";

/**
- * Constant test halt-on-failure key.
+ * Constant test halt-on-failure key (default is false).
*/
public static final String HALT_ON_FAILURE_KEY =
"project.test.halt-on-failure";

/**
+ * Constant test abort on error key - if true (the default) the build
will fail
+ * if a test error occurs.
+ */
+ public static final String ABORT_ON_ERROR_KEY =
"project.test.exit-on-error";
+
+ /**
+ * Constant test abort on failure key - if true (the default) the build
will fail
+ * if a test failure occurs.
+ */
+ public static final String ABORT_ON_FAILURE_KEY =
"project.test.exit-on-failure";
+
+ /**
* Constant cache path key.
*/
public static final String CACHE_PATH_KEY = "dpml.cache";
@@ -129,6 +141,15 @@
*/
public static final String VERBOSE_KEY = "project.test.verbose";

+ private static final String ERROR_KEY = "project.test.error";
+ private static final String FAILURE_KEY = "project.test.failure";
+ private static final String TEST_SRC_VALUE = "test";
+ private static final String TEST_ENV_VALUE = "env";
+ private static final boolean DEBUG_VALUE = true;
+ private static final boolean FORK_VALUE = true;
+ private static final boolean HALT_ON_ERROR_VALUE = false;
+ private static final boolean HALT_ON_FAILURE_VALUE = false;
+
private File m_source;
private String m_classPathRef;
private Path m_classPath;
@@ -216,24 +237,27 @@
{
final File working = context.getTargetTestDirectory();
final Path classpath = getClasspath();
+
executeUnitTests( src, classpath, working );
- final String error = project.getProperty( ERROR_KEY );
- if( null != error )
+
+ if( getBooleanProperty( ABORT_ON_ERROR_KEY, true ) )
{
- final String message =
- "One or more unit test errors occured.";
- if( getHaltOnErrorProperty() )
+ final String error = project.getProperty( ERROR_KEY );
+ if( null != error )
{
+ final String message =
+ "One or more unit test errors occured.";
fail( message );
}
}
- final String failure = project.getProperty( FAILURE_KEY );
- if( null != failure )
+
+ if( getBooleanProperty( ABORT_ON_FAILURE_KEY, true ) )
{
- final String message =
- "One or more unit test failures occured.";
- if( getHaltOnFailureProperty() )
+ final String failure = project.getProperty( FAILURE_KEY );
+ if( null != failure )
{
+ final String message =
+ "One or more unit test failures occured.";
fail( message );
}
}
@@ -246,10 +270,7 @@
log( "Test classpath: " + classpath, Project.MSG_VERBOSE );
final FileSet fileset = createFileSet( src );
final JUnitTask junit = (JUnitTask) project.createTask( "junit" );
- junit.setErrorProperty( ERROR_KEY );
- junit.setFailureProperty( FAILURE_KEY );
junit.setTaskName( getTaskName() );
- junit.init();

final JUnitTask.SummaryAttribute summary = getSummaryAttribute();
junit.setPrintsummary( summary );
@@ -259,9 +280,7 @@
junit.setReloading( true );
junit.setFiltertrace( true );
junit.createClasspath().add( classpath );
- junit.setHaltonerror( getHaltOnError() );
- junit.setHaltonfailure( getHaltOnFailure() );
-
+
Context context = getContext();
String verbose = getVerboseArgument();
if( null != verbose )
@@ -358,6 +377,21 @@

configureDeliverableSysProperties( junit );
configureForExecution( junit );
+
+ junit.setErrorProperty( ERROR_KEY );
+ junit.setFailureProperty( FAILURE_KEY );
+ final boolean haltOnErrorPolicy = getHaltOnErrorPolicy();
+ if( haltOnErrorPolicy )
+ {
+ junit.setHaltonerror( true );
+ }
+ final boolean haltOnFailurePolicy = getHaltOnFailurePolicy();
+ if( haltOnFailurePolicy )
+ {
+ junit.setHaltonfailure( true );
+ }
+
+ junit.init();
junit.execute();
}

@@ -407,7 +441,7 @@
File file = context.getTargetDeliverable( id );
String path = file.getCanonicalPath();
final Environment.Variable variable = new
Environment.Variable();
- variable.setKey( "project.deliverable." + id + ".filename" );
+ variable.setKey( "project.deliverable." + id + ".path" );
variable.setValue( path );
task.addConfiguredSysproperty( variable );
}
@@ -498,16 +532,6 @@
return getBooleanProperty( DEBUG_KEY, DEBUG_VALUE );
}

- private boolean getHaltOnErrorProperty()
- {
- return getBooleanProperty( HALT_ON_ERROR_KEY, HALT_ON_ERROR_VALUE );
- }
-
- private boolean getHaltOnFailureProperty()
- {
- return getBooleanProperty( HALT_ON_FAILURE_KEY,
HALT_ON_FAILURE_VALUE );
- }
-
private boolean getForkProperty()
{
return getBooleanProperty( FORK_KEY, FORK_VALUE );
@@ -561,13 +585,13 @@
return summary;
}

- private boolean getHaltOnError()
+ private boolean getHaltOnErrorPolicy()
{
return getBooleanProperty(
HALT_ON_ERROR_KEY, HALT_ON_ERROR_VALUE );
}

- private boolean getHaltOnFailure()
+ private boolean getHaltOnFailurePolicy()
{
return getBooleanProperty(
HALT_ON_FAILURE_KEY, HALT_ON_FAILURE_VALUE );
@@ -588,14 +612,4 @@
return formatter;
}

- private static final String ERROR_KEY = "project.test.error";
- private static final String FAILURE_KEY = "project.test.failure";
-
- private static final String TEST_SRC_VALUE = "test";
- private static final String TEST_ENV_VALUE = "env";
- private static final boolean DEBUG_VALUE = true;
- private static final boolean FORK_VALUE = true;
- private static final boolean HALT_ON_ERROR_VALUE = true;
- private static final boolean HALT_ON_FAILURE_VALUE = true;
-
}

Modified:
trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/ModuleTask.java
===================================================================
---
trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/ModuleTask.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/ModuleTask.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -60,7 +60,7 @@
{
Project project = getProject();
final Context context = getContext();
- final String path = context.getLayoutPath( "module" );
+ final String path = context.getLayoutFilename( "module" );
final File deliverables = context.getTargetDeliverablesDirectory();
final File modules = new File( deliverables, "modules" );
final File module = new File( modules, path );

Modified:
trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/PackageTask.java
===================================================================
---
trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/PackageTask.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/PackageTask.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -104,7 +104,7 @@
Project project = context.getProject();
File deliverables = context.getTargetDeliverablesDirectory();
File jars = new File( deliverables, "jars" );
- String filename = context.getLayoutPath( "jar" );
+ String filename = context.getLayoutFilename( "jar" );
return new File( jars, filename );
}
}

Modified:
trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/PartTask.java
===================================================================
---
trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/PartTask.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/PartTask.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -173,7 +173,7 @@
else
{
Context context = getContext();
- final String path = context.getLayoutPath( TYPE );
+ final String path = context.getLayoutFilename( TYPE );
final File deliverables =
context.getTargetDeliverablesDirectory();
final File parts = new File( deliverables, TYPE + "s" );
final File file = new File( parts, path );

Modified:
trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/TestTask.java
===================================================================
---
trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/TestTask.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/main/depot/tools/builder/src/main/net/dpml/tools/tasks/TestTask.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -74,7 +74,7 @@
Project project = context.getProject();
File deliverables = context.getTargetDeliverablesDirectory();
File jars = new File( deliverables, "jars" );
- String filename = context.getLayoutPath( "jar" );
+ String filename = context.getLayoutFilename( "jar" );
return new File( jars, filename );
}
}

Modified:
trunk/main/transit/core/src/main/net/dpml/transit/SecuredTransitContext.java
===================================================================
---
trunk/main/transit/core/src/main/net/dpml/transit/SecuredTransitContext.java
2006-07-20 08:16:28 UTC (rev 1616)
+++
trunk/main/transit/core/src/main/net/dpml/transit/SecuredTransitContext.java
2006-07-20 16:39:36 UTC (rev 1617)
@@ -161,11 +161,6 @@
*/
private Logger m_logger;

- /**
- * The repository service provider.
- */
- //private Repository m_repository;
-
private ProxyController m_proxyController;

private DisposalController m_disposalController;




  • r1617 - in trunk: central/site/src/docs/depot/tutorials central/site/src/docs/depot/tutorials/complex central/site/src/docs/depot/tutorials/modules central/site/src/docs/depot/tutorials/simple central/tutorials/components/context/src/test/org/acme/test central/tutorials/components/customize/clock/src/test/org/acme/test central/tutorials/components/customize/custom/src/test/org/acme/test central/tutorials/components/examples/src/test/org/acme/test central/tutorials/components/hello/src/test/org/acme/test central/tutorials/components/import/demo/src/test/org/acme/test central/tutorials/components/lifestyle/src/test/org/acme/test central/tutorials/components/logging/src/test/org/acme/test central/tutorials/components/lookup/src/test/org/acme/test central/tutorials/components/parts/src/test/org/acme/test central/tutorials/components/singleton/src/test/org/acme/test central/tutorials/components/state/src/test/org/acme/test central/tutorials/components/thread/src/test/org! /acme/test central/tutorials/components/transient/src/test/org/acme/test central/tutorials/components/type/src/test/org/acme/test central/tutorials/tooling/simple central/tutorials/tooling/simple/automation central/tutorials/tooling/simple/automation/src central/tutorials/tooling/simple/automation/src/main central/tutorials/tooling/simple/automation/src/main/org central/tutorials/tooling/simple/automation/src/main/org/acme central/tutorials/tooling/simple/build central/tutorials/tooling/simple/filters central/tutorials/tooling/simple/properties central/tutorials/tooling/simple/symbolic central/tutorials/tooling/simple/types central/tutorials/tooling/simple/types/src central/tutorials/tooling/simple/types/src/main central/tutorials/tooling/simple/types/src/main/org central/tutorials/tooling/simple/types/src/main/org/acme main/depot/tools/builder/src/main/net/dpml/tools main/depot/tools/builder/src/main/net/dpml/tools/impl main/depot/tools/builder/src/main/net/dpml/tools/task! s main/transit/core/src/main/net/dpml/transit, mcconnell at BerliOS, 07/20/2006

Archive powered by MHonArc 2.6.24.

Top of Page