notify-dpml AT lists.ibiblio.org
Subject: DPML Notify
List archive
r1893 - in trunk: central/site central/site/src/docs/metro central/site/src/docs/metro/cli central/site/src/docs/metro/component central/site/src/docs/metro/concepts central/site/src/docs/metro/parts central/site/src/docs/metro/parts/info central/site/src/docs/metro/parts/strategy central/site/src/docs/util/transit central/site/src/docs/util/transit/tutorials main/depot/build/etc main/metro/appliance/etc/data main/metro/appliance/src/test/net/dpml/appliance main/metro/connector/etc main/metro/main/etc main/metro/part/etc/bin main/metro/part/etc/data main/metro/part/etc/xsds main/metro/part/src/main/net/dpml/runtime main/metro/sample/etc main/metro/test/etc/data tutorials tutorials/components tutorials/components/context/etc tutorials/components/customize/clock/etc tutorials/components/examples/etc tutorials/components/hello/etc tutorials/components/lifestyle/etc tutorials/components/logging/etc tutorials/components/lookup/etc tutorials/components/parts/etc tutorials! /components/singleton/etc tutorials/components/state/etc tutorials/components/thread/etc tutorials/components/transient/etc
- From: mcconnell at BerliOS <mcconnell AT mail.berlios.de>
- To: notify-dpml AT lists.ibiblio.org
- Subject: r1893 - in trunk: central/site central/site/src/docs/metro central/site/src/docs/metro/cli central/site/src/docs/metro/component central/site/src/docs/metro/concepts central/site/src/docs/metro/parts central/site/src/docs/metro/parts/info central/site/src/docs/metro/parts/strategy central/site/src/docs/util/transit central/site/src/docs/util/transit/tutorials main/depot/build/etc main/metro/appliance/etc/data main/metro/appliance/src/test/net/dpml/appliance main/metro/connector/etc main/metro/main/etc main/metro/part/etc/bin main/metro/part/etc/data main/metro/part/etc/xsds main/metro/part/src/main/net/dpml/runtime main/metro/sample/etc main/metro/test/etc/data tutorials tutorials/components tutorials/components/context/etc tutorials/components/customize/clock/etc tutorials/components/examples/etc tutorials/components/hello/etc tutorials/components/lifestyle/etc tutorials/components/logging/etc tutorials/components/lookup/etc tutorials/components/parts/etc tutorials! /components/singleton/etc tutorials/components/state/etc tutorials/components/thread/etc tutorials/components/transient/etc
- Date: Mon, 12 Mar 2007 04:10:18 +0100
Author: mcconnell
Date: 2007-03-12 04:10:15 +0100 (Mon, 12 Mar 2007)
New Revision: 1893
Added:
trunk/central/site/src/docs/metro/component/
trunk/central/site/src/docs/metro/concepts/usage.xml
trunk/central/site/src/docs/metro/parts/
trunk/central/site/src/docs/metro/state/
trunk/central/site/src/docs/util/transit/handlers.xml
Removed:
trunk/central/site/src/docs/metro/concepts/model.xml
trunk/central/site/src/docs/metro/concepts/parts.xml
trunk/central/site/src/docs/metro/directives/
trunk/central/site/src/docs/util/transit/parts/
trunk/main/metro/part/etc/bin/msvcr71.dll
trunk/tutorials/components/import/
trunk/tutorials/components/type/
trunk/tutorials/components/unit/
Modified:
trunk/central/site/build.xml
trunk/central/site/src/docs/metro/cli/index.xml
trunk/central/site/src/docs/metro/component/index.xml
trunk/central/site/src/docs/metro/concepts/index.xml
trunk/central/site/src/docs/metro/concepts/navigation.xml
trunk/central/site/src/docs/metro/navigation.xml
trunk/central/site/src/docs/metro/parts/index.xml
trunk/central/site/src/docs/metro/parts/info/index.xml
trunk/central/site/src/docs/metro/parts/strategy/index.xml
trunk/central/site/src/docs/metro/parts/strategy/navigation.xml
trunk/central/site/src/docs/util/transit/navigation.xml
trunk/central/site/src/docs/util/transit/tutorials/index.xml
trunk/central/site/src/docs/util/transit/tutorials/navigation.xml
trunk/main/depot/build/etc/component.xml
trunk/main/metro/appliance/etc/data/appliance.xml
trunk/main/metro/appliance/etc/data/foo.xml
trunk/main/metro/appliance/etc/data/plan.xml
trunk/main/metro/appliance/src/test/net/dpml/appliance/ApplianceDescriptorTestCase.java
trunk/main/metro/connector/etc/component.xml
trunk/main/metro/connector/etc/local.xml
trunk/main/metro/main/etc/component.xml
trunk/main/metro/part/etc/data/array.xml
trunk/main/metro/part/etc/data/component.xml
trunk/main/metro/part/etc/data/composite.xml
trunk/main/metro/part/etc/data/contextual.xml
trunk/main/metro/part/etc/data/controller.xml
trunk/main/metro/part/etc/data/foreign.xml
trunk/main/metro/part/etc/data/generics.xml
trunk/main/metro/part/etc/data/lookup.xml
trunk/main/metro/part/etc/data/select.xml
trunk/main/metro/part/etc/data/singleton.xml
trunk/main/metro/part/etc/data/state.xml
trunk/main/metro/part/etc/data/transient.xml
trunk/main/metro/part/etc/xsds/component.xsd
trunk/main/metro/part/etc/xsds/part.xsd
trunk/main/metro/part/src/main/net/dpml/runtime/ComponentStrategyHandler.java
trunk/main/metro/sample/etc/component.xml
trunk/main/metro/test/etc/data/application.xml
trunk/tutorials/components/context/etc/component.xml
trunk/tutorials/components/customize/clock/etc/component.xml
trunk/tutorials/components/examples/etc/component.xml
trunk/tutorials/components/hello/etc/component.xml
trunk/tutorials/components/lifestyle/etc/component.xml
trunk/tutorials/components/logging/etc/component.xml
trunk/tutorials/components/lookup/etc/component.xml
trunk/tutorials/components/parts/etc/component.xml
trunk/tutorials/components/singleton/etc/component.xml
trunk/tutorials/components/state/etc/component.xml
trunk/tutorials/components/thread/etc/component.xml
trunk/tutorials/components/transient/etc/component.xml
trunk/tutorials/module.xml
Log:
doc evolution
Modified: trunk/central/site/build.xml
===================================================================
--- trunk/central/site/build.xml 2007-03-09 23:32:58 UTC (rev 1892)
+++ trunk/central/site/build.xml 2007-03-12 03:10:15 UTC (rev 1893)
@@ -260,15 +260,7 @@
</fileset>
</copy>
- <property name="type.src.dir" location="${components.dir}/type"/>
- <property name="local.type.docs.dir"
location="target/docs/metro/tutorials/type"/>
- <mkdir dir="${local.type.docs.dir}"/>
- <copy toDir="${local.type.docs.dir}" flatten="true">
- <fileset dir="${type.src.dir}/target/reports/src">
- <include name="**/*.html"/>
- </fileset>
- </copy>
-
+ <!--
<property name="import.src.dir" location="${components.dir}/import"/>
<property name="local.import.docs.dir"
location="target/docs/metro/tutorials/import"/>
<mkdir dir="${local.import.docs.dir}"/>
@@ -307,6 +299,7 @@
<include name="**/*.html"/>
</fileset>
</copy>
+ -->
</target>
Modified: trunk/central/site/src/docs/metro/cli/index.xml
===================================================================
--- trunk/central/site/src/docs/metro/cli/index.xml 2007-03-09 23:32:58
UTC (rev 1892)
+++ trunk/central/site/src/docs/metro/cli/index.xml 2007-03-12 03:10:15
UTC (rev 1893)
@@ -13,64 +13,60 @@
<subsection name="Description">
-<pre><![CDATA[$ metro -uri <uri>]]></pre>
+<pre><![CDATA[$ metro <uri>]]></pre>
<p>
- Runs a metro application given a codebase and optional station
- callback key. Normally the metro command is invoked by the station
+ Runs a metro application given a codebase uri.
+ Normally the metro command is invoked by the DPML Station
as a result of a application start request or as a consequence of
station startup. The metro application will continue until explicitly
- terminated. Normally termination is controlled by the station via
- the stop command.
+ terminated.
</p>
<pre>$ metro -help</pre>
<source><![CDATA[
-Usage:
-metro -uri <uri> | -help
-options
- -uri <uri> Execute deployment of an application
codebase.
- -key -port -config -params
- -key (-k) <key> Station callback application key.
- -port <port> Override default RMI registry port
selection.
- -config (-c) <uri> Application configuration uri.
- -params (-p) <uri> Application parameters uri.
- -C<property>=<value> Set a context entry value.
- -help Print command help.
-]]></source>
+ Description:
+ Deploys a component referenced by a part uri.
- </subsection>
+ Usage: metro [-command] [-debug | -trace] [-D<name>=<value>] <uri> | -help
| -version
- <subsection name="Options">
+ Arguments:
+ <uri> uri referencing a part datatype
- <table>
- <tr><td>key</td><td>Select an application profile matching the
key.</td></tr>
- <tr><td>config</td><td>Supply an overrriding component
configuration via a uri reference to
- a configuration source document.</td></tr>
- <tr><td>params</td><td>Supply an overriding parameter defintion
for reference to a
- property file.</td></tr>
- <tr><td>C</td><td>Override a context entry with the supplied
value.</td></tr>
- <tr><td>port</td><td>Nominate an alternative station instance
running on the supplied port.</td></tr>
- </table>
+ Options:
+ -debug enables debug level logging
+ -trace enables trace level logging
+ -D<name>=<value> declaration of one or more system properties
+ -command enables command execution mode
+ -help list command help and exit
+ -version list version info and exit]]></source>
- </subsection>
+<pre>$ metro -version</pre>
+<source><![CDATA[
+ DPML Metro
+ Version 2.0.0
+ Copyright 2005-2007 Stephen J. McConnell
+ Digital Product Management Laboratory]]></source>
+ </subsection>
- <subsection name="Example">
+ <subsection name="Example">
-<pre><![CDATA[$ metro -uri link:part:dpml/planet/http/dpml-http-server
-[460 ] [INFO ] (demo): Starting
-[460 ] [INFO ] (org.mortbay.http.HttpServer): Version Jetty/5.1.x
-[460 ] [INFO ] (org.mortbay.util.Container): Started
net.dpml.http.impl.HttpServerImpl@15356d5
-[460 ] [INFO ] (org.mortbay.util.Credential): Checking Resource aliases
-[460 ] [INFO ] (org.mortbay.util.Container): Started HttpContext[/,/]
-[460 ] [INFO ] (org.mortbay.http.SocketListener): Started SocketListener
on 0.0.0.0:8080
+<pre><![CDATA[$ metro link:part:osm/http/osm-http-express
+
+[1840 ] [INFO ] (main.server): commissioning server
+[1840 ] [INFO ] (main.server.jetty): Logging to net.dpml.util.Logger via
net.osm.http.impl.LoggerAdapter
+[1840 ] [INFO ] (main.server): adding HTTP connector on port: 8080
+[1840 ] [INFO ] (main.server): adding SSL connector on port: 8443
+[1840 ] [INFO ] (main.server): starting
+[1840 ] [INFO ] (main.server.jetty): jetty-6.1.x
+[1840 ] [INFO ] (main.server.jetty): Started SelectChannelConnector @
0.0.0.0:8080
+[1840 ] [INFO ] (main.server.jetty): Started SslSocketConnector @
0.0.0.0:8443
]]></pre>
- </subsection>
+ </subsection>
-
</section>
</body>
Copied: trunk/central/site/src/docs/metro/component (from rev 1884,
trunk/central/site/src/docs/metro/directives/component)
Modified: trunk/central/site/src/docs/metro/component/index.xml
===================================================================
--- trunk/central/site/src/docs/metro/directives/component/index.xml
2007-03-07 03:45:30 UTC (rev 1884)
+++ trunk/central/site/src/docs/metro/component/index.xml 2007-03-12
03:10:15 UTC (rev 1893)
@@ -9,10 +9,14 @@
<body>
- <section name="Component Directive">
+ <section name="Component Strategy">
- <pre>dpml:metro</pre>
-
+ <subsection name="Namespace">
+
+ <pre>dpml:metro</pre>
+
+ </subsection>
+
<subsection name="Description">
<p>
@@ -20,31 +24,27 @@
</p>
</subsection>
-
+
<subsection name="Standard Attributes">
<table>
<tr>
- <td><tt>type</tt></td>
- <td>Set the component type classname (required unless a
super-directive
- is declared via the uri attribute). May not be used in
conjunction with
- the special <tt>uri</tt> attribute.</td>
+ <td><tt>class</tt></td>
+ <td>Declares the component classname.</td>
</tr>
<tr>
<td><tt>name</tt></td>
- <td>Optional overriding of the component name. If not supplied
- the component profile name will default to the name of the
underlying
- component type.</td>
+ <td>Sets the component name.</td>
</tr>
<tr>
<td><tt>activation</tt></td>
- <td>Set the auto-activation policy (optional). The default
value is SYSTEM.
+ <td>Set the activation policy (optional). The default value is
SYSTEM.
Possible values include STARTUP (triggers activation on
startup), DEMAND
(activation trigger on demand) and SYSTEM (activation decesions
are delagated
to the container).</td>
</tr>
<tr>
<td><tt>lifestyle</tt></td>
- <td>The component lifestyle. Allowable values include
+ <td>The lifestyle policy. Allowable values include
<tt>singleton</tt>, <tt>thread</tt>, and <tt>transient</tt>.
A component declaring the <tt>singleton</tt> lifestyle may be
shared across all consumers within the JVM (i.e. the potential
@@ -52,14 +52,11 @@
the <tt>thread</tt> lifestyle policy may have a set of
instances
corresponding to the number of threads requesting access. A
component declaring the <tt>transient</tt> lifestyle will
- instantiated for each access request. The default lifestyle
- policy is <tt>thread</tt> unless the component is associated
- with an underlying type defintion in which case the type
lifestyle
- value will apply.</td>
+ instantiated for each access request.</td>
</tr>
<tr>
<td><tt>collection</tt></td>
- <td>The component garbage collection policy. Allowable
+ <td>The garbage collection policy. Allowable
values include <tt>weak</tt>, <tt>soft</tt> and <tt>hard</tt>.
A component type declaring a <tt>weak</tt> collection policy
will
be garbage collected at the discretion of the JVM. A component
@@ -70,11 +67,11 @@
via a management system or controlling application.</td>
</tr>
</table>
-
+
</subsection>
-
+
<subsection name="Special Attributes">
-
+
<table>
<tr>
<td><tt>key</tt></td>
@@ -83,37 +80,17 @@
identifies the child component within the scope of the
enclosing entity.
</td>
</tr>
- <tr>
- <td><tt>uri</tt></td>
- <td>Optionally set the super-profile that the definition
extends. May not
- be used in conjunction with the <tt>type</tt> attribute.</td>
- </tr>
</table>
-
+
</subsection>
-
- <subsection name="Attributes Interited from Part Strategy">
-
- <table>
- <tr>
- <td><tt>alias</tt></td>
- <td>Used in conjunction with top-level components to declare that
- a link uri is produced referencing an absolute artifact uri to
- the component definition.
- </td>
- </tr>
- </table>
-
- </subsection>
-
-
+
<subsection name="Nested Elements">
<table>
<tr>
<td><tt><a href="categories.html">categories</a></tt></td>
<td>The categories element may contain 0..n logging
<category> directives.
- A category directive allows manipulation of logging channel
priorities and
+ A category directive allows assignment of initial channel
priorities and
targets.</td>
</tr>
<tr>
Modified: trunk/central/site/src/docs/metro/concepts/index.xml
===================================================================
--- trunk/central/site/src/docs/metro/concepts/index.xml 2007-03-09
23:32:58 UTC (rev 1892)
+++ trunk/central/site/src/docs/metro/concepts/index.xml 2007-03-12
03:10:15 UTC (rev 1893)
@@ -12,20 +12,33 @@
<section name="DPML Metro">
<p>
- Metro is an advanced component runtime solution.
- </p>
-
- <p>
- Metro is an <a href="ioc.html">IOC</a> Container
+ Metro is an easy to use <a href="ioc.html">IOC</a> Container
that handles the deployment of component-based applications. Beyond
this Metro
delivers pure framework independent component-driven <a
href="ioc.html">Adaptive
Context</a> support backed by an <a href="management.html">Active
State</a>,
- model-driven, part-based system architecture.
+ model-driven, part-based system architecture.
</p>
- <subsection name="Model Driven">
-
+ <subsection name="General Concepts">
+
<p>
+ From a strict architectural perspective the Metro system is a
deployment strategy
+ runtime controller managed by a Transit content handler associated
with the
+ 'part' datatype. The part content handlers deals with classloader
construction
+ and the establishment of a strategy handler. The strategy handler
is responsible
+ for the orderly deployment and decommissioning of components.
+ As part of an overral risk-reduction strategy concerning product
+ evolution Metro incorporates an internal strategy controller
+ management model that enables concurrent execution of different
+ container strategies within a single application. This approach
+ enables changes that would normally be classed as breaking
+ compatibility to be isolated in dynamically loaded plugin control
+ subsystems. The end-result is the potential for a composite
+ comoponent to operate seamlessly with components using radicaly
+ different controllers.
+ </p>
+
+ <p>
Metro is a "Model Driven" system in that a central model is
the definiative source for runtime information. Within Metro the
complete
deployment scenario including the component type internal
datastructure
@@ -37,37 +50,21 @@
information (including control over component configuration,
parameterization,
and individual context entry settings).
</p>
+
+
+ <p>
+ This is achived through the combinaton of:
+ </p>
+ <ol>
+ <li>Layered internal container APIs.</li>
+ <li>Dynamic loading of deployment strategy controllers.</li>
+ <li>Controller delegation rules.</li>
+ </ol>
+
</subsection>
- <subsection name="Part Based">
-
- <p>
- As part of an overral risk-reduction strategy concerning product
- evolution Metro incorporates an internal controller
- management model that enables concurrent execution of different
- container versions within a single application. This strategy
- enables changes that would normally be classed as breaking
- compatibility to be isolated in dynamicaly loaded plugin control
- subsystems. The end-result is the potential for a composite
- comoponent to operate seamlessly with components using radicaly
- different controllers.
- </p>
-
- <p>
- This is achived through the combinaton of:
- </p>
-
- <ol>
- <li>Layered internal container APIs.</li>
- <li>Component deployment data tagged with supporting system
version</li>
- <li>Dynamic loading of plugin controllers</li>
- <li>Controller delegation rules</li>
- </ol>
-
- </subsection>
-
- <subsection name="Related Links">
+ <!--<subsection name="Related Links">-->
<p><i>
A broader overview of the issues and challenges related to
component-based
development is presented in the paper
@@ -75,7 +72,7 @@
Development Process and Component Lifecycle</a> by Ivica Crnkovic,
Stig Larsson,
Michel Chaudron.
</i></p>
- </subsection>
+ <!--</subsection>-->
</section>
Deleted: trunk/central/site/src/docs/metro/concepts/model.xml
===================================================================
--- trunk/central/site/src/docs/metro/concepts/model.xml 2007-03-09
23:32:58 UTC (rev 1892)
+++ trunk/central/site/src/docs/metro/concepts/model.xml 2007-03-12
03:10:15 UTC (rev 1893)
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<document>
-
- <properties>
- <author email="mcconnell AT dpml.net">Stephen McConnell</author>
- <title>DPML Metro Model Driven Architecture</title>
- </properties>
-
- <body>
-
- <section name="Model Driven">
-
- <p>
- A "Model Driven" system is a system within which a central model is
- the definiative source for runtime information. Within Metro the
complete
- deployment scenario including the component type internal datastructure
- is represented as a remotely accessible model. Modification of the
model
- via local or remote invocations may have a direct impact on the
application
- deployment or runtime state. Metro provides a suite of interfaces
dealing
- with remote control of of the component state machine, activation
policy,
- garbage collection policies, context state, and redepoloyment scenario
- information (including control over component configuration,
parameterization,
- and individual context entry settings).
- </p>
-
- </section>
-
- </body>
-
-</document>
-
Modified: trunk/central/site/src/docs/metro/concepts/navigation.xml
===================================================================
--- trunk/central/site/src/docs/metro/concepts/navigation.xml 2007-03-09
23:32:58 UTC (rev 1892)
+++ trunk/central/site/src/docs/metro/concepts/navigation.xml 2007-03-12
03:10:15 UTC (rev 1893)
@@ -25,11 +25,10 @@
<body>
<menu>
- <item name="IOC" href="ioc.html"/>
- <item name="Context Aware" href="context.html"/>
+ <item name="Simplicity" href="usage.html"/>
+ <item name="Context Awareness" href="context.html"/>
+ <item name="Inversion of Control" href="ioc.html"/>
<item name="Active Management" href="management.html"/>
- <!--<item name="Model Driven" href="model.html"/>-->
- <!--<item name="Part Based" href="parts.html"/>-->
</menu>
</body>
Deleted: trunk/central/site/src/docs/metro/concepts/parts.xml
===================================================================
--- trunk/central/site/src/docs/metro/concepts/parts.xml 2007-03-09
23:32:58 UTC (rev 1892)
+++ trunk/central/site/src/docs/metro/concepts/parts.xml 2007-03-12
03:10:15 UTC (rev 1893)
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<document>
-
- <properties>
- <author email="mcconnell AT dpml.net">Stephen McConnell</author>
- <title>DPML Metro Part-Based System Strategy</title>
- </properties>
-
- <body>
-
- <section name="Part Based">
-
- <p>
- As part of an overral risk-reduction strategy concerning product
- evolution Metro incorporates an internal controller
- management model that enables concurrent execution of different
- container versions within a single application. This strategy
- enables changes that would normally be classed as breaking
- compatibility to be isolated in dynamicaly loaded plugin control
- subsystems. The end-result is the potential for a composite
- comoponent to operate seamlessly with components using radicaly
- different controllers.
- </p>
-
- <p>
- This is achived through the combinaton of:
- </p>
-
- <ol>
- <li>Layered internal container APIs.</li>
- <li>Component deployment data tagged with supporting system
version</li>
- <li>Dynamic loading of plugin controllers</li>
- <li>Controller delegation rules</li>
- </ol>
-
- </section>
-
- </body>
-
-</document>
-
Added: trunk/central/site/src/docs/metro/concepts/usage.xml
===================================================================
--- trunk/central/site/src/docs/metro/concepts/usage.xml 2007-03-09
23:32:58 UTC (rev 1892)
+++ trunk/central/site/src/docs/metro/concepts/usage.xml 2007-03-12
03:10:15 UTC (rev 1893)
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<document>
+
+ <properties>
+ <author email="mcconnell AT dpml.net">Stephen McConnell</author>
+ <title>DPML Metro : Simplicity</title>
+ </properties>
+
+ <body>
+
+ <section name="Simplicity">
+
+ <p>
+ Loading and deployment of a Metro component is handled by the
+ underlying URL machinery within the Java runtime environment.
+ The following code demonstrates the code required to load a
+ runtime service into an application using the Metro system.
+ </p>
+
+ <pre>URL url = URI.create( <font
color="darkred">"link:part:org/acme/widget"</font> ).toURL();
+Widget widget = (Widget) url.getContent( new Class[]{ Widget.class } );</pre>
+
+ <p>
+ In the above scenario the following general sequence is executed:
+ </p>
+
+ <ol>
+ <li>The Java runtime locates the <tt>link</tt> protocol handler.</li>
+ <li>The link protocol handler resolves the symbolic uri to a
+ concrete uri <tt>artifact:part:org/acme/widget#1.0.3</tt>.</li>
+ <li>The Java runtime locates the <tt>artifact</tt> protocol
handler.</li>
+ <li>The <tt>artifact</tt> protocol handler ensures that the resource
+ is added to the local Transit cache (this step may involve the
+ downloading of the part artifact from a host declared in the
+ Transit configuration profile - using the group identifier
+ <tt>org/acme</tt>, the resource name <tt>widget</tt>, the
+ version identifier <tt>1.0.3</tt>, with the <tt>part</tt> type
+ classifier).</li>
+ <li>The <tt>artifact</tt> protocol handler loads a content handler
+ for the <tt>part</tt> datatype and delegates control to the
+ content handler.</li>
+ <li>The part content handler reads the part definition, builds a
+ classloader chain based on the information in the part
description,
+ loads a strategy handler based on the declared strategy type,
and
+ delagates control to the strategy handler (classloader chain
+ creation may involve downloading of multiple supporting jar
files and
+ related configuration data from registered resource hosts).</li>
+ <li>The strategy handler builds a runtime model of the component,
resolves
+ service dependencies, and builds a deployment solutions.</li>
+ <li>The content request for the <tt>Widget</tt> class is delegated
+ to the strategy handler which in-turn delegates the request to
the
+ established component model.</li>
+ <li>The component model handles the establishment of a managed
service
+ provider taking into account component lifecycle and lifestyle
+ policies, resulting in the instantiation and return of a
<tt>Widget</tt>
+ instance.</li>
+ </ol>
+
+ </section>
+
+ </body>
+
+</document>
+
Modified: trunk/central/site/src/docs/metro/navigation.xml
===================================================================
--- trunk/central/site/src/docs/metro/navigation.xml 2007-03-09 23:32:58
UTC (rev 1892)
+++ trunk/central/site/src/docs/metro/navigation.xml 2007-03-12 03:10:15
UTC (rev 1893)
@@ -26,10 +26,11 @@
<menu>
<item name="Overview" href="concepts/index.html"/>
- <item name="Directives" href="directives/index.html"/>
+ <item name="Metro CLI" href="cli/index.html"/>
+ <item name="Part Definitions" href="parts/index.html"/>
+ <item name="Component Strategy" href="component/index.html"/>
+ <item name="Lifecycle Model" href="state/index.html"/>
<item name="Runtime" href="runtime/index.html"/>
- <item name="CLI" href="cli/index.html"/>
- <!--<item name="Ant Tasks" href="tasks/index.html"/>-->
<item name="Tutorials" href="tutorials/index.html"/>
</menu>
Copied: trunk/central/site/src/docs/metro/parts (from rev 1884,
trunk/central/site/src/docs/util/transit/parts)
Modified: trunk/central/site/src/docs/metro/parts/index.xml
===================================================================
--- trunk/central/site/src/docs/util/transit/parts/index.xml 2007-03-07
03:45:30 UTC (rev 1884)
+++ trunk/central/site/src/docs/metro/parts/index.xml 2007-03-12 03:10:15
UTC (rev 1893)
@@ -29,12 +29,27 @@
<section name="Part XML Directive">
- <pre>dpml:part</pre>
+ <p>
+ A <tt>part</tt> content datatype is an XML document that defines an
information
+ block, an object deployment strategy, and a classloader chain. The
information
+ block declares a title and a description. The deployment strategy is
defined as
+ any element extending the <tt>StrategyType</tt> schema definition (the
most typical
+ being the <a href="../directives/component/index.html"> Metro
component strategy</a>).
+ The third element in a part definition is a deployment classpath which
is composed
+ of a public, protected, and private classloader definitions that are
used to
+ establish a classloader chain relative to the current context
classloader.
+ </p>
+
+ <subsection name="Namespace">
+
+ <pre>dpml:part</pre>
+ </subsection>
+
<subsection name="Description">
<p>
- A part defines a plugin or general deployment unit.
+ A part defines a general deployment unit.
</p>
<p>
@@ -53,7 +68,7 @@
<tt><a href="info/index.html">info</a></tt>
</td>
<td>
- The info defintion used to associate a title and
+ The info definition is used to associate a title and
human readable description.
</td>
</tr>
@@ -62,12 +77,18 @@
<tt><a href="strategy/index.html">strategy</a></tt>
</td>
<td>
- Any XML element derived from StrategyType. The schema element
- defines the deployment strategy. A part handler is resolved
- through a element builder which is itself resolved relative to
- the XML schema urn of the strategy element. The Transit system
- provides two standard strategy elements -
<tt><plugin></tt>
- and <tt><resource></tt>.
+ Any XML element derived from the <tt>StrategyType</tt>. The
schema
+ element defines the deployment strategy. A part strategy
handler is resolved
+ by the part content handler. If the qualfied element name is
recognized
+ an internal handler is assigned, otherwise value of the
<tt>handler</tt>
+ attribute is used to resolve a uri identifying a strategy
plugin.
+ The Metro system provides three recognized strategy element
handlers -
+ <tt><plugin></tt> and <tt><resource></tt> and
+ <tt><component></tt>. The <tt><plugin></tt>
strategy is a
+ simple object deployment handler suitable for low-level
facilities, the
+ <tt><resource></tt> handler provides support for Antlib
loading, and
+ the <tt><component></tt> strategy is the standard
component deployment
+ framework.
</td>
</tr>
<tr>
@@ -77,7 +98,7 @@
<td>
Definition of the classpath for the part. The classpath
contains
the declaration of public, protected and private jar files
referenced
- via uris that collectively enable the cionstruction of a
cloassloader
+ via uris that collectively enable the construction of a
cloassloader
chain.
</td>
</tr>
@@ -91,46 +112,22 @@
<p>Example part definition:</p>
-<source>
-<![CDATA[
-<?xml version="1.0"?>
+<source><?xml version="1.0"?>
-<part xmlns="dpml:part">
+<part xmlns="dpml:part">
- <info title="DPML Metro Runtime">
- <description>
- Runtime container for the Metro platform.
- </description>
- </info>
+ <info/>
- <plugin class="net.dpml.metro.runtime.CompositionController"/>
+ <component xmlns="dpml:metro"
+ class="org.acme.Widget"/>
- <classpath>
- <public>
- <uri>artifact:jar:dpml/util/dpml-logging-api#SNAPSHOT</uri>
- </public>
- <protected>
- <uri>artifact:jar:dpml/metro/dpml-state-api#SNAPSHOT</uri>
- <uri>artifact:jar:dpml/util/dpml-job-api#SNAPSHOT</uri>
- <uri>artifact:jar:dpml/transit/dpml-transit-main#SNAPSHOT</uri>
- <uri>artifact:jar:dpml/metro/dpml-metro-component#SNAPSHOT</uri>
- <uri>artifact:jar:dpml/util/dpml-parameters-api#SNAPSHOT</uri>
- <uri>artifact:jar:dpml/util/dpml-configuration-api#SNAPSHOT</uri>
- <uri>artifact:jar:dpml/metro/dpml-metro-model#SNAPSHOT</uri>
- </protected>
- <private>
- <uri>artifact:jar:dpml/util/dpml-parameters-impl#SNAPSHOT</uri>
- <uri>artifact:jar:dpml/util/dpml-configuration-impl#SNAPSHOT</uri>
- <uri>artifact:jar:dpml/util/dpml-job-impl#SNAPSHOT</uri>
- <uri>artifact:jar:dpml/metro/dpml-state-impl#SNAPSHOT</uri>
- <uri>artifact:jar:dpml/depot/dpml-library#SNAPSHOT</uri>
- <uri>artifact:jar:dpml/metro/dpml-metro-runtime#SNAPSHOT</uri>
- <uri>artifact:jar:dpml/metro/dpml-metro-runtime#SNAPSHOT</uri>
- </private>
- </classpath>
+ <classpath>
+ <private>
+ <uri>artifact:jar:acme/widget/acme-widget#1.2.3</uri>
+ </private>
+ </classpath>
-</part>]]>
-</source>
+</part></source>
</section>
Modified: trunk/central/site/src/docs/metro/parts/info/index.xml
===================================================================
--- trunk/central/site/src/docs/util/transit/parts/info/index.xml
2007-03-07 03:45:30 UTC (rev 1884)
+++ trunk/central/site/src/docs/metro/parts/info/index.xml 2007-03-12
03:10:15 UTC (rev 1893)
@@ -42,17 +42,28 @@
<section name="Example">
- <p>Example of an ninfo element declaration:</p>
-
-<source>
-<![CDATA[<info title="ACME Widget">
- <description>
- The ACME Widget is a generalized factory for
- the production of Gizmos.
- </description>
-</info>]]>
-</source>
-
+ <p>Example of an <tt>info</tt> declaration:</p>
+
+<source><?xml version="1.0"?>
+
+<part xmlns="dpml:part">
+
+ <font color="darkred"><info title="ACME Widget">
+ <description>
+ The ACME Widget is a generalized factory for
+ the production of Gizmos.
+ </description>
+ </info></font>
+
+ <component xmlns="dpml:metro" class="org.acme.Widget"/>
+
+ <classpath>
+ <private>
+ <uri>artifact:jar:acme/widget/acme-widget#1.2.3</uri>
+ </private>
+ </classpath>
+
+</part></source>
</section>
</body>
Modified: trunk/central/site/src/docs/metro/parts/strategy/index.xml
===================================================================
--- trunk/central/site/src/docs/util/transit/parts/strategy/index.xml
2007-03-07 03:45:30 UTC (rev 1884)
+++ trunk/central/site/src/docs/metro/parts/strategy/index.xml 2007-03-12
03:10:15 UTC (rev 1893)
@@ -32,21 +32,32 @@
<subsection name="Description">
<p>
- Transit provides two strategy definitions - <a
href="plugin.html"><tt>plugin</tt></a>
- and <a href="resource.html"><tt>resource</tt></a>.
+ The <tt>StrategyType</tt> definition is an abstract element
definition
+ that all concrete strategy defintions must extend.
</p>
-
+
+ <pre><![CDATA[ <!-- XSD schema definition -->
+ <complexType name="StrategyType" abstract="true"/>]]></pre>
+
<p>
- The plugin definition is the common form and used to establish
plugable services
- within a software system. The resource definition is a special case
used to handle
- the declaration of a antlib resource path and namespace - used in
conjunction with
- plugable tasks and datatypes.
+ The Metro runtime model defines a concrete <a
href="../../component/index.html">
+ component strategy</a> under the namespace <tt>dpml:metro></tt> that
is used to
+ define the resources, services, and internal composition of an
object. A second
+ concrete strategy defintion named <tt>resource</tt> (uder the
<tt>dpml:depot</tt>
+ namespace) is used by the Depot build system to define antlib
loading criteria.
+ If a foreign strategy element is declared the associated scheme is
resolved
+ but locating a class implementing the
<tt>org.w3c.dom.ls.LSResourceResolver</tt>
+ service (via java.util.ServiceLoader). The runtime strategy handler
will be
+ resolved by reading a uri value from an attribute named
<tt>handler</tt>. The
+ uri is used to identify a plug-in part supporting the runtime
handling of the
+ foreign strategy.
</p>
</subsection>
</section>
+ <!--
<section name="Examples">
<p>
@@ -83,7 +94,8 @@
</source>
</section>
-
+ -->
+
</body>
</document>
Modified: trunk/central/site/src/docs/metro/parts/strategy/navigation.xml
===================================================================
--- trunk/central/site/src/docs/util/transit/parts/strategy/navigation.xml
2007-03-07 03:45:30 UTC (rev 1884)
+++ trunk/central/site/src/docs/metro/parts/strategy/navigation.xml
2007-03-12 03:10:15 UTC (rev 1893)
@@ -25,8 +25,10 @@
<body>
<menu>
+ <!--
<item name="Plugin" href="plugin.html"/>
<item name="Resource" href="resource.html"/>
+ -->
</menu>
</body>
Copied: trunk/central/site/src/docs/metro/state (from rev 1884,
trunk/central/site/src/docs/metro/directives/type/state)
Added: trunk/central/site/src/docs/util/transit/handlers.xml
===================================================================
--- trunk/central/site/src/docs/util/transit/handlers.xml 2007-03-09
23:32:58 UTC (rev 1892)
+++ trunk/central/site/src/docs/util/transit/handlers.xml 2007-03-12
03:10:15 UTC (rev 1893)
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!--
+ Copyright 2007 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.
+-->
+
+<document>
+
+ <properties>
+ <author email="mcconnell AT dpml.net">Stephen McConnell</author>
+ <title>DPML Transit Content Handler Framework</title>
+ </properties>
+
+ <body>
+
+ <section name="Content Handlers">
+
+ <p>
+ The Transit framework provides dynamic support for artifact
+ content type handlers. The content type refers to the <tt>type</tt>
+ field of an artifact uri. For example - the following uri declares
+ an artifact with a type equal to "<tt>appliance</tt>".
+ </p>
+
+ <source>artifact:appliance:osm/http/osm-http-express#1.0.0</source>
+
+ <p>
+ When a client application resolves the content from an artifact
+ URL, the Transit system attempts to locate a content handler supporting
+ the content type of the artifact. Content handlers are located by
+ resolving all services implementing the
<tt>net.dpml.transit.ContentHandler</tt>
+ interface, using <tt>java.util.ServiceLoader</tt>. Examples of
content
+ handlers included within the DPML suite include the following:
+ </p>
+
+ <table>
+ <tr>
+ <td>part</td>
+ <td>An XML datastructure used to describe a classloader chain and
+ object deployment strategy. The part datatype is used extensively
+ by the DPML Metro component management platform.</td>
+ </tr>
+ <tr>
+ <td>appliance</td>
+ <td>An XML datastructure used to describe an application deployment
+ scenario - containing infomation for the configuration of a Java
+ vertual machine. The appliance datatype is used extensively by
the
+ DPML Station application server.</td>
+ </tr>
+ </table>
+
+ </section>
+ </body>
+</document>
+
Modified: trunk/central/site/src/docs/util/transit/navigation.xml
===================================================================
--- trunk/central/site/src/docs/util/transit/navigation.xml 2007-03-09
23:32:58 UTC (rev 1892)
+++ trunk/central/site/src/docs/util/transit/navigation.xml 2007-03-12
03:10:15 UTC (rev 1893)
@@ -25,11 +25,10 @@
<body>
<menu>
- <!--<item name="Overview" href="concepts/index.html"/>-->
+ <item name="Protocols" href="technical/index.html"/>
<item name="System Properties" href="properties.html"/>
<item name="Cache Configuration" href="config/index.html"/>
- <item name="Part Directive" href="parts/index.html"/>
- <item name="Protocols" href="technical/index.html"/>
+ <item name="Content Handlers" href="handlers.html"/>
<item name="Tutorials" href="tutorials/index.html"/>
</menu>
Modified: trunk/central/site/src/docs/util/transit/tutorials/index.xml
===================================================================
--- trunk/central/site/src/docs/util/transit/tutorials/index.xml
2007-03-09 23:32:58 UTC (rev 1892)
+++ trunk/central/site/src/docs/util/transit/tutorials/index.xml
2007-03-12 03:10:15 UTC (rev 1893)
@@ -16,8 +16,8 @@
meta information, classpath descriptions, etc. These resources can
form
a central part of well-functioning application and are frequently
handled
as identifiable and versioned artifacts.
- This tutorial will take you through the usage of a product named
Transit that
- handles retrieval of versioned resources using the standard Java URL
protocol
+ This tutorial will take you through the usage of Transit in the
+ retrieval of versioned resources using the standard Java URL protocol
handler.
</p>
Modified: trunk/central/site/src/docs/util/transit/tutorials/navigation.xml
===================================================================
--- trunk/central/site/src/docs/util/transit/tutorials/navigation.xml
2007-03-09 23:32:58 UTC (rev 1892)
+++ trunk/central/site/src/docs/util/transit/tutorials/navigation.xml
2007-03-12 03:10:15 UTC (rev 1893)
@@ -29,7 +29,7 @@
<item name="Resource Management" href="overview.html"/>
<item name="Artifact Protocol" href="artifacts.html"/>
<item name="Local Protocol" href="local.html"/>
- <item name="Plugin Services" href="plugins.html"/>
+ <!--<item name="Plugin Services" href="plugins.html"/>-->
<item name="Repositories" href="repositories.html"/>
</menu>
Modified: trunk/main/depot/build/etc/component.xml
===================================================================
--- trunk/main/depot/build/etc/component.xml 2007-03-09 23:32:58 UTC (rev
1892)
+++ trunk/main/depot/build/etc/component.xml 2007-03-12 03:10:15 UTC (rev
1893)
@@ -1,2 +1,2 @@
<?xml version="1.0"?>
-<component xmlns="dpml:metro" name="build" type="dpml.build.Main"/>
+<component xmlns="dpml:metro" name="build" class="dpml.build.Main"/>
Modified: trunk/main/metro/appliance/etc/data/appliance.xml
===================================================================
--- trunk/main/metro/appliance/etc/data/appliance.xml 2007-03-09 23:32:58
UTC (rev 1892)
+++ trunk/main/metro/appliance/etc/data/appliance.xml 2007-03-12 03:10:15
UTC (rev 1893)
@@ -13,6 +13,6 @@
</properties>
</process>
- <codebase
uri="link:part:dpml/metro/dpml-metro-sample?message=Hello%20World,port=1024"/>
+ <codebase
uri="link:part:dpml/metro/dpml-metro-sample?message=Hello%20World&port=1024"/>
</appliance>
Modified: trunk/main/metro/appliance/etc/data/foo.xml
===================================================================
--- trunk/main/metro/appliance/etc/data/foo.xml 2007-03-09 23:32:58 UTC (rev
1892)
+++ trunk/main/metro/appliance/etc/data/foo.xml 2007-03-12 03:10:15 UTC (rev
1893)
@@ -13,6 +13,6 @@
</properties>
</process>
- <codebase uri="link:part:dpml/metro/dpml-metro-sample?message=Foo,port=7"/>
+ <codebase
uri="link:part:dpml/metro/dpml-metro-sample?message=Foo&port=7"/>
</appliance>
Modified: trunk/main/metro/appliance/etc/data/plan.xml
===================================================================
--- trunk/main/metro/appliance/etc/data/plan.xml 2007-03-09 23:32:58
UTC (rev 1892)
+++ trunk/main/metro/appliance/etc/data/plan.xml 2007-03-12 03:10:15
UTC (rev 1893)
@@ -4,6 +4,6 @@
<entry key="foo" uri="link:appliance:dpml/metro/demo-foo"/>
<entry key="bar" uri="link:appliance:dpml/metro/demo-bar"/>
- <entry key="toto"
uri="link:part:dpml/metro/dpml-metro-sample?message=Hello%20World,port=1024"/>
+ <entry key="toto"
uri="link:part:dpml/metro/dpml-metro-sample?message=Hello%20World&port=1024"/>
</plan>
Modified:
trunk/main/metro/appliance/src/test/net/dpml/appliance/ApplianceDescriptorTestCase.java
===================================================================
---
trunk/main/metro/appliance/src/test/net/dpml/appliance/ApplianceDescriptorTestCase.java
2007-03-09 23:32:58 UTC (rev 1892)
+++
trunk/main/metro/appliance/src/test/net/dpml/appliance/ApplianceDescriptorTestCase.java
2007-03-12 03:10:15 UTC (rev 1893)
@@ -44,7 +44,7 @@
assertEquals( "path", null, path );
assertEquals( "system", "bar", properties.getProperty( "foo" ) );
assertEquals( "environment", "BAR", environment.get( "FOO" ) );
- URI uri = new URI(
"link:part:dpml/metro/dpml-metro-sample?message=Hello%20World,port=1024" );
+ URI uri = new URI(
"link:part:dpml/metro/dpml-metro-sample?message=Hello%20World&port=1024" );
URI target = application.getTargetURI();
assertEquals( "uri", uri, target );
}
Modified: trunk/main/metro/connector/etc/component.xml
===================================================================
--- trunk/main/metro/connector/etc/component.xml 2007-03-09 23:32:58
UTC (rev 1892)
+++ trunk/main/metro/connector/etc/component.xml 2007-03-12 03:10:15
UTC (rev 1893)
@@ -1,2 +1,2 @@
<?xml version="1.0"?>
-<component xmlns="dpml:metro" name="station"
type="dpml.station.DefaultStation"/>
+<component xmlns="dpml:metro" name="station"
class="dpml.station.DefaultStation"/>
Modified: trunk/main/metro/connector/etc/local.xml
===================================================================
--- trunk/main/metro/connector/etc/local.xml 2007-03-09 23:32:58 UTC (rev
1892)
+++ trunk/main/metro/connector/etc/local.xml 2007-03-12 03:10:15 UTC (rev
1893)
@@ -1,2 +1,2 @@
<?xml version="1.0"?>
-<component xmlns="dpml:metro" name="local" type="dpml.station.LocalStation"/>
+<component xmlns="dpml:metro" name="local"
class="dpml.station.LocalStation"/>
Modified: trunk/main/metro/main/etc/component.xml
===================================================================
--- trunk/main/metro/main/etc/component.xml 2007-03-09 23:32:58 UTC (rev
1892)
+++ trunk/main/metro/main/etc/component.xml 2007-03-12 03:10:15 UTC (rev
1893)
@@ -1,2 +1,2 @@
<?xml version="1.0"?>
-<component xmlns="dpml:metro" name="dpml.metro"
type="dpml.metro.console.Main"/>
+<component xmlns="dpml:metro" name="dpml.metro"
class="dpml.metro.console.Main"/>
Deleted: trunk/main/metro/part/etc/bin/msvcr71.dll
===================================================================
(Binary files differ)
Modified: trunk/main/metro/part/etc/data/array.xml
===================================================================
--- trunk/main/metro/part/etc/data/array.xml 2007-03-09 23:32:58 UTC (rev
1892)
+++ trunk/main/metro/part/etc/data/array.xml 2007-03-12 03:10:15 UTC (rev
1893)
@@ -3,7 +3,7 @@
<component xmlns="dpml:metro"
name="widget"
- type="org.acme.ArrayWidget">
+ class="org.acme.ArrayWidget">
<context>
<entry key="message">
<param value="h"/>
Modified: trunk/main/metro/part/etc/data/component.xml
===================================================================
--- trunk/main/metro/part/etc/data/component.xml 2007-03-09 23:32:58
UTC (rev 1892)
+++ trunk/main/metro/part/etc/data/component.xml 2007-03-12 03:10:15
UTC (rev 1893)
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<part xmlns="dpml:part" xmlns:metro="dpml:metro">
- <metro:component type="org.acme.DefaultWidget"/>
+ <metro:component class="org.acme.DefaultWidget"/>
</part>
Modified: trunk/main/metro/part/etc/data/composite.xml
===================================================================
--- trunk/main/metro/part/etc/data/composite.xml 2007-03-09 23:32:58
UTC (rev 1892)
+++ trunk/main/metro/part/etc/data/composite.xml 2007-03-12 03:10:15
UTC (rev 1893)
@@ -3,7 +3,7 @@
<component xmlns="dpml:metro"
name="container"
- type="org.acme.CompositeComponent">
+ class="org.acme.CompositeComponent">
<parts>
<component key="widget"
type="org.acme.ContextualWidget">
Modified: trunk/main/metro/part/etc/data/contextual.xml
===================================================================
--- trunk/main/metro/part/etc/data/contextual.xml 2007-03-09 23:32:58
UTC (rev 1892)
+++ trunk/main/metro/part/etc/data/contextual.xml 2007-03-12 03:10:15
UTC (rev 1893)
@@ -3,7 +3,7 @@
<component xmlns="dpml:metro"
name="widget"
- type="org.acme.ContextualWidget">
+ class="org.acme.ContextualWidget">
<context>
<entry key="message" value="Batman"/>
<context key="colors">
Modified: trunk/main/metro/part/etc/data/controller.xml
===================================================================
--- trunk/main/metro/part/etc/data/controller.xml 2007-03-09 23:32:58
UTC (rev 1892)
+++ trunk/main/metro/part/etc/data/controller.xml 2007-03-12 03:10:15
UTC (rev 1893)
@@ -3,10 +3,10 @@
<component xmlns="dpml:metro"
name="container"
- type="org.acme.ControllerComponent">
+ class="org.acme.ControllerComponent">
<parts>
<component key="widget"
- type="org.acme.ContextualWidget">
+ class="org.acme.ContextualWidget">
<context>
<entry key="message" value="Batman"/>
<context key="colors">
@@ -20,7 +20,7 @@
</entry>
</context>
</component>
- <component key="gizmo" type="org.acme.DefaultGizmo"/>
+ <component key="gizmo" class="org.acme.DefaultGizmo"/>
</parts>
</component>
Modified: trunk/main/metro/part/etc/data/foreign.xml
===================================================================
--- trunk/main/metro/part/etc/data/foreign.xml 2007-03-09 23:32:58 UTC (rev
1892)
+++ trunk/main/metro/part/etc/data/foreign.xml 2007-03-12 03:10:15 UTC (rev
1893)
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<part xmlns="dpml:part">
- <component xmlns="dpml:metro" name="widget" type="org.acme.ForeignWidget"/>
+ <component xmlns="dpml:metro" name="widget"
class="org.acme.ForeignWidget"/>
</part>
Modified: trunk/main/metro/part/etc/data/generics.xml
===================================================================
--- trunk/main/metro/part/etc/data/generics.xml 2007-03-09 23:32:58 UTC (rev
1892)
+++ trunk/main/metro/part/etc/data/generics.xml 2007-03-12 03:10:15 UTC (rev
1893)
@@ -3,10 +3,10 @@
<component xmlns="dpml:metro"
name="container"
- type="org.acme.GenericComponent">
+ class="org.acme.GenericComponent">
<parts>
<component key="widget"
- type="org.acme.ContextualWidget">
+ class="org.acme.ContextualWidget">
<context>
<entry key="message" value="Batman"/>
<context key="colors">
@@ -20,7 +20,7 @@
</entry>
</context>
</component>
- <component key="gizmo" type="org.acme.DefaultGizmo"/>
+ <component key="gizmo" class="org.acme.DefaultGizmo"/>
</parts>
</component>
Modified: trunk/main/metro/part/etc/data/lookup.xml
===================================================================
--- trunk/main/metro/part/etc/data/lookup.xml 2007-03-09 23:32:58 UTC (rev
1892)
+++ trunk/main/metro/part/etc/data/lookup.xml 2007-03-12 03:10:15 UTC (rev
1893)
@@ -3,15 +3,15 @@
<component xmlns="dpml:metro"
name="registry"
- type="org.acme.CompositeComponent">
+ class="org.acme.CompositeComponent">
<parts>
<component key="widget"
- type="org.acme.WidgetUsingGizmo">
+ class="org.acme.WidgetUsingGizmo">
<context>
<entry key="gizmo" lookup="org.acme.Gizmo"/>
</context>
</component>
- <component key="gizmo" type="org.acme.DefaultGizmo"/>
+ <component key="gizmo" class="org.acme.DefaultGizmo"/>
</parts>
</component>
Modified: trunk/main/metro/part/etc/data/select.xml
===================================================================
--- trunk/main/metro/part/etc/data/select.xml 2007-03-09 23:32:58 UTC (rev
1892)
+++ trunk/main/metro/part/etc/data/select.xml 2007-03-12 03:10:15 UTC (rev
1893)
@@ -3,9 +3,9 @@
<component xmlns="dpml:metro"
name="select"
- type="org.acme.SelectComponent">
+ class="org.acme.SelectComponent">
<parts>
- <component key="contextual" type="org.acme.ContextualWidget">
+ <component key="contextual" class="org.acme.ContextualWidget">
<context>
<entry key="message" value="Batman"/>
<context key="colors">
@@ -19,7 +19,7 @@
</entry>
</context>
</component>
- <component key="array" type="org.acme.ArrayWidget">
+ <component key="array" class="org.acme.ArrayWidget">
<context>
<entry key="message">
<param value="h"/>
@@ -30,7 +30,7 @@
</entry>
</context>
</component>
- <component key="gizmo" type="org.acme.DefaultGizmo"/>
+ <component key="gizmo" class="org.acme.DefaultGizmo"/>
</parts>
</component>
Modified: trunk/main/metro/part/etc/data/singleton.xml
===================================================================
--- trunk/main/metro/part/etc/data/singleton.xml 2007-03-09 23:32:58
UTC (rev 1892)
+++ trunk/main/metro/part/etc/data/singleton.xml 2007-03-12 03:10:15
UTC (rev 1893)
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<part xmlns="dpml:part" xmlns:metro="dpml:metro">
- <metro:component name="widget" type="org.acme.SingletonWidget"/>
+ <metro:component name="widget" class="org.acme.SingletonWidget"/>
</part>
Modified: trunk/main/metro/part/etc/data/state.xml
===================================================================
--- trunk/main/metro/part/etc/data/state.xml 2007-03-09 23:32:58 UTC (rev
1892)
+++ trunk/main/metro/part/etc/data/state.xml 2007-03-12 03:10:15 UTC (rev
1893)
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<part xmlns="dpml:part">
- <component xmlns="dpml:metro" name="widget" type="org.acme.StateWidget"/>
+ <component xmlns="dpml:metro" name="widget" class="org.acme.StateWidget"/>
</part>
Modified: trunk/main/metro/part/etc/data/transient.xml
===================================================================
--- trunk/main/metro/part/etc/data/transient.xml 2007-03-09 23:32:58
UTC (rev 1892)
+++ trunk/main/metro/part/etc/data/transient.xml 2007-03-12 03:10:15
UTC (rev 1893)
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<part xmlns="dpml:part" xmlns:metro="dpml:metro">
- <metro:component name="widget" type="org.acme.TransientWidget"/>
+ <metro:component name="widget" class="org.acme.TransientWidget"/>
</part>
Modified: trunk/main/metro/part/etc/xsds/component.xsd
===================================================================
--- trunk/main/metro/part/etc/xsds/component.xsd 2007-03-09 23:32:58
UTC (rev 1892)
+++ trunk/main/metro/part/etc/xsds/component.xsd 2007-03-12 03:10:15
UTC (rev 1893)
@@ -27,7 +27,8 @@
</sequence>
<attribute name="key" type="string"/>
<attribute name="name" type="string"/>
- <attribute name="type" type="string"/>
+ <attribute name="class" type="string"/>
+ <attribute name="type" type="string"/> <!-- depricated - use class
attribute -->
<attribute name="lifestyle" type="this:lifestyle"/>
<attribute name="collection" type="this:collection"/>
<attribute name="activation" type="this:activation"/>
@@ -108,8 +109,6 @@
</restriction>
</simpleType>
- <!-- TYPE -->
-
<simpleType name="lifestyle">
<restriction base="string">
<enumeration value="singleton"/>
Modified: trunk/main/metro/part/etc/xsds/part.xsd
===================================================================
--- trunk/main/metro/part/etc/xsds/part.xsd 2007-03-09 23:32:58 UTC (rev
1892)
+++ trunk/main/metro/part/etc/xsds/part.xsd 2007-03-12 03:10:15 UTC (rev
1893)
@@ -8,30 +8,19 @@
<element name="part" type="this:PartType"/>
<element name="strategy" type="this:StrategyType"/>
- <element name="plugin" type="this:plugin"
substitutionGroup="this:strategy"/>
+ <element name="classpath" type="this:ClassPathType"/>
<element name="param" type="this:ValueType"/>
<complexType name="PartType">
<sequence>
<element name="info" type="this:InfoType" minOccurs="0"
maxOccurs="1"/>
<element ref="this:strategy" minOccurs="1" maxOccurs="1"/>
- <element name="classpath" type="this:ClassPathType" minOccurs="0"
maxOccurs="1"/>
+ <element ref="this:classpath" minOccurs="0" maxOccurs="1"/>
</sequence>
</complexType>
<complexType name="StrategyType" abstract="true"/>
- <complexType name="plugin">
- <complexContent>
- <extension base="this:StrategyType">
- <sequence>
- <element ref="this:param" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- <attribute name="class" type="string" use="required"/>
- </extension>
- </complexContent>
- </complexType>
-
<complexType name="ClassPathType">
<sequence>
<element name="system" type="this:ClassLoaderType" minOccurs="0"
maxOccurs="1"/>
Modified:
trunk/main/metro/part/src/main/net/dpml/runtime/ComponentStrategyHandler.java
===================================================================
---
trunk/main/metro/part/src/main/net/dpml/runtime/ComponentStrategyHandler.java
2007-03-09 23:32:58 UTC (rev 1892)
+++
trunk/main/metro/part/src/main/net/dpml/runtime/ComponentStrategyHandler.java
2007-03-12 03:10:15 UTC (rev 1893)
@@ -94,14 +94,6 @@
Element contextElement = ElementHelper.getChild( element, "context"
);
ContextModel context = getContextModel( classloader, c, path,
profile, contextElement, resolver, q );
- //ContextDirective context =
- // new ContextDirective(
- // profile.getContextDirective(),
- // classloader,
- // contextElement,
- // resolver,
- // query );
-
try
{
Element partsElement = ElementHelper.getChild( element, "parts"
);
@@ -113,7 +105,15 @@
resolver,
path );
- ComponentStrategy strategy = new ComponentStrategy( partition,
name, priority, c, context, parts );
+ ComponentStrategy strategy =
+ new ComponentStrategy(
+ partition,
+ name,
+ priority,
+ c,
+ context,
+ parts );
+
return strategy;
}
catch( IOException ioe )
Modified: trunk/main/metro/sample/etc/component.xml
===================================================================
--- trunk/main/metro/sample/etc/component.xml 2007-03-09 23:32:58 UTC (rev
1892)
+++ trunk/main/metro/sample/etc/component.xml 2007-03-12 03:10:15 UTC (rev
1893)
@@ -1,2 +1,2 @@
<?xml version="1.0"?>
-<component xmlns="dpml:metro" name="hello" type="org.acme.HelloComponent"/>
+<component xmlns="dpml:metro" name="hello" class="org.acme.HelloComponent"/>
Modified: trunk/main/metro/test/etc/data/application.xml
===================================================================
--- trunk/main/metro/test/etc/data/application.xml 2007-03-09 23:32:58
UTC (rev 1892)
+++ trunk/main/metro/test/etc/data/application.xml 2007-03-12 03:10:15
UTC (rev 1893)
@@ -13,6 +13,6 @@
</properties>
</process>
- <codebase
uri="link:part:dpml/metro/dpml-metro-sample?message=Hello%20World,port=1024"/>
+ <codebase
uri="link:part:dpml/metro/dpml-metro-sample?message=Hello%20World&port=1024"/>
</application>
Modified: trunk/tutorials/components/context/etc/component.xml
===================================================================
--- trunk/tutorials/components/context/etc/component.xml 2007-03-09
23:32:58 UTC (rev 1892)
+++ trunk/tutorials/components/context/etc/component.xml 2007-03-12
03:10:15 UTC (rev 1893)
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<component xmlns="dpml:metro"
- type="org.acme.Demo" name="demo">
+ class="org.acme.Demo" name="demo">
<context>
<entry key="owner" value="${user.name}"/>
<entry key="activity" value="Painting"/>
Modified: trunk/tutorials/components/customize/clock/etc/component.xml
===================================================================
--- trunk/tutorials/components/customize/clock/etc/component.xml
2007-03-09 23:32:58 UTC (rev 1892)
+++ trunk/tutorials/components/customize/clock/etc/component.xml
2007-03-12 03:10:15 UTC (rev 1893)
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<component xmlns="dpml:metro" alias="true"
- type="org.acme.clock.SimpleClock" name="clock">
+ class="org.acme.clock.SimpleClock" name="clock">
<context>
<entry key="format" value="K:mm a, z"/>
</context>
Modified: trunk/tutorials/components/examples/etc/component.xml
===================================================================
--- trunk/tutorials/components/examples/etc/component.xml 2007-03-09
23:32:58 UTC (rev 1892)
+++ trunk/tutorials/components/examples/etc/component.xml 2007-03-12
03:10:15 UTC (rev 1893)
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<component xmlns="dpml:metro"
- type="org.acme.Demo"
+ class="org.acme.Demo"
name="demo">
<context>
<entry key="color" method="RED"/>
Modified: trunk/tutorials/components/hello/etc/component.xml
===================================================================
--- trunk/tutorials/components/hello/etc/component.xml 2007-03-09 23:32:58
UTC (rev 1892)
+++ trunk/tutorials/components/hello/etc/component.xml 2007-03-12 03:10:15
UTC (rev 1893)
@@ -1,2 +1,2 @@
<?xml version="1.0"?>
-<component xmlns="dpml:metro" name="demo" type="org.acme.Demo"/>
+<component xmlns="dpml:metro" name="demo" class="org.acme.Demo"/>
Modified: trunk/tutorials/components/lifestyle/etc/component.xml
===================================================================
--- trunk/tutorials/components/lifestyle/etc/component.xml 2007-03-09
23:32:58 UTC (rev 1892)
+++ trunk/tutorials/components/lifestyle/etc/component.xml 2007-03-12
03:10:15 UTC (rev 1893)
@@ -1,14 +1,14 @@
<?xml version="1.0"?>
<component xmlns="dpml:metro"
- type="org.acme.Demo"
+ class="org.acme.Demo"
name="demo">
<parts>
- <component key="widget" type="org.acme.Widget" name="widget"
lifestyle="transient">
+ <component key="widget" class="org.acme.Widget" name="widget"
lifestyle="transient">
<context>
<entry key="color" method="BLUE"/>
</context>
</component>
- <component key="gizmo" type="org.acme.Gizmo" name="gizmo">
+ <component key="gizmo" class="org.acme.Gizmo" name="gizmo">
<context>
<entry key="widget" lookup="org.acme.Widget"/>
</context>
Modified: trunk/tutorials/components/logging/etc/component.xml
===================================================================
--- trunk/tutorials/components/logging/etc/component.xml 2007-03-09
23:32:58 UTC (rev 1892)
+++ trunk/tutorials/components/logging/etc/component.xml 2007-03-12
03:10:15 UTC (rev 1893)
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
<component xmlns="dpml:metro"
- type="org.acme.Demo"
+ class="org.acme.Demo"
name="demo"
lifestyle="transient"/>
Modified: trunk/tutorials/components/lookup/etc/component.xml
===================================================================
--- trunk/tutorials/components/lookup/etc/component.xml 2007-03-09 23:32:58
UTC (rev 1892)
+++ trunk/tutorials/components/lookup/etc/component.xml 2007-03-12 03:10:15
UTC (rev 1893)
@@ -1,14 +1,14 @@
<?xml version="1.0"?>
<component xmlns="dpml:metro"
- type="org.acme.Demo"
+ class="org.acme.Demo"
name="demo">
<parts>
- <component key="widget" type="org.acme.Widget" name="widget">
+ <component key="widget" class="org.acme.Widget" name="widget">
<context>
<entry key="color" method="BLUE"/>
</context>
</component>
- <component key="gizmo" type="org.acme.Gizmo" name="gizmo">
+ <component key="gizmo" class="org.acme.Gizmo" name="gizmo">
<context>
<entry key="widget" lookup="org.acme.Widget"/>
</context>
Modified: trunk/tutorials/components/parts/etc/component.xml
===================================================================
--- trunk/tutorials/components/parts/etc/component.xml 2007-03-09 23:32:58
UTC (rev 1892)
+++ trunk/tutorials/components/parts/etc/component.xml 2007-03-12 03:10:15
UTC (rev 1893)
@@ -1,9 +1,9 @@
<?xml version="1.0"?>
<component xmlns="dpml:metro"
- type="org.acme.Demo"
+ class="org.acme.Demo"
name="demo">
<parts>
- <component key="widget" type="org.acme.Widget" name="widget">
+ <component key="widget" class="org.acme.Widget" name="widget">
<context>
<entry key="color" method="BLUE"/>
</context>
Modified: trunk/tutorials/components/singleton/etc/component.xml
===================================================================
--- trunk/tutorials/components/singleton/etc/component.xml 2007-03-09
23:32:58 UTC (rev 1892)
+++ trunk/tutorials/components/singleton/etc/component.xml 2007-03-12
03:10:15 UTC (rev 1893)
@@ -1,12 +1,12 @@
<?xml version="1.0"?>
<component xmlns="dpml:metro"
- type="org.acme.Demo"
+ class="org.acme.Demo"
name="demo">
<context>
<entry key="threadCount" value="3"/>
<entry key="accessCount" value="2"/>
</context>
<parts>
- <component key="gizmo" type="org.acme.Gizmo" lifestyle="singleton"/>
+ <component key="gizmo" class="org.acme.Gizmo" lifestyle="singleton"/>
</parts>
</component>
Modified: trunk/tutorials/components/state/etc/component.xml
===================================================================
--- trunk/tutorials/components/state/etc/component.xml 2007-03-09 23:32:58
UTC (rev 1892)
+++ trunk/tutorials/components/state/etc/component.xml 2007-03-12 03:10:15
UTC (rev 1893)
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
<component xmlns="dpml:metro"
- type="org.acme.Demo"
+ class="org.acme.Demo"
name="demo"
lifestyle="transient"/>
Modified: trunk/tutorials/components/thread/etc/component.xml
===================================================================
--- trunk/tutorials/components/thread/etc/component.xml 2007-03-09 23:32:58
UTC (rev 1892)
+++ trunk/tutorials/components/thread/etc/component.xml 2007-03-12 03:10:15
UTC (rev 1893)
@@ -1,12 +1,12 @@
<?xml version="1.0"?>
<component xmlns="dpml:metro"
- type="org.acme.Demo"
+ class="org.acme.Demo"
name="demo">
<context>
<entry key="threadCount" value="3"/>
<entry key="accessCount" value="2"/>
</context>
<parts>
- <component key="gizmo" type="org.acme.Gizmo" lifestyle="thread"/>
+ <component key="gizmo" class="org.acme.Gizmo" lifestyle="thread"/>
</parts>
</component>
Modified: trunk/tutorials/components/transient/etc/component.xml
===================================================================
--- trunk/tutorials/components/transient/etc/component.xml 2007-03-09
23:32:58 UTC (rev 1892)
+++ trunk/tutorials/components/transient/etc/component.xml 2007-03-12
03:10:15 UTC (rev 1893)
@@ -1,11 +1,11 @@
<?xml version="1.0"?>
<component xmlns="dpml:metro"
- type="org.acme.Demo"
+ class="org.acme.Demo"
name="demo">
<context>
<entry key="count" value="5"/>
</context>
<parts>
- <component key="gizmo" type="org.acme.Gizmo" lifestyle="transient"/>
+ <component key="gizmo" class="org.acme.Gizmo" lifestyle="transient"/>
</parts>
</component>
Modified: trunk/tutorials/module.xml
===================================================================
--- trunk/tutorials/module.xml 2007-03-09 23:32:58 UTC (rev 1892)
+++ trunk/tutorials/module.xml 2007-03-12 03:10:15 UTC (rev 1893)
@@ -185,7 +185,6 @@
<project name="acme-state-demo" basedir="state">
<types>
<type id="jar"/>
- <!--<type id="part" source="target/component.xml" test="true"/>-->
<type id="part" source="target/component.xml"/>
</types>
<dependencies>
@@ -217,191 +216,7 @@
</test>
</dependencies>
</project>
-
- <!--
- <project name="acme-type-demo" basedir="type">
- <types>
- <type id="jar"/>
- <type id="part" source="target/component.xml"/>
- </types>
- <dependencies>
- <build>
- <include key="acme-logging-demo"/>
- </build>
- <test>
- <include ref="org/apache/ant/ant-junit"/>
- <include ref="dpml/metro/dpml-metro-part"/>
- </test>
- </dependencies>
- </project>
- -->
-
- <!-- customization demo: simple clock -->
-
- <!--
- <project name="acme-simple-clock" basedir="customize/clock">
- <info title="Simple Clock"/>
- <types>
- <type id="jar"/>
- <type id="part" source="target/component.xml"/>
- </types>
- <dependencies>
- <build>
- <include key="acme-type-demo"/>
- </build>
- <test>
- <include ref="org/apache/ant/ant-junit"/>
- <include ref="dpml/metro/dpml-metro-part"/>
- </test>
- </dependencies>
- </project>
- -->
-
- <!-- extension demo -->
-
- <!--
- <project name="acme-extended-clock" basedir="customize/extension">
- <info title="Extended Clock"/>
- <types>
- <component xmlns="dpml:metro"
- uri="link:part:dpmlx/tutorials/components/acme-simple-clock"
name="clock">
- <context>
- <entry key="format" value="K:mm a"/>
- </context>
- </component>
- </types>
- <dependencies>
- <runtime>
- <include key="acme-simple-clock"/>
- </runtime>
- <test>
- <include ref="org/apache/ant/ant-junit"/>
- <include ref="dpml/metro/dpml-metro-part"/>
- </test>
- </dependencies>
- </project>
- -->
-
- <!--
- <project name="acme-custom-clock" basedir="customize/custom">
- <info title="Custom Clock"/>
- <types>
- <type id="jar"/>
- <component xmlns="dpml:metro"
- uri="link:part:dpmlx/tutorials/components/acme-simple-clock"
name="clock">
- <context>
- <entry key="format" class="org.acme.extra.Customizer"
method="getCustomFormat"/>
- </context>
- </component>
- </types>
- <dependencies>
- <test>
- <include ref="org/apache/ant/ant-junit"/>
- <include key="acme-simple-clock"/>
- <include ref="dpml/metro/dpml-metro-part"/>
- </test>
- </dependencies>
- </project>
- -->
-
- <!-- part customization demo -->
-
- <!--
- <project name="acme-clock-api" basedir="import/api">
- <types>
- <type id="jar"/>
- </types>
- <dependencies>
- <build>
- <include key="acme-custom-clock"/>
- </build>
- </dependencies>
- </project>
-
- <project name="acme-clock-impl" basedir="import/clock">
- <types>
- <type id="jar"/>
- <component xmlns="dpml:metro"
- type="org.acme.scheduler.SimpleClock" name="simple"/>
- </types>
- <dependencies>
- <runtime>
- <include key="acme-clock-api"/>
- <include ref="dpml/metro/dpml-metro-part"/>
- </runtime>
- </dependencies>
- </project>
-
- <project name="acme-clock-demo" basedir="import/demo">
- <types>
- <type id="jar"/>
- <component xmlns="dpml:metro"
- type="org.acme.demo.Demo" name="demo">
- <parts>
- <component key="clock"
uri="resource:part:dpmlx/tutorials/components/acme-clock-impl">
- <context>
- <entry key="format" value="h:mm a"/>
- </context>
- </component>
- </parts>
- </component>
- </types>
- <dependencies>
- <build>
- <include key="acme-clock-impl"/>
- </build>
- <runtime>
- <include key="acme-clock-api"/>
- <include ref="dpml/util/dpml-logging-api"/>
- <include ref="dpml/metro/dpml-metro-part"/>
- </runtime>
- <test>
- <include ref="org/apache/ant/ant-junit"/>
- </test>
- </dependencies>
- </project>
-
- <project name="acme-clock-test" basedir="import/test">
- <dependencies>
- <test>
- <include ref="dpml/metro/dpml-metro-part"/>
- <include ref="org/apache/ant/ant-junit"/>
- </test>
- </dependencies>
- <filters>
- <feature ref="dpmlx/tutorials/components/acme-clock-demo" token="PART"
id="uri" type="part"/>
- </filters>
- </project>
- -->
-
- <!--
- <project name="acme-unit" basedir="unit">
- <properties>
- <property name="java.util.logging.config.class" value="dpml"/>
- <property name="example.uri"
value="local:properties:acme/examples/services/configuration"/>
- </properties>
- <types>
- <type id="jar" />
- <component xmlns="dpml:metro"
- type="acme.ContainerImpl"
- name="container" alias="true" collection="hard">
- <context>
- <entry key="configurationURI" value="${example.uri}" />
- </context>
- <parts>
- <component key="child" type="acme.ChildImpl" collection="hard"/>
- </parts>
- </component>
- </types>
- <dependencies>
- <test>
- <include ref="org/apache/ant/ant-junit" />
- <include ref="dpml/metro/dpml-metro-model" />
- </test>
- </dependencies>
- </project>
- -->
-
+
</module>
</module>
\ No newline at end of file
- r1893 - in trunk: central/site central/site/src/docs/metro central/site/src/docs/metro/cli central/site/src/docs/metro/component central/site/src/docs/metro/concepts central/site/src/docs/metro/parts central/site/src/docs/metro/parts/info central/site/src/docs/metro/parts/strategy central/site/src/docs/util/transit central/site/src/docs/util/transit/tutorials main/depot/build/etc main/metro/appliance/etc/data main/metro/appliance/src/test/net/dpml/appliance main/metro/connector/etc main/metro/main/etc main/metro/part/etc/bin main/metro/part/etc/data main/metro/part/etc/xsds main/metro/part/src/main/net/dpml/runtime main/metro/sample/etc main/metro/test/etc/data tutorials tutorials/components tutorials/components/context/etc tutorials/components/customize/clock/etc tutorials/components/examples/etc tutorials/components/hello/etc tutorials/components/lifestyle/etc tutorials/components/logging/etc tutorials/components/lookup/etc tutorials/components/parts/etc tutorials! /components/singleton/etc tutorials/components/state/etc tutorials/components/thread/etc tutorials/components/transient/etc, mcconnell at BerliOS, 03/11/2007
Archive powered by MHonArc 2.6.24.