husted 02/02/19 16:49:36
Added: doc/proposals workflow.xml todo-1.1.xml todo-1.0.xml
release-plan-1.0b1.xml release-plan-1.0.1.xml
project.xml
Log:
Commit documentation changes from this weekend.
Revision Changes Path
1.1 jakarta-struts/doc/proposals/workflow.xml
Index: workflow.xml
===================================================================
<?xml version="1.0"?>
<document url="./proposal-workflow.xml">
<properties>
<author>Craig R. McClanahan</author>
<title>Proposal - Workflow Management System</title>
</properties>
<body>
<section name="Background and Goals">
<p>Struts 1.0 has become an increasingly popular platform for constructing
web applications based on a Model-View-Controller type design pattern (also
known as the <em>Front Controller</em> pattern. It has achieved this
popularity for many reasons, but key among them have been:</p>
<ul>
<li>The simplicity of the basic organizational principles (once you
understand them)</li>
<li>The principle of <em>logical naming</em> to assist in isolating
the view layer and the model layer, so that changes in one do not
have to impact the other</li>
<li>A rich set of tools to assist in creating pages with dynamic content
exposed by the model layer through JavaBeans</li>
</ul>
<p>One consequence of the original Struts design, however, is that the
framework does not provide much assistance in organizing business
transactions that require more than one interaction with the user (i.e.
they span more than one JSP page and/or Action). Applications are left
to manage navigation issues, as well as deal with ActionForms whose
logical contents crosses page boundaries.</p>
<p>The original Struts design materially assists page designers in creating
dynamic pages, while protecting them from having to be very concerned with
the business logic -- other than the names of the JavaBeans used to
communicate model layer data to the presentation layer. However, Struts 1.0
still requires a Java developer to be involved on the business logic side
(even if all of the functional logic is already available in Java classes)
in order to create the Action classes.</p>
<p>The purpose of this <em>Workflow Management System</em> proposal is to
address some of these consequences. In particular, it intends to address
the following set of goals:</p>
<ul>
<li>Create a means where multiple-user-interaction business processes can be
configured (scripted), including support for conditional processing
and branching.</li>
<li>Support scripting elements that lets business application experts,
who are not necessarily Java developers, can integrate pre-existing
business functionality that is available as public methods on
arbitrary Java classes.</li>
<li>Assist page designers in creating the user interface elements that
correspond to navigation links within, or between, work flows.</li>
</ul>
</section>
<section name="Use Cases and Examples">
<p>To give a flavor of what scripted workflow activities might look like,
it is useful to consider some possible use case scenarios. The
syntax that is shown for the examples should be considered as
illustrative of what should be possible, rather than normative.
No rigorous attempt has been made to guarantee consistency
between (or even within) these examples.</p>
<subsection name="Application Logon">
<p>The example application included with Struts (like many other
web applications) uses application-managed security, including
a logon form. Consider that a business logic bean might be available
(in some scope under key <code>authenticator</code>)
that knows how to authenticate users given a username and password.
It could be utilized to script application logon like this:</p>
<pre>
<activity id="Application Logon">
<-- Display the logon form (web framework independent) -->
<web:forward id="display" page="/logon.jsp"/>
<-- Authenticate the username and password, returning a Principal
if accepted, or null if not -->
<web:set name="username" value="$parameter:username"/>
<web:set name="password" value="$parameter:password"/>
<core:invoke bean="authenticator" method="authenticate">
<core:param type="java.lang.String" value="$username"/>
<core:param type="java.lang.String" value="$password"/>
<core:return name="principal"/>
</core:invoke>
<-- If no Principal was returned, branch back to the logon form -->
<core:if expr="$principal == null">
<web:set name="error" value="$messages.lookup('invalid.logon')"/>
<core:branch idref="display"/>
</core:if>
<-- Exit to the "Main Menu" workflow -->
<core:goto name="Main Menu"/>
</activity>
</pre>
</subsection>
<subsection name="Simple Multi-Page Wizard">
<p>Many complex data entry operations can be simplified (from the
user's point of view) by dividing them up into a series of simple
dialog pages that ask a few (often one) question that leads ultimately
to a completed set of information required to process a request.
In many cases, each page of the interaction will have navigation
controls so that the user can short cut to immediate execution,
or cancel the entire interaction. Such an interaction might be
modelled like this:</p>
<pre>
<activity id="Simple Wizard Application">
<!-- Display the first page of the interation -->
<!-- (Using Struts-specific logical-to-physical mapping) -->
<struts:forward id="page1" name="Simple Wizard Page 1">
<!-- Process navigation input from the first page -->
<!-- (Can do something much like this framework-independently too) -->
<struts:navigate>
<struts:branch control="CANCEL" idref="cancel"/>
<struts:branch control="FINISH" idref="finish"/>
<struts:branch control="NEXT" idref="page2"/>
</struts:navigate>
<!-- Display the second page of the interation -->
<struts:forward id="page2" name="Simple Wizard Page 2">
<!-- Process navigation input from the second page -->
<struts:navigate>
<struts:branch control="CANCEL" idref="cancel"/>
<struts:branch control="FINISH" idref="finish"/>
<struts:branch control="NEXT" idref="page3"/>
<struts:branch control="PREV" idref="page1"/>
</struts:navigate>
<!-- Display the third page of the interation -->
<struts:forward id="page3" name="Simple Wizard Page 3">
<!-- Process navigation input from the third page -->
<struts:navigate>
<struts:branch control="CANCEL" idref="cancel"/>
<struts:branch control="FINISH" idref="finish"/>
<struts:branch control="PREV" idref="page2"/>
</struts:navigate>
<!-- Process the FINISH navigation control as appropriate -->
<xxx:yyy id="finish" .../>
<core:goto name="Main Menu"/>
<!-- Process the CANCEL navigation control as appropriate -->
<xxx:yyy id="cancel" .../>
<core:goto name="Main Menu"/>
</activity>
</pre>
<p>Not illustrated above, but also interesting to explore, would be
the situation where choices on one page affect whether some pages
in the overall flow might be skipped.</p>
</subsection>
</section>
<section name="User Visible Features">
<p>Workflow system capabilities will be exposed to applications through
Java APIs that represent both the static description of particular
activities and the dynamic current state of a computation. Object
factory and pluggable implementation patterns shall be used where
appropriate to maximize the generality and flexibility of the system.</p>
<subsection name="Workflow Management System Implementation Objects">
<p>The following classes represent the primary components of the
workflow management system:</p>
<p><strong>Registry</strong> - Collection into which multiple
<em>Process</em> and <em>Activity</em> static descriptions can be
stored and retrieved by String-valued keys.</p>
<p><strong>Process</strong> - The static description of a tree of
business activities that are executed in a nested fashion, often by
separate individuals (or application systems).</p>
<p><strong>Activity</strong> - The static description of a sequence
of Steps that are generally executed by a single individual (or
application system), within a reasonably short period of time.</p>
<p><strong>Step</strong> - The static description of an individual
task to be performed as a discrete, indivisible, unit. Steps can
also be nested inside other steps, to provide for looping and
conditional processing. A rich set of built-in Step implementations
shall be provided (including powerful capabilities such as the
execution of an abitrary method on an arbitrary Java object), and
mechanisms to extend the set of supported Step implementations
allows arbitrary extensibility.</p>
<p><strong>Context</strong> - The dynamic state of a computation
through an <em>Activity</em> (or a set of nested <em>Activities</em>),
including provision of storage space for JavaBeans produced and
consumed by other Steps. Contexts keep track of the current Step
being executed, so that activity processing can be suspended and
resumed later.</p>
<p><strong>Scope</strong> - A <code>Map</code> into which
arbitrary Java objects can stored and retrieved by String-valued keys.
Context support a number of individual Scopes, each of which can be
plugged in from application logic, to provide integration into
existing application functionality. For example, in a web application
imlementation, Scopes will generally be mapped directly to request
attributes, session attributes, and servlet context attributes as
provided by the Servlet API.</p>
</subsection>
<subsection name="Built-In Steps">
<p>A rich variety of built-in <em>Step</em> implementations (and
corresponding XML elements in specified namespaces) will be provided
as part of the basic workflow engine, and as part of the associated
Struts integration of this engine.</p>
<p><strong>Bean Interaction</strong> - The ability to get and set
JavaBeans in arbitrary Scopes (mapped via the Context to real collections
of objects).</p>
<p><strong>Control Flow</strong> - Conditionals and looping, where
control flow Steps can contain nested sets of Steps to an arbitrary
degree.</p>
<p><strong>Method Execution</strong> - Execute arbitrary public methods
of beans stored in some Scope, passing specified arguments (expressions
or bean references) and returning the method's result (if any) to a
named bean in some Scope. To maximize usefulness of the workflow
system in composing applications, <strong>no</strong> restrictions
should be placed on the object types these Steps can interact with.</p>
<p><strong>Activity Management</strong> - GOTO a named Activity
(exiting the current one), CALL a named Activity (resuming the current
one when the called Activity returns, RETURN from a called Activity,
EXIT the Activity system.</p>
<p><strong>User Interaction</strong> - Suspend workflow execution to
interact with the user in some application specific way. For example,
a web application would display a page and wait for input to be
submitted before resuming the workflow.</p>
<p><strong>Specialized Processing</strong> - Prebuilt Steps for common
processing functions such as XSLT transformations, performing
arbitrary SQL queries, sending mail, and so on.</p>
</subsection>
</section>
<section name="Implementation Notes">
<p>The implementation of this proposal will be divided into three major
development layers:</p>
<ul>
<li>Core workflow management system capabilities and built in Step
implementations that are independent of application environment.
[Code in jakarta-commons]</li>
<li>Specialized implementation of workflow management system components
that integrate with the Servlet API in a manner that is independent
of any specific application framework. [Code in jakarta-commons]</li>
<li>Specialized implementation of workflow management system components
that is tightly integrated with Struts's internal architecture and
custom tag libraries. [Code in jakarta-struts]</li>
</ul>
<p>The workflow management system will support the general concept of
<em>Scopes</em> in which beans can be stashed, with pluggable
implementations for integration into different working environments.
None of the APIs in the workflow engine itself will have any reference
to the web layer (i.e. no imports of <code>javax.servlet.*</code>).</p>
<blockquote><em>
<p>Suitable object factory and pluggability APIs will be included
to guarantee extensibility of the basic framework.</p>
</em></blockquote>
<p>Scripting of business transactions will be codified in XML documents
that conform to an appropriate DTD and/or schema. The XML technology
that is used will facilitate extensible definitions of <em>Steps</em>
and other components, in both the XML description of these components and
in the set of Java objects that implements them.</p>
<blockquote><em>
<p>When designing the detailed syntax of the XML representation
of Steps, consider whether it is feasible for advanced development
tools to "compile" activities into individual classes to optimize
overall performance.</p>
</em></blockquote>
<blockquote><em>
<p>When designing the detailed syntax of the XML representation
of Steps, consideration should be given to emulating the syntax
of other XML applications that are similar in spirit or detail
to the concepts of scripting a business transaction. Useful
models to consider include:</p>
<ul>
<li><a href="http://www.w3.org/TR/xslt">XSL Transformations (XSLT)</a>
- Includes control flow mechanisms that are becoming widely
known and understood, which could be mimiced.</li>
<li><a href="http://jakarta.apache.org/taglibs/jsptl-doc/intro.html">
JSP Standard Tag Library (Early Access)</a> - The design goals for
many of the JSP custom tags in this library (produced by the
JSR-052 expert group under the Java Community Process) are similar
enough to provide a useful model for conditionals, looping, and
interaction with objects in arbitrary scopes.</li>
</ul>
</em></blockquote>
<blockquote><em>
<p>To maximize the usefulness of built-in actions, an expression
language that knows how to manipulate objects in the Scopes associated
with the current Context will need to be supported. Useful models to
consider include:</p>
<ul>
<li><a href="http://www.w3.org/TR/xpath">XML Path Language (XPath)</a>
- Will be familar to XML-oriented application developers because
it is used throughout the suite of XML specifications.</li>
<li>JavaScript like expression languages - Will be familiar to page
developers (as well as Struts developers familiar with the
nested and indexed property accessor syntax of many Struts tags).</li>
</ul>
</em></blockquote>
<blockquote><em>
<p>From the workflow script developer's point of view, XML namespaces
will be used to introduce extended sets of Step implementations. There
will need to be mechanisms to map a particular namespace to a set of
legal XML elements (within that namespace) and corresponding Java
classes that provide the functionality for those Steps.</p>
</em></blockquote>
<p>The web layer integration will include a mechanism to map scopes (from
the workflow perspective) into the standard <em>request</em>,
<em>session</em>, and <em>application</em> scopes of the web layer.
Thus, workflow scripts will be able to place beans in appropriate
scopes such that JSP pages can directly pull that data into the presentation,
much as Struts Actions (and the business logic classes that are called by
those Actions) can place beans there in a Struts 1.0 based application.
Utilizing these capabilities, application developers will be able to
"script" the business logic requirements of many applications, by
combining functional logic already available as methods on business
logic beans, without having to involve Java programmers to create new
Actions (or otherwise synthesize business logic out of the constituent
pieces).</p>
<blockquote><em>
<p>Components in the web layer integration may import APIs from the
Servlet and JSP specifications, but not from any application specific
framework. Framework-specific integration will occur on top of the
generic web layer integration.</p>
</em></blockquote>
<p>In addition, the Struts integration will include a small custom tag
library will be included, so that page
developers can easily create navigational links and controls. Examples
of such controls include links to the "next", "previous", and "finish"
pages of a wizard dialog, a "cancel" button to exit a workflow early, or
an "invoke" button to invoke a new workflow as a subroutine, and then
return to the current step of the original workflow. Utilizing these
capabilities, page developers can create the individual visible pieces
of a work flow dialog, without having to be involved in navigational
complexities.</p>
</section>
</body>
</document>
1.1 jakarta-struts/doc/proposals/todo-1.1.xml
Index: todo-1.1.xml
===================================================================
<?xml version="1.0"?>
<document url="./todo-1.1.xml">
<properties>
<author>Craig R. McClanahan</author>
<title>Features We'd Like To See - The Struts Project Wish List</title>
</properties>
<body>
<section name="Introduction" href="Intro">
<p>Application frameworks, like the applications we build with them,
never seem to be completed. The following major areas of improvement
are being considered for implementation in a future version
of Struts. </p>
<p>Which features are implemented first depends greatly on
individual developers becoming involved in the process. Many key
features in Struts grew out of code first distributed on the mailing
list. If there is a feature here that you need, or already have, please
start a thread and show us the code!</p>
<p align="center"><a href="userGuide/kickstart.html#release"><b>So, when is the
next release coming out?</b></a></p>
<p>An external development that is likely to affect the development of
Struts 1.1 will be the emerging Standard Tag Library, being produced under
the <a href="http://www.jcp.org/jsr/detail/52.jsp">Java Community Process</a>.
A very early release is now available at
<a href="http://jakarta.apache.org/taglibs/doc/jsptl-doc/intro.html">Jakarta
Taglibs</a>.</p>
<p>The existing Struts tags were used as input to the standardization process,
but in the case where standard tags with similar functionality are adopted,
we should migrate Struts tags to maintain maximum compatibility with the
new standard library.</p>
</section>
<section name="Pending Tasks" href="pending">
<ul>
<li><a href="proposal-workflow.html">Workflow</a></li>
<li><a href="http://husted.com/struts/resources/struts-security.htm">Role Based
Actions</a></li>
<li><a href="http://husted.com/struts/resources/logic-niallp.htm">If/Else/Switch
tags</a></li>
<li><a href="http://husted.com/struts/resources/codemaker.htm">Code
generator</a></li>
</ul>
<p>See also the Tiles, Validator, and Service Manager packages in the contrib
folder.</p>
<p>The wish list tasks are divided into functional areas that correspond
to the major components of the Struts Framework. References in square
brackets are the Java package containing the corresponding source code.
Listing a task here is not a guarantee that it will be present in the
next release. Again, whether a wish becomes a feature depends on whether
there are volunteers who choose to work on the task. </p>
</section>
<task-list name="Struts Documentation" href="Docs">
<info>
<p>Omnibus task list for items related to the Struts Documentation,
which do not have direct relationships with code bases.</p>
</info>
<task name="Taglib Chapters for User Guide">
<info>
Incorporate the Taglib documentation and Developer Guides into the User Guide,
by including the source of these from their present locations.
</info>
</task>
<task name="TODO stylesheet">
<info>
Revise TODO stylesheet to add Status and Source elements, and to support mailto
links for volunteers in Assigned element. All elements should support hypertext
links.
</info>
</task>
<task name="Taglib stylesheet">
<info>
Add support for "since" element for tracking changes to tags between versions.
</info>
</task>
<task name="Contribution Reviews">
<info>
Area to post articles about contributions from Struts developers.
</info>
</task>
<task name="Expanded FAQ">
<info>
Area to post a "choice" FAQ of truly common questions.
</info>
</task>
</task-list>
<task-list name="Struts Example Application" href="Example">
<info>
<p>An example web application utilizing the Struts framework and
custom tag library.</p>
</info>
<task name="Better Database Support">
<info>
<p>Use a "real" database of some sort (while still making Struts
easy to install.</p>
</info>
<assigned>
<a href="mailto:[EMAIL PROTECTED]">Ted Husted</a>
</assigned>
</task>
<task name="Locale Switching">
<info>
<p>Add support for switching Locales on the fly to the Struts
example application.</p>
</info>
<assigned>
<a href="mailto:[EMAIL PROTECTED]">Ted Husted</a>
</assigned>
</task>
</task-list>
<task-list name="MVC Framework [org.apache.struts.action]" href="MVC">
<info>
<p>This is the core controller servlet, with support for the developer's
action and form bean classes, plus the supporting data structures.</p>
</info>
<task name="Remove Deprecations">
<info>
<p>Clean out all 1.0 deprecated classes and files, framework-wide.</p>
</info>
</task>
<task name="ActionForms With Dynamic Properties">
<info>
<p>Create mechanisms to support ActionForm implementations where the
set of properties to be included is dynamically calculated, in addition
to the current support for properties that are accessed through the
Java Reflection APIs and are therefore fixed.</p>
</info>
</task>
<task name="Workflow Processing">
<info>
<p>Create a mechanism by which business logic (now encoded in
<code>Action</code> classes) can be subdivided into individual work
<code>Tasks</code> that are combined according to configuration
information (including flow control and iteration support) in the
<code>struts-config.xml</code> file. Support for workflow processing
would be provided by a set of standard <code>Actions</code>, and
will offer an alternative mechanism (not a replacement of Actions)
to organizing your business logic.</p>
<p><a href="proposal-workflow.html"><b>A Workflow Proposal is
pending.</b></a></p>
</info>
<assigned>
<a href="mailto:[EMAIL PROTECTED]">Craig Tataryn</a>,
<a href="mailto:[EMAIL PROTECTED]">Nic Hobbs</a>
</assigned>
</task>
<task name="PropertyEditor Support">
<info>
<p>Add support for JavaBeans that include a <code>PropertyEditor</code>
class for conversion to and from the string representation used in an
HTML input field. This support should operate in a manner consistent
with the way that standard JSP tags do in JSP 1.2.</p>
</info>
</task>
<task name="Event and Listener Model">
<info>
<p>Retrofit the Struts controller framework with supports for event
generation (and the corresponding registration of listeners) for all
interesting events created by the framework. The list of interesting
events will undoubtedly be influenced by changes related to other
work items on this list (such as workflow processing and standard
validations), so work on this should be coordinated with those
changes.</p>
<p>
[STRUTS-DEV, Robert Leland, 10/10/2000]
[STRUTS-DEV, David Geary, 12/20/2000]
[STRUTS-USER, Ted Husted, 12/23/2000]
</p>
</info>
</task>
<task name="EJB Design Patterns">
<info>
<p>Begin adding design patterns and support for easy integration with
Enterprise JavaBeans (EJBs) for encapsulation of business logic and
application data.</p>
</info>
<assigned>
<a href="mailto:[EMAIL PROTECTED]">Mike Schachter</a>
</assigned>
</task>
<task name="HTML No-Cache Support">
<info>
<p>Improve the current Struts support for generating no-cache headers
to provide finer-grained, configurable control on a per-page basis.
</p>
<p>
[STRUTS-DEV, Hou Yunfeng, 10/07/2000]
[STRUTS-DEV, Matthias Kerkhoff, 11/18/2000]
</p>
</info>
</task>
<task name="Role-Based Action Execution">
<info>
<p>Add the ability to require the current user to be in a particular
security role before they can execute a particular action.
</p>
<p>
<a href="http://husted.com/struts/resources/struts-security.htm"><b>A
proposed extension is available.</b></a>
</p>
<p>
[STRUTS-DEV, James W., 01/23/2001]
</p>
</info>
<assigned>
<a href="mailto:[EMAIL PROTECTED]">Nic Hobbs</a>
</assigned>
</task>
</task-list>
<task-list name="Bean Tag Library [org.apache.struts.taglib.bean]"
href="BEAN">
<info>
<p>This tag library contains basic tags useful in manipulating JavaBeans
and their properties. It includes support for getting and setting bean
properties using simple, nested, and subscripted accessor expressions.
</p>
</info>
<task name="XPath Support">
<info>
<p>Update all of the relevant tags to include property accessor support
using the syntax specified by the XPath standard (www.w3c.org).</p>
</info>
<assigned>
<a href="mailto:[EMAIL PROTECTED]">Dave Bettin</a>
</assigned>
</task>
<task name="XML DOM Support">
<info>
<p>Update all of the relevant tags to get and set attributes from a
Java object that implements the XML Document Object Model, as well as
from the current tree of JavaBean objects. How the underlying data
object is stored should be transparent to page writers using these
tags.</p>
</info>
<assigned>
<a href="mailto:[EMAIL PROTECTED]">Dave Bettin</a>
</assigned>
</task>
<task name="XML DOM / JDBC RowSet Support">
<info>
<p>Update all of the relevant tags to get and set attributes from a
JDBC RowSet (or ResultSet) object, as well as from XML DOM objects and
the current tree of JavaBean objects. How the underlying data object
is stored should be transparent to page writers using these tags.
</p>
</info>
<assigned>
<a href="mailto:[EMAIL PROTECTED]">Dave Bettin</a>
</assigned>
</task>
<task name="Formatting Support">
<info>
<p>Add the ability to use formatting patterns (suitably localized) for
presenting numbers, dates, times, timestamps, and so on via formatted
patterns.</p>
<p>
[STRUTS-DEV, Oleg Alexeev, 10/27/2000]
[STRUTS-USER, Ned Seagoon, 12/11/2000]
[STRUTS-DEV, Ned Seagoon, 12/13/2000]
[STRUTS-USER, Ned Seagoon, 01/04/2001]
</p>
</info>
<assigned>
<a href="mailto:[EMAIL PROTECTED]">Dave Bettin</a>
</assigned>
</task>
</task-list>
<task-list name="HTML Tag Library [org.apache.struts.taglib.html]"
href="HTML">
<info>
<p>This tag library contains tags useful in preparing web applications that
use HTML forms as their primary mechanism for user data entry, as well as
support for internationalized and localized applications.</p>
</info>
<task name="Radio Button Groups">
<info>
<p>Add a new tag that supports generation of groups of radio buttons.
</p>
<p>
[STRUTS-DEV, Wellington Silva, 08/28/2000]
</p>
</info>
</task>
<task name="Improve Options Tag">
<info>
<p>Improve the mechanism by which you define values and corresponding
labels for <code><html:options></code>.</p>
<p>
[STRUTS-DEV, David Winterfeldt, 07/27/2000]
[STRUTS-DEV, David Winterfeldt, 08/02/2000]
[STRUTS-DEV, Andy Boyko, 11/15/2000]
[STRUTS-DEV, Andy Boyko, 12/07/2000]
</p>
</info>
</task>
<task name="Additional Attributes">
<info>
<p>Support additional HTML 4.0.1 attributes (such as "disabled",
"readonly", "wrap" on textarea)
where appropriate.</p>
<p>
[STRUTS-USER, , 08/23/2000]
</p>
</info>
</task>
<task name="Improved Iteration Support">
<info>
<p>Improve the ability to use the <code><logic:iterate></code>
tag over a collection, and generate a set of input fields for each
member of the collection (perhaps auto-generating a subscript?).
A significant use case is master-detail relationships (say, a
customer and their current orders) where you allow editing of any
and all fields.</p>
<p>
[STRUTS-USER, Lars, 12/06/2000]
[STRUTS-USER, Chandan Kulkarni, 12/26/2000]
</p>
</info>
</task>
<task name="Multi-Page Form Support">
<info>
<p>Create design patterns and improved internal support for forms that
span multiple pages.</p>
</info>
<assigned>
<a href="mailto:[EMAIL PROTECTED]">Nic Hobbs</a>
</assigned>
</task>
</task-list>
<task-list name="Logic Tag Library [org.apache.struts.taglib.logic]"
href="Logic">
<info>
<p>This tag library provides mechanisms to conditionally process
nested body content based on a variety of logical conditions.</p>
</info>
<task name="'Else' and 'Else If' Capability and Other Conditional Structures">
<info>
<p>Add "else" and "else if" constructs to the existing conditional
tags, in some reasonable format.</p>
<p>Add conditional tags that emulate the "case" or "switch"
capability of many programming languages.</p>
<p>NOTE: Pending the outcome of the JSPTL, this functionality will
<b>not</b> be added to the Struts-Logic tags. However, a
<a href="http://husted.com/struts/resources/logic-niallp.htm"><b>contributor
taglib</b></a> is available.</p>
</info>
<assigned>
<a href="mailto:[EMAIL PROTECTED]">Niall Pemberton</a>
</assigned>
</task>
<task name="Iterating Parallel Collections">
<info>
<p>Enhance <code><logic:iterate></code>, or provide a new
tag, to iterate over multiple collections in parallel.</p>
<p>
[STRUTS-DEV, Jeff R., 08/03/2000]
</p>
</info>
</task>
</task-list>
<task-list name="WML Tag Library [org.apache.struts.taglib.wml]"
href="WML">
<info>
<p>This tag library will contain tags useful in preparing web applications
similar to those supported by the HTML tag library, but render output that
is well-formed XML in accordance with WML specifications.</p>
</info>
</task-list>
<task-list name="XFORMS Tag Library [org.apache.struts.taglib.xforms]"
href="xforms">
<info>
<p>This potential new tag library provides access to facilities in the
emerging XForms standards.</p>
</info>
<task name="Generalized Form Handling">
<info>
<p>Consider how to support more generalized definitions of forms and
their fields, perhaps based on emerging XForms standards.</p>
</info>
</task>
</task-list>
<task-list name="XHTML Tag Library [org.apache.struts.taglib.xhtml]"
href="XHTML">
<info>
<p>This tag library will contain tags useful in preparing web applications
similar to those supported by the HTML tag library, but render output that
is well-formed XML in accordance with the XHTML 1.0 specification.</p>
</info>
</task-list>
<task-list name="Tools Support [org.apache.struts.tools]"
href="Tools">
<info>
<p>This package contains code generators and other tools that
facilitate the creation of Struts-based applications. Further
subdivision into specialized packages should be performed as
appropriate.</p>
</info>
<task name="XML --> ActionForm Code Generator">
<info>
<p>Create a tool that takes an XML-based description of the
properties of the form bean, and automatically generates
the corresponding Java class.</p>
<p><a href="http://husted.com/struts/resources/codemaker.htm"><b>A
contributor extension is now available.</b></a></p>
<p>
[STRUTS-DEV, Mark Wutka, 06/01/2000 and 06/16/2000]
</p>
</info>
<assigned>
<a href="mailto:[EMAIL PROTECTED]">Martin Cooper</a>
<a href="[EMAIL PROTECTED]">Ravindran Ramaiah</a>
</assigned>
</task>
</task-list>
<task-list name="Utility Classes [org.apache.struts.util]" href="Util">
<info>
<p>This package contains a variety of utility classes useful within
Struts as well as in stand-alone applications.</p>
</info>
<task name="XmlMessageResources">
<info>
<p>Implementation of <code>MessageResources</code> and
<code>MessageResourcesFactory</code> that loads message keys
and strings from one or more XML resources or files.</p>
<p>
[STRUTS-DEV, Scott Sayles, 01/07/2000]
</p>
</info>
</task>
<task name="Enhanced Collections Support">
<info>
<p>Improve support in <code>BeanUtils</code>,
<code>ConvertUtils</code>, and <code>PropertyUtils</code> for property
values that implement <code>Collection</code>, <code>List</code>, or
<code>Set</code>, treating them in a manner similar to the way that
indexed or array-valued properties are handled.</p>
<p>
[Bugzilla #640]
</p>
</info>
</task>
</task-list>
<task-list name="Unit Test Suites" href="Unit Tests">
<info>
<p>Unit test components compatible with the JUnit and Cactus testing
frameworks, to test and validate internal APIs of the Struts framework.
Volunteers will typically agree to develop tests for an entire package
within the Java source code of Struts.
</p>
</info>
<task name="Action">
<info>
<p>Unit tests for the <code>org.apache.struts.action</code> package.</p>
</info>
<assigned>
<a href="mailto:[EMAIL PROTECTED]">Rob Leland</a>
</assigned>
</task>
<task name="Actions">
<info>
<p>Unit tests for the <code>org.apache.struts.actions</code> package.</p>
</info>
</task>
<task name="Taglib.Bean">
<info>
<p>Unit tests for the <code>org.apache.struts.taglib.bean</code> package.</p>
</info>
</task>
<task name="Taglib.Html">
<info>
<p>Unit tests for the <code>org.apache.struts.taglib.html</code> package.</p>
</info>
</task>
<task name="Taglib.Logic">
<info>
<p>Unit tests for the <code>org.apache.struts.taglib.logic</code>
package.</p>
</info>
</task>
<task name="Taglib.Template">
<info>
<p>Unit tests for the <code>org.apache.struts.taglib.template</code>
package.</p>
</info>
</task>
<task name="Upload">
<info>
<p>Unit tests for the <code>org.apache.struts.taglib.upload</code>
package.</p>
</info>
</task>
<task name="Util">
<info>
<p>Unit tests for the <code>org.apache.struts.util</code> package.</p>
</info>
</task>
</task-list>
<task-list name="Additional Possibilities" href="Additional">
<info>
<p>This section is a catch-all for additional areas of functionality
to be investigated for inclusion into Struts.</p>
</info>
<task name="Coarse Grain Components">
<info>
[STRUTS-DEV, Cedric Dumoulin, 10/03/2000]
</info>
</task>
<task name="Multidimensional Properties">
<info>
[STRUTS-DEV, Eric, 11/07/2000]
</info>
</task>
<task name="Portal Components">
<info>
[STRUTS-DEV, Phil Grimm, 11/22/2000]
</info>
<assigned>
<a href="mailto:[EMAIL PROTECTED]">Ted Husted</a>
</assigned>
</task>
<task name="Storefront Example App">
<info>
[STRUTS-DEV, David D'Orto, 12/11/2000]
</info>
</task>
</task-list>
<task-list name="Contributors Area" href="Contrib">
<info>
<p>A portion of the Struts web site, and file system, where individually
contributed add-ons for Struts can be hosted and downloaded.</p>
</info>
<task name="Proposal">
<info>
<p>Detailed proposal with implementation plan.</p>
<p> [STRUTS-USER, Ned Seagoon, 12/22/2000]</p>
</info>
<assigned>
<a href="mailto:[EMAIL PROTECTED]">Ted Husted</a>
</assigned>
</task>
</task-list>
</body>
</document>
1.1 jakarta-struts/doc/proposals/todo-1.0.xml
Index: todo-1.0.xml
===================================================================
<?xml version="1.0"?>
<document url="./todo-1.1.xml">
<properties>
<author>Craig R. McClanahan</author>
<title>The Struts Project TODO List for Version 1.0</title>
</properties>
<body>
<section name="Introduction" href="Intro">
<p>Application frameworks, like the applications we build with them,
never seem to be completed. The following are the remaining work items
before Version 1.0 of Struts can be released.</p>
<p>The TODO list tasks are divided into functional areas that correspond
to the major components of the Struts Framework. References in square
brackets are the Java package containing the corresponding source code.</p>
</section>
<task-list name="Struts Documentation" href="Docs">
<info>
<p>Omnibus task list for items related to the Struts Documentation,
which do not have direct relationships with code bases.</p>
</info>
</task-list>
<task-list name="Struts Example Application" href="Example">
<info>
<p>An example web application utilizing the Struts framework and
custom tag library.</p>
</info>
</task-list>
<task-list name="MVC Framework [org.apache.struts.action]" href="MVC">
<info>
<p>This is the core controller servlet, with support for the developer's
action and form bean classes, plus the supporting data structures.</p>
</info>
<task name="Deprecation Warnings">
<info>
<p>Review framework-wide use of features that have now been
deprecated.</p>
</info>
</task>
</task-list>
<task-list name="XML Digester [org.apache.struts.digester]" href="Digester">
<info>
<p>The Digester package supports scripted firing of "rules" based on
matching a particular pattern of nested XML tags. Among the predefined
rules that can be utilized are rules to create new objects, set bean
properties from the contents of attributes, or call arbitrary methods
with arguments based on the XML content being parsed. A common
use for this technology (illustrated in the Struts ActionServlet), is
parsing configuration files and building corresponding object trees.</p>
</info>
</task-list>
<task-list name="Bean Tag Library [org.apache.struts.taglib.bean]"
href="BEAN">
<info>
<p>This tag library contains basic tags useful in manipulating JavaBeans
and their properties. It includes support for getting and setting bean
properties using simple, nested, and subscripted accessor expressions.
</p>
</info>
</task-list>
<task-list name="HTML Forms Tag Library [org.apache.struts.taglib.html]"
href="HTML">
<info>
<p>This tag library contains tags useful in preparing web applications that
use HTML forms as their primary mechanism for user data entry, as well as
support for internationalized and localized applications.</p>
</info>
</task-list>
<task-list name="Utility Classes" href="Util">
<info>
<p>This package contains a variety of utility classes useful within
Struts as well as in stand-alone applications.</p>
</info>
<task name="Update HTML Filtering">
<info>
<p>Update the filtering supported by <code>BeanUtils.filter()</code>.
</p>
[STRUTS-DEV, Matthias Kerkhoff, 11/13/2000]
</info>
</task>
</task-list>
</body>
</document>
1.1 jakarta-struts/doc/proposals/release-plan-1.0b1.xml
Index: release-plan-1.0b1.xml
===================================================================
<?xml version="1.0"?>
<document url="./release-plan-1.0b1.xml">
<properties>
<author>Craig R. McClanahan</author>
<title>Struts Release Plan (Version 1.0-beta-1)</title>
</properties>
<body>
<section name="Objective" href="Objective">
<p><font size="-2">$Id: release-plan-1.0b1.xml,v 1.1 2002/02/20 00:49:36 husted
Exp $</font></p>
<p>The objective of the <strong>Struts 1.0-beta-1</strong> release is to
create a milestone release against which a final series of bug fixes and
documentation updates can occur before a <strong>Struts 1.0 Final</strong>
release is created.</p>
</section>
<section name="The Plan" href="Plan">
<p>The code base for Struts has been in an informal "feature freeze" for
several weeks, while development focus has been on bug fixes and the
completion of required documentation. Both of these goals have been
substantially achieved, so it is time for a formal beta release - with
the goal of moving quickly to a final <strong>Struts 1.0</strong> release
shortly thereafter, if no disabling defects are found.</p>
<p>Therefore, the following release plan is proposed for Struts 1.0-beta-1:
</p>
<ul>
<li><em>Code Freeze / Tag Date</em> - Wednesday, February 21, 2001</li>
<li><em>Release Manager</em> - Craig McClanahan</li>
<li><em>Release Announcement</em> - To the following mailing lists and
web sites:
<ul>
<li>[EMAIL PROTECTED]</li>
<li>[EMAIL PROTECTED]</li>
<li>[EMAIL PROTECTED]</li>
<li>[EMAIL PROTECTED]</li>
<li>[EMAIL PROTECTED]</li>
<li>[EMAIL PROTECTED]</li>
<li><a href="http://www.freshmeat.net">http://www.freshmeat.net</a></li>
</ul></li>
</ul>
</section>
<section name="Release Criteria" href="Criteria">
<p>Prior to the release of Struts 1.0-beta-1, the following action items
must be completed:</p>
<ul>
<li>All <a href="http://nagoya.apache.org/bugzilla/">Bugzilla</a> bug reports
against Struts 1.0 nightly builds MUST be marked as "Resolved", with any
of the legal Bugzilla resolutions (FIXED, INVALID, WONTFIX, LATER,
REMIND, WORKSFORME).</li>
<li>Bug reports that are resolved as LATER or REMIND will include comments
as to whether those specific issues will be dealt with in a subsequent
1.0 beta or final release, or whether they will be scheduled for
consideration in a subsequent release time frame.</li>
<li>Any remaining items on the Struts 1.0 TODO list shall be completed.</li>
<li>The Struts 1.0 Release Notes document shall be updated to describe
substantial changes and improvements since the Struts 0.5 release,
along with associated updates to the main Struts Documentation
Application pages describing the new release.</li>
<li>All of the Struts example applications that are included with the release
shall operate successfully in the following servlet containers:
<ul>
<li><a href="http://jakarta.apache.org/tomcat">Tomcat 3.2.1</a></li>
<li><a href="http://jakarta.apache.org/tomcat">Tomcat 4.0</a> (Current
nightly build)</li>
</ul></li>
<li>A release vote shall take place on the STRUTS-DEV mailing list to
approve this plan. The release vote MUST pass by "Majority Approval"
of Struts committers.</li>
</ul>
</section>
</body>
</document>
1.1 jakarta-struts/doc/proposals/release-plan-1.0.1.xml
Index: release-plan-1.0.1.xml
===================================================================
<?xml version="1.0"?>
<document url="./release-plan-1.0.1.xml">
<properties>
<author>Martin F N Cooper</author>
<title>Struts Release Plan (Version 1.0.1)</title>
</properties>
<body>
<section name="Objective" href="Objective">
<p><font size="-2">$Id: release-plan-1.0.1.xml,v 1.1 2002/02/20 00:49:36 husted
Exp $</font></p>
<p>The objective of the <strong>Struts 1.0.1</strong> release is to provide
an official release of all the bug fixes and documentation updates that have
been made to the STRUTS_1_0_BRANCH branch since the release of Struts 1.0.</p>
</section>
<section name="The Plan" href="Plan">
<p>Since the release of Struts 1.0, a number of important bugs have been
fixed, and some notable improvements have been made to the documentation.
Currently, these updates are available only to those people who are willing
to obtain the source code from CVS and build their own version of Struts.
This release will make these updates available in an official distribution,
thus making them available to a wider audience.</p>
<p>Therefore, the following release plan is proposed for Struts 1.0.1:
</p>
<ul>
<li><em>Code Freeze / Tag Date</em> - Wednesday, November 21, 2001</li>
<li><em>Release Manager</em> - Martin Cooper</li>
<li><em>Release Announcement</em> - To the following mailing lists and
web sites:
<ul>
<li>[EMAIL PROTECTED]</li>
<li>[EMAIL PROTECTED]</li>
<li>[EMAIL PROTECTED]</li>
<li>[EMAIL PROTECTED]</li>
<li>[EMAIL PROTECTED]</li>
<li><a href="http://www.freshmeat.net">http://www.freshmeat.net</a></li>
</ul></li>
</ul>
</section>
<section name="Release Criteria" href="Criteria">
<p>Prior to the release of Struts 1.0.1, the following action items
must be completed:</p>
<ul>
<li>The Struts 1.0.1 Release Notes document shall be updated to describe
substantial changes and improvements since the Struts 1.0 release,
along with associated updates to the main Struts Documentation
Application pages describing the new release.</li>
<li>All of the Struts example applications that are included with the release
shall operate successfully in the following servlet containers:
<ul>
<li><a href="http://jakarta.apache.org/tomcat">Tomcat 3.2.3</a></li>
<li><a href="http://jakarta.apache.org/tomcat">Tomcat 4.0.1</a></li>
</ul></li>
<li>A release vote shall take place on the <em>struts-dev</em> mailing list
to approve this plan. The release vote MUST pass by "Majority Approval"
of Struts committers.</li>
</ul>
</section>
</body>
</document>
1.1 jakarta-struts/doc/proposals/project.xml
Index: project.xml
===================================================================
<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="Struts Framework"
href="http://jakarta.apache.org/struts"
image="images/struts.gif">
<title>Struts Framework</title>
<menu name="Welcome">
<item name="Home" href="../index.html"/>
<item name="News & Status" href="../news_2002.html"/>
<item name="Kickstart FAQ" href="../kickstart.html"/>
<item name="Resources" href="../resources.html"/>
<item name="Who We Are" href="../volunteers.html"/>
</menu>
<menu name="Downloads">
<item name="Binaries"
href="http://jakarta.apache.org/site/binindex.html"/>
<item name="Source Code"
href="http://jakarta.apache.org/site/sourceindex.html"/>
</menu>
<menu name="Stable Release (1.0.2)">
<item name="User Guide"
href="http://jakarta.apache.org/struts/doc-1.0.2/index.html"/>
<item name="Javadoc"
href="http://jakarta.apache.org/struts/doc-1.0.2/api/index.html"/>
<item name="Release Notes"
href="http://jakarta.apache.org/struts/doc-1.0.2/release-notes-1.0.2.html"/>
<item name="Installation"
href="http://jakarta.apache.org/struts/doc-1.0.2/installation.html"/>
</menu>
<menu name="Nightly Build">
<item name="User Guide"
href="../userGuide/index.html"/>
<item name="Javadoc"
href="../api/index.html"/>
<item name="Release Notes"
href="../userGuide/release-notes.html"/>
<item name="Installation"
href="../userGuide/installation.html"/>
<item name="Workflow Proposal"
href="workflow.html"/>
<item name="Wish List"
href="todo-1.1.html"/>
</menu>
</project>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>