martinc 2003/10/22 23:27:40
Added: chain project.properties project.xml
chain/xdocs download.xml index.xml navigation.xml
Log:
Add minimal Mavenisation, so that we can create a web site. The main page
is pretty much the same as the 'Rationale' section of the initial proposal,
with minor changes. (Thanks, Craig!) The download page was borrowed from
Commons FileUpload.
IMPORTANT NOTE: I deliberately did NOT include incl_nav.xml in the nav menu
because that seems to push project-specific pages to the very bottom of the
menu, which, IMHO, is a *very bad thing*.
Revision Changes Path
1.1 jakarta-commons-sandbox/chain/project.properties
Index: project.properties
===================================================================
# -------------------------------------------------------------------
# P R O J E C T P R O P E R T I E S
# -------------------------------------------------------------------
compile.debug = on
compile.optimize = off
compile.deprecation = off
maven.linkcheck.enable=true
# documentation properties
maven.xdoc.date=left
maven.xdoc.version=${pom.currentVersion}
maven.xdoc.developmentProcessUrl=http://jakarta.apache.org/commons/charter.html
1.1 jakarta-commons-sandbox/chain/project.xml
Index: project.xml
===================================================================
<?xml version="1.0" encoding="UTF-8"?>
<project>
<extend>../project.xml</extend>
<name>Chain</name>
<id>commons-chain</id>
<currentVersion>0.1-dev</currentVersion>
<inceptionYear>2003</inceptionYear>
<shortDescription>Chain of Responsibility</shortDescription>
<description>An implmentation of the GoF Chain of Responsibility
pattern.</description>
<developers>
<developer>
<name>Craig McClanahan</name>
<id>craigmcc</id>
<email>[EMAIL PROTECTED]</email>
<organization></organization>
</developer>
<developer>
<name>Ted Husted</name>
<id>husted</id>
<email>[EMAIL PROTECTED]</email>
<organization></organization>
</developer>
<developer>
<name>Martin Cooper</name>
<id>martinc</id>
<email>[EMAIL PROTECTED]</email>
<organization>Informatica</organization>
</developer>
</developers>
<dependencies>
<dependency>
<id>servletapi</id>
<version>2.3</version>
</dependency>
<dependency>
<id>portlet-api</id>
<version>0.1-dev-unreleased</version>
</dependency>
<dependency>
<id>junit</id>
<version>3.8.1</version>
</dependency>
<dependency>
<id>commons-beanutils</id>
<version>1.6</version>
</dependency>
<dependency>
<id>commons-collections</id>
<version>2.1</version>
</dependency>
<dependency>
<id>commons-digester</id>
<version>1.5</version>
</dependency>
<dependency>
<id>commons-logging</id>
<version>1.0.3</version>
</dependency>
</dependencies>
<build>
<unitTest>
<includes>
<include>**/*Test.java</include>
</includes>
</unitTest>
</build>
</project>
1.1 jakarta-commons-sandbox/chain/xdocs/download.xml
Index: download.xml
===================================================================
<?xml version="1.0"?>
<document>
<properties>
<title>Download</title>
<author email="[EMAIL PROTECTED]">Martin Cooper</author>
</properties>
<body>
<section name="Downloading Chain">
<subsection name='Full Releases'>
<p>
</p>
</subsection>
<subsection name='Releases Candidate'>
<p>
</p>
</subsection>
<subsection name='Beta Releases'>
<p>
</p>
</subsection>
<subsection name='Nightly Builds'>
<p>
Nightly builds are built every day from the current CVS HEAD. This is
the latest code and so should be treated with caution!
</p>
<p>
Download nightly builds from
<a
href='http://cvs.apache.org/builds/jakarta-commons/nightly/commons-chain/'>here</a>.
</p>
</subsection>
</section>
</body>
</document>
1.1 jakarta-commons-sandbox/chain/xdocs/index.xml
Index: index.xml
===================================================================
<?xml version="1.0"?>
<document>
<properties>
<title>Home</title>
<author email="[EMAIL PROTECTED]">Martin Cooper</author>
<author email="[EMAIL PROTECTED]">Craig McClanahan</author>
</properties>
<body>
<section name="Introduction">
<p>A popular technique for organizing the execution of complex
processing flows is the "Chain of Responsibility" pattern, as
described (among many other places) in the classic "Gang of Four"
design patterns book. Although the fundamental API contracts
required to implement this design patten are extremely simple, it
is useful to have a base API that facilitates using the pattern,
and (more importantly) encouraging composition of command
implementations from multiple diverse sources.</p>
<p>Towards that end, the Chain API models a computation as a
series of "commands" that can be combined into a "chain". The API
for a command consists of a single method
(<code>execute()</code>), which is passed a "context" parameter
containing the dynamic state of the computation, and whose return
value is a boolean that determines whether or not processing for
the current chain has been completed (true), or whether
processing should be delegated to the next command in the chain
(false).</p>
<p>The "context" abstraction is designed to isolate command
implementations from the environment in which they are run (such
as a command that can be used in either a Servlet or Portlet,
without being tied directly to the API contracts of either of
these environments). For commands that need to allocate resources
prior to delegation, and then release them upon return (even if a
delegated-to command throws an exception), the "filter" extension
to "command" provides a <code>postprocess()</code> method for
this cleanup. Finally, commands can be stored and looked up in a
"catalog" to allow deferral of the decision on which command (or
chain) is actually executed.</p>
<p>To maximize the usefulness of the Chain of Responsibility
pattern APIs, the fundamental interface contracts are defined in
a manner with zero dependencies other than an appropriate JDK.
Convenience base class implementations of these APIs are
provided, as well as more specialized (but optional)
implementations for the web environment (i.e. servlets and
portlets). However, conditional compilation in the build script
allows graceful creation of the underlying API JAR file even in
the absence of the optional dependencies.</p>
<p>Given that command implementations are designed to conform
with these recommendations, it should be feasible to utilize the
Chain of Responsibility APIs in the "front controller" of a web
application framework (such as Struts), but also be able to use
it in the business logic and persistence tiers to model complex
computational requirements via composition. In addition,
separation of a computation into discrete commands that operate
on a general purpose context allows easier creation of commands
that are unit testable, because the impact of executing a command
can be directly measured by observing the corresponding state
changes in the context that is supplied.</p>
</section>
</body>
</document>
1.1 jakarta-commons-sandbox/chain/xdocs/navigation.xml
Index: navigation.xml
===================================================================
<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="Chain">
<title>Chain</title>
<organizationLogo href="/images/jakarta-logo-blue.gif">Jakarta</organizationLogo>
<body>
<menu name="Chain">
<item name="Home" href="/index.html"/>
<item name="Download" href="/download.html"/>
</menu>
<links>
<item name="Jakarta" href="http://jakarta.apache.org"/>
<item name="Commons" href="http://jakarta.apache.org/commons"/>
<item name="Chain" href="/index.html"/>
</links>
</body>
</project>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]