Author: craigmcc
Date: Fri Jun 10 22:29:58 2005
New Revision: 190078

URL: http://svn.apache.org/viewcvs?rev=190078&view=rev
Log:
Add the beginnings of the Shale Framework web site, and the merest outline
of the web site for the Struts-JSF integration library.

Added:
    struts/core/trunk/doc/faces/
    struts/core/trunk/doc/faces/index.xml
    struts/core/trunk/doc/faces/project.xml
    struts/core/trunk/doc/shale/
    struts/core/trunk/doc/shale/features.xml
    struts/core/trunk/doc/shale/index.xml   (with props)
    struts/core/trunk/doc/shale/project.xml
Modified:
    struts/core/trunk/doc/project.xml

Added: struts/core/trunk/doc/faces/index.xml
URL: 
http://svn.apache.org/viewcvs/struts/core/trunk/doc/faces/index.xml?rev=190078&view=auto
==============================================================================
--- struts/core/trunk/doc/faces/index.xml (added)
+++ struts/core/trunk/doc/faces/index.xml Fri Jun 10 22:29:58 2005
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<document url="index.html">
+
+  <properties>
+    <title>Struts and JavaServer Faces Interation Library</title>
+  </properties>
+
+  <body>
+
+
+    <section name="Struts-Faces Welcome" href="welcome">
+
+      <p>FIXME - Welcome to the Struts-Faces Integration Library.</p>
+
+    </section>  
+
+
+    <section name="Struts-Faces Download" href="download">
+
+      <p>Nightly builds of the Struts-Faces Integration Library are available 
from
+      <a href="http://cvs.apache.org/builds/struts/nightly/struts-faces/";>
+      http://cvs.apache.org/builds/struts/nightly/struts-faces/</a>.</p>
+
+    </section>
+
+
+    <section name="Struts-Faces Issue Tracking" href="issue">
+
+      <p>Please report any bugs, or log any enhancement requests, in the
+      <a href="http://issues.apache.org/bugzilla";>Apache Issue Tracking 
System</a>,
+      using product <code>Struts</code> and component
+      <code>Struts-Faces Library</code>.</p>
+
+    </section>
+
+
+  </body>
+
+</document>

Added: struts/core/trunk/doc/faces/project.xml
URL: 
http://svn.apache.org/viewcvs/struts/core/trunk/doc/faces/project.xml?rev=190078&view=auto
==============================================================================
--- struts/core/trunk/doc/faces/project.xml (added)
+++ struts/core/trunk/doc/faces/project.xml Fri Jun 10 22:29:58 2005
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project name="Struts Framework"
+         href="http://struts.apache.org/bsf";
+        image="images/struts.gif">
+
+    <title>Struts and JavaServer Faces Integration Library</title>
+
+    <menu name="Struts-Faces">
+        <item name="Welcome"            href="index.html#welcome"/>
+        <item name="Download"           href="index.html#download"/>
+        <item name="Issue Tracking"     href="index.html#issue"/>
+    </menu>
+
+    <menu name="Quick Links">
+        <item name="Struts"             href="../index.html"/>
+        <item name="JavaServer Faces"   
href="http://java.sun.com/j2ee/javaserverfaces"/>
+        <item name="Shale Framework"    href="../shale/index.html"/>
+    </menu>
+
+</project>
+
+
+
+
+
+

Modified: struts/core/trunk/doc/project.xml
URL: 
http://svn.apache.org/viewcvs/struts/core/trunk/doc/project.xml?rev=190078&r1=190077&r2=190078&view=diff
==============================================================================
--- struts/core/trunk/doc/project.xml (original)
+++ struts/core/trunk/doc/project.xml Fri Jun 10 22:29:58 2005
@@ -41,6 +41,14 @@
             href="bsf/index.html"
             />
         <item
+            name="JavaServer Faces Integration"
+            href="faces/index.html"
+            />
+        <item
+            name="Shale Framework"
+            href="shale/index.html"
+            />
+        <item
             name="Struts Flow"
             href="flow/index.html"
             />

Added: struts/core/trunk/doc/shale/features.xml
URL: 
http://svn.apache.org/viewcvs/struts/core/trunk/doc/shale/features.xml?rev=190078&view=auto
==============================================================================
--- struts/core/trunk/doc/shale/features.xml (added)
+++ struts/core/trunk/doc/shale/features.xml Fri Jun 10 22:29:58 2005
@@ -0,0 +1,443 @@
+<?xml version="1.0"?>
+<document url="index.html">
+
+  <properties>
+    <title>Shale Framework Features</title>
+  </properties>
+
+  <body>
+
+
+    <section name="Shale View Controller" href="view">
+
+
+      <subsection name="Introduction"   href="view-introduction">
+
+        <p>Shale supports a mechanism that provides a 1:1 relationship between
+        a view tier presentation technology, which is responsible for creating
+        an HTTP response (such as a JSP page), and a corresponding JavaBean 
class
+        containing event handling logic, (optionally) values used in the 
dynamic
+        rendering of the response, and (optionally) bindings to the individual
+        user interface components included in the response page.  Such a 
JavaBean
+        class is known (in JavaServer Faces terminology) as a <em>backing 
bean</em>.
+        In most circumstances, such a bean will be registered as a managed bean
+        (configured for creation in request scope).</p>
+
+        <p>JavaServer Faces does not require that a backing bean implement any
+        particular interface, or extend any particular base class.  Therefore,
+        Shale does not impose any such restriction either.  Instead, it 
promises
+        that <em>if</em> an application's backing bean implements the
+        <code>ViewController</code> interface, then certain extra services will
+        be provided "for free."</p>
+
+      </subsection>
+
+
+      <subsection name="Provided Services" href="view-services">
+
+        <p>Each backing bean that implements <code>ViewController</code> will
+        support a boolean property <code>postback</code>, which will be set to
+        <code>true</code> if this view is the one that is processing a form
+        submit previously rendered by the same page, or <code>false</code> if
+        this view was newly navigated to.  The property will be set before any
+        of the lifecycle methods described below are called, so that 
application
+        logic may perform conditional tasks based on this state.</p>
+        
+        <p>As part of the standard JavaServer Faces managed beans processing, 
any
+        <code>&lt;managed-property&gt;</code> elements in the configuration
+        file, that are nested inside the <code>&lt;managed-bean&gt;</code>
+        element for this backing bean, will also be processed when a new bean
+        instance is created.  You can use either literal values or value 
binding
+        expressions to customize properties on your backing bean class.  Fans
+        of <em>Dependency Injection</em> will see that the managed beans 
facility
+        provides support for such a framework, using Setter Injection as the
+        mechanism for injecting dependencies.</p>
+
+        <p>In addition, the following lifecycle events are called, by the
+        framework, at certain points in the JavaServer Faces request processing
+        lifecycle:</p>
+
+        <ul>
+        <li><strong>init()</strong> - Called immediately after the view that
+            this backing bean is associated with is created.  (Technically, it
+            happens when <code>ViewManager.createView()</code> is called.)
+            For a postback, this happens during the <em>Restore View</em>
+            phase of the request processing lifecycle, once it ha been
+            determined which view should be restored.  If your application
+            navigates from one page to another, the <code>init()</code> method
+            of the second page will be called as part of the
+            <code>NavigationHandler.handleNavigation()</code> processing.
+            <blockquote>
+              Use this method to acquire resources that you will need, no
+              matter whether this is a postback request, a rendering request,
+              or both.
+            </blockquote></li>
+        <li><strong>preprocess()</strong> - Called after the <em>Restore 
View</em>
+            phase has been completed, but before <em>Apply Request Values</em>
+            phase starts, <strong>only</strong> for the view that will be
+            processing the postback.
+            <blockquote>
+              Use this method to acquire resources (such as database 
connections)
+              that you will need to process the postback.
+            </blockquote></li>
+        <li><strong>prerender()</strong> - Called immediately before the
+            <em>Render Response</em> phase that actually causes the view to
+            be rendered.  This method will <strong>only</strong> be called for
+            the view that is actually rendered (the current view if you are
+            redisplaying, or the new view if you perform navigation).
+            <blockquote>
+              Use this method to acquire resources (such as database 
connections,
+              or performing queries) that you will need if this view is the one
+              to be rendered.  NOTE - when portlet support is integrated, all 
of
+              the portlets on the current page will receive this event.
+            </blockquote></li>
+        <li><strong>destroy()</strong> - If <code>init()</code> was ever called
+            for a <code>ViewController</code>, then it is guaranteed that
+            <code>destroy()</code> will be called as well.
+            <blockquote>
+              Use this method to release any resources acquired during an 
earlier
+              event handler.
+            </blockquote></li>
+        </ul>
+
+        <p>It can be difficult initially to visualize the order that events 
will
+        occur, based solely on the descriptions above.  Let's look at some
+        common scenarios and see what happens when:</p>
+        
+        <ul>
+        <li><em>Initial navigation to welcome page, or a page directly accessed
+            via a URL</em>:
+            <ul>
+            <li>Backing bean is instantiated during <em>Restore View</em> 
phase,
+                which notices that there is no previous state to restore.</li>
+            <li>The <code>setPostback(false)</code> and <code>init()</code> 
methods
+                on your backing bean are called.</li>
+            <li>Because there is no previous state to restore, there will be no
+                form submit processing.</li>
+            <li>The <code>prerender()</code> method is called.</li>
+            <li>Standard <em>Render Response</em> phase processing occurs,
+                which causes the view to be rendered.</li>
+            <li>The <code>destroy()</code> method is called.</li>
+            </ul></li>
+        <li><em>Postback processed by a page that then redisplays itself (by
+            returning <code>null</code> from the action handler.</em>:
+            <ul>
+            <li>Backing bean is instantiated during <em>Restore View</em> 
phase,
+                which notices that there is previous state to restore.</li>
+            <li>The <code>setPostback(true)</code> and <code>init()</code> 
methods
+                on your backing bean are called.</li>
+            <li>Standard <em>Apply Request Values</em> through <em>Invoke
+                Application</em> phase processing occurs, which includes 
calling
+                your action and value change event handlers.</li>
+            <li>The <code>prerender()</code> method is called.</li>
+            <li>Standard <em>Render Response</em> phase processing occurs,
+                which causes the view to be rendered.</li>
+            <li>The <code>destroy()</code> method is called.</li>
+            </ul></li>
+        <li><em>Postback processed by page A, which then navigates to page 
B</em>:
+            <ul>
+            <li>Backing bean for page A is instantiated during <em>Restore 
View</em>
+                phase, which notices that there is previous state to 
restore.</li>
+            <li>The <code>setPostback(true)</code> and <code>init()</code> 
methods
+                on your backing bean for page A are called.</li>
+            <li>Standard <em>Apply Request Values</em> through <em>Invoke
+                Application</em> phase processing occurs for page A, which
+                includes calling your action and value change event 
handlers.</li>
+            <li>As part of the navigation process, the backing bean for
+                page B is created.</li>
+            <li>The <code>prerender()</code> method for page B is called.</li>
+            <li>Standard <em>Render Response</em> phase processing occurs,
+                which causes the view to be rendered.</li>
+            <li>The <code>destroy()</code> method is called for both page B
+                and page A (since two backing beans were instantiated).</li>
+            </ul></li>
+        </ul>
+
+      </subsection>
+
+
+      <subsection name="Using View Controller" href="view-using">
+
+        <p>For each JavaServer Faces <em>view</em> that you wish to associate
+        with a <code>ViewController</code> backing bean, you must:</p>
+
+        <ul>
+          <li>Implement the <code>ViewController</code> interface.  The
+              most convenient way to do this is likely to be extending the
+              convenience base class 
(<code>org.apache.shale.view.ViewController</code>).</li>
+          <li>As required by the JavaBeans specification, provide a no-args
+              public constructor.</li>
+          <li>Declare your backing bean as a managed bean.  In nearly all
+              circumstances, you will want the bean to be placed in
+              request scope.</li>
+          <li>(Optional) Provide public JavaBean properties that may be set
+              to customize the functionality provided by this bean.  Typically,
+              such properties will be configured based on the managed beans
+              configuration defined in the JavaServer Faces configuration
+              resources for your application.</li>
+          <li>Ensure that the functionality of your backing bean is
+              <strong>not</strong> dependent upon the order in which property
+              setters are called, since managed beans are configured via
+              the "setter injection" pattern.</li>
+          <li>Create event handlers for the lifecycle events of interest,
+              plus standard JavaServer Faces event handlers for things like
+              actions and value changes.</li>
+          <li>(Optional but recommended) write a corresponding JUnit test
+              case using the Shale <a href="features.html#test">Test 
Framework</a>.
+              Because nearly all of your property and event handling methods
+              have no JavaServer Faces API dependencies for their parameter
+              signatures, it is generally quite easy to write such tests.</li>
+        </ul>
+
+      </subsection>
+
+
+    </section>
+
+
+    <section name="Shale Dialog Manager" href="dialog">
+
+
+      <subsection name="Introduction"   href="dialog-introduction">
+
+        <p>One of the frustrating aspects of organizing the flow of control
+        in a web based application is that fact that it is composed of
+        completely disconnected interactions with the client (via the
+        HTTP protocol).  The popularity of application frameworks based
+        on model-view-controller (MVC) principles, and particularly the
+        emergence of the <em>front controller</em> design pattern, have
+        become the de facto standard architectural approach.</p>
+
+        <p>Like other frameworks, JavaServer Faces supports a mechanism
+        to define navigation rules for transitions between views.  The
+        actual processing is performed by an implementation of
+        the <code>javax.faces.application.NavigationHandler</code>.  The
+        standard implementation provided by the framework (which can be
+        customized via a pluggable API) performs transitions from one view
+        to another based on three inputs:</p>
+
+        <ul>
+        <li>What view is currently processing this form submit?</li>
+        <li>Which of the potentially several actions were invoked?  (This
+            allows you to support different "submit" buttons with different
+            functionality, or share actions between, say, a "Save" button
+            at the top and bottom of a table.)</li>
+        <li>What "logical outcome" was returned by the action that was
+            invoked?</li>
+        </ul>
+
+        <p>Basing navigation on outcomes, by the way, assists in reducing
+        the coupling between pages, because the developer that writes the
+        action method is only focused on reporting "what happened" rather
+        than worrying about "where do I go next".  This concept is also
+        found in the way Struts has <code>Action.execute()</code> methods
+        that return a logical <code>ActionForward</code> describing the
+        outcome of performing the action.</p>
+
+        <p>However, it is still difficult to reuse individual views in
+        more than one "conversation" or "dialog" with the user, nor to
+        treat one dialog as a "black box" subroutine that can be called by
+        more than one calling dialog.  To address these needs, Shale
+        offers Dialog Manager support.</p>
+
+        <p>The functionality of this feature was <strong>heavily</strong>
+        inspired by the implementation of Spring Webflow (Preview 2),
+        whose home page is:</p>
+        <blockquote>
+        <a 
href="http://opensource.atlassian.com/confluence/spring/display/WEBFLOW/Home";>
+        
http://opensource.atlassian.com/confluence/spring/display/WEBFLOW/Home</a>
+        </blockquote>
+
+      </subsection>
+
+
+      <subsection name="Services Provided" href="dialog-services">
+
+        <p>Conceptually, a <em>dialog</em> can be thought of as a set of 
labelled
+        states, connected by labelled transitions between those states.  
Indeed,
+        a UML <em>State Diagram</em> is a popular way to represent the
+        architecture of such a dialog.  Each dialog has a specified starting
+        state (with an automatic transition to this state when the dialog is
+        first started), and one or more ending states.</p>
+
+        <p>Shale supports four state types, with specific implementations
+        realized as described below.</p>
+
+        <ul>
+        <li><em>ActionState</em> - Represents a call to a public method, taking
+            no parameters, and returning a String that will be treated as the
+            logical outcome.  The method to be called is configured with a
+            JavaServer Faces <em>method binding expression</em>, which means
+            you can leverage the managed beans facility to instantiate your
+            processing classes on demand.  The logical outcome is used to
+            drive the transition to the next state, as described below.</li>
+        <li><em>ViewState</em> - Represents the rendering of a JavaServer Faces
+            <em>view</em>, followed by a wait for the subsequent form submit.
+            The logical outcome returned by the action method (typically on
+            the <code>ViewController</code> bean that you've associated with
+            the current page) is used to drive the transition to the next
+            state, as described below.</li>
+        <li><em>SubdialogState</em> - Represents pushing the state of the
+            current dialog onto a stack, and starting a specified new dialog
+            at its starting state.  When the subordinate dialog returns, the
+            calling dialog is resumed, with the logical outcome returned by
+            the subordinate dialog is used to drive the transition to the next
+            state, as described below.</li>
+        <li><em>EndState</em> - Terminates the current dialog (popping the
+            stack if we are inside a subdialog), and returns a logical outcome
+            (to drive transition) in one of two ways:
+            <ul>
+            <li>If a view identifier was configured, cause that view to be
+                rendered and return the logical outcome from the application
+                action that is invoked (just like a ViewState, but also
+                terminates the dialog).</li>
+            <li>If no view identifier was configured (meaning that the parent
+                dialog will be responsible for rendering the response to the
+                current request), simply return the logical outcome that
+                caused this EndState to be selected.</li>
+            </ul></li>
+        </ul>
+
+        <p>Transitions between states are performed by consulting the set of
+        <em>Transition</em>s that have been defined (either locally for this
+        State, or globally for the entire Dialog), matching on logical outcome.
+        The matching Transition is then used to select the identifier of the
+        next state to be performed (which can be of any type).</p>
+
+        <p>It is <strong>not</strong> required that all JavaServer Faces
+        interactions be organized into dialogs -- you can have a mix of
+        dialog and standard navigation processing.  Indeed, to enter a
+        dialog in the first place, simply have one of your standard action
+        methods return a logical outcome of <strong>dialog:xxxxx</strong>,
+        which will cause the dialog named <code>xxxxx</code> to be entered
+        at its starting state.  Once that dialog completes, standard
+        JavaServer Navigation will resume.</p>
+
+        <p>The configuration of a Dialog is represented as a tree of
+        JavaBeans defined in the <code>org.apache.shale.dialog</code>code>
+        package, rooted at an instance <code>Dialog</code>.  The set of
+        all known <code>Dialog</code> instances is stored in a 
<code>Map</code>,
+        keyed by dialog identifier, which is stored in an application scope
+        attribute named by symbolic constant <code>Globals.DIALOGS</code>.
+        The <code>Dialog</code> instances may be configured by any desired
+        mechanism; however, the most commonly used will likely be an XML
+        document that conforms to a DTD provided by Shale.</p>
+
+      </subsection>
+
+
+      <subsection name="Using Dialog Manager" href="dialog-using">
+
+        <p>To use the Dialog Manager facilities in Shale, take the following
+        steps:</p>
+
+        <ul>
+        <li>Model your dialog as a series of <em>State</em>s with transitions
+            between them labelled with the logical outcome that selects
+            that particular transition.  A UML State Diagram is a very useful
+            mechanism for visualizing such a model.</li>
+        <li>Build the views (and corresponding <code>ViewController</code> 
beans)
+            that comprise your dialog, using standard JavaServer Faces and
+            (optional) Shale <code>ViewController</code> facilities.</li>
+        <li>Define your dialogs in an XML document, conventionally named
+            <code>/WEB-INF/dialog-config.xml</code>, that conforms to the
+            required DTD, which defines all the state transitions:
+            <blockquote><pre>
+&lt;!DOCTYPE dialogs PUBLIC
+  "-//Apache Software Foundation//DTD Shale Dialog Configuration 1.0//EN"
+  "http://struts.apache.org/dtds/shale-dialog-config-1_0.dtd";>
+
+&lt;dialogs>
+
+  &lt;dialog name="First Dialog Name" start="Start State Id">
+    ... &lt;action/>, &lt;view/>, &lt;subdialog/>, and &lt;exit/> elements for 
states ...
+  &lt;/dialog>
+
+  &lt;dialog name="Second Dialog Name" start="Start State Id">
+    ... &lt;action/>, &lt;view/>, &lt;subdialog/>, and &lt;exit/> elements for 
states ...
+  &lt;/dialog>
+
+  ...
+
+&lt;/dialogs>
+</pre></blockquote></li>
+        <li>If you have more than one dialog configuration file, or you have
+            defined your only dialog configuration file as a web application
+            resource with a name different than the one described above, use
+            a context initiaization parameter to define a comma-delimited list
+            of context-relative paths to configuration resources to be loaded:
+            <blockquote><pre>
+&lt;context-param>
+  &lt;param-name>org.apache.shale.dialog.CONFIGURATION&lt;/param-name>
+  &lt;param-value>/WEB-INF/foo.xml,/WEB-INF/bar.xml&lt;/param-value>
+&lt;/context-param>
+</pre></blockquote></li>
+        <li>In addition to the dialog configuration resources defined by this
+            context initialization parameter, a resource named
+            <code>/WEB-INF/dialog-config.xml</code> will be automatically
+            processed, if it exists.</li>
+<!--
+        <li>Alternatively, or in addition to the above, any JAR file in
+            <code>/WEB-INF/lib</code> will be scanned for configuration
+            documents at <code>META-INF/dialog-config.xml</code>.  Such
+            resources will be automatically processed, making it easy to
+            define JAR files with dialog configurations and corresponding
+            Java classes and resources, which are recognized simply by
+            including this JAR file in the application.</li>
+-->
+        <li>To initiate a dialog named "xxxxx", configure one of your standard
+            JavaServer Faces actions to return a logical outcome of
+            <code>dialog:xxxxx</code></li>
+        </ul>
+
+      </subsection>
+
+
+    </section>
+
+
+    <section name="Shale Application Manager" href="application">
+
+      <p>FIXME - Describe application manager feature.</p>
+
+    </section>
+
+
+    <section name="Shale Validation"          href="validation">
+
+      <p>FIXME - Describe validation feature.</p>
+
+    </section>
+
+
+    <section name="Shale Remoting"            href="remoting">
+
+      <p>FIXME - Describe remoting feature.</p>
+
+    </section>
+
+
+    <section name="Shale Spring Integration"  href="spring">
+
+      <p>FIXME - Describe Spring integration feature.</p>
+
+    </section>
+
+
+    <section name="Shale Reusable Views"      href="clay">
+
+      <p>FIXME - Describe Clay plugin feature.</p>
+
+    </section>
+
+
+    <section name="Shale Test Framework"      href="test">
+
+      <p>FIXME - Describe Test Framework feature.</p>
+
+    </section>
+
+
+  </body>
+
+</document>

Added: struts/core/trunk/doc/shale/index.xml
URL: 
http://svn.apache.org/viewcvs/struts/core/trunk/doc/shale/index.xml?rev=190078&view=auto
==============================================================================
--- struts/core/trunk/doc/shale/index.xml (added)
+++ struts/core/trunk/doc/shale/index.xml Fri Jun 10 22:29:58 2005
@@ -0,0 +1,115 @@
+<?xml version="1.0"?>
+<document url="index.html">
+
+  <properties>
+    <title>Shale Framework</title>
+  </properties>
+
+  <body>
+
+
+    <section name="Shale Framework"      href="background">
+
+      <p>FIXME - Shale Framework background.  While waiting for this section
+      to be completed, the <a 
href="http://people.apache.org/~craigmcc/struts-shale-README.html";>
+      Original Shale Proposal</a> makes for interesting reading.</p>
+
+    </section>
+
+
+    <section name="Shale Features"       href="features">
+
+      <p>The major features of the Shale Framework are described in the
+      following detail sections:</p>
+
+      <ul>
+        <li><a href="features.html#view">View Controller</a> - Convenient
+            mechanism to associate a "backing" Java class with each
+            JavaServer Faces <em>view</em> in an application, with predefined
+            event handers for events significant to an application 
developer.</li>
+        <li><a href="features.html#dialog">Dialog Manager</a> - Mechanism to
+            define a "conversation" with a user that requires multiple HTTP
+            requests to implement, modeled as a state diagram.</li>
+        <li><a href="features.html#application">Application Manager</a> -
+            Traditional application wide front controller features that should
+            be applied to every request.</li>
+        <li><a href="features.html#validation">Validation</a> - Integration 
with
+            the <a href="http://jakarta.apache.org/commons/validator/";>
+            Jakarta Commons Validator Framework</a>, supporting both client 
side
+            and server side validations based on a single set of configured
+            validation rules.</li>
+        <li><a href="features.html#remoting">Remoting</a> - Server side support
+            for applications that employ <a 
href="http://wikipedia.org/wiki/AJAX";>
+            AJAX</a> (Asynchronous JavaScript and XML) style interactions.</li>
+        <li><a href="features.html#spring">Spring Integration</a> - Integration
+            with the <a href="http://www.springframework.org";>Spring 
Framework</a>,
+            allowing the use of Spring's dependency injection framework to 
create
+            JavaServer Faces managed beans.</li>
+        <li><a href="features.html#clay">Reusable Views</a> - An innovative
+            sub-framework for supporting the configuration of reusable subtrees
+            of JavaServer Faces components for customizable reuse.</li>
+        <li><a href="features.html#test">Test Framework</a> - Set of mock 
objects
+            and <a href="junit.org">JUnit</a> test case base classes suitable 
for
+            testing both the framework classes themselves, as well as 
application
+            components built on top of the framework.</li>
+      </ul>
+
+    </section>
+
+
+    <section name="Shale Download"       href="download">
+
+      <p>Nightly builds of Shale are available from
+      <a href="http://cvs.apache.org/builds/struts/nightly/struts-shale/";>
+      http://cvs.apache.org/builds/struts/nightly/struts-shale/</a>.
+      For convenience, there are four available packages:</p>
+
+      <ul>
+      <li><a 
href="http://cvs.apache.org/builds/struts/nightly/struts-shale/core-library/";>
+          Core Library</a> - The fundamental core of Shale, required for
+          all applications using the framework.</li>
+      <li><a 
href="http://cvs.apache.org/builds/struts/nightly/struts-shale/clay-plugin/";>
+          Clay Plug-In</a> - Library supporting reusable view fragments.</li>
+      <li><a 
href="http://cvs.apache.org/builds/struts/nightly/struts-shale/test-framework/";>
+          Test Framework</a> - Library of mock objects and convenience base
+          classes for JUnit test cases, suitable for testing both the framework
+          itself and the components of applications built on top of Shale.</li>
+      <li><a 
href="http://cvs.apache.org/builds/struts/nightly/struts-shale/use-cases/";>
+          Use Cases Sample App</a> - Composite set of use case based examples
+          of Shale features.</li>
+      </ul>
+
+    </section>
+
+
+    <section name="Shale Documentation"  href="documentation">
+
+      <p>Online Javadocs for Shale (based on the SVN trunk) are
+      periodically updated at:</p>
+
+      <ul>
+      <li><a href="http://people.apache.org/~craigmcc/shale-core-javadocs/";>
+          Core Library</a>.</li>
+      <li><a href="http://people.apache.org/~craigmcc/shale-clay-javadocs/";>
+          Clay Plug-In</a>.</li>
+      <li><a href="http://people.apache.org/~craigmcc/shale-test-javadocs/";>
+          Test Framework</a>.</li>
+      <li><a 
href="http://people.apache.org/~craigmcc/shale-usecases-javadocs/";>
+          Use Cases Sample App</a>.</li>
+      </ul>
+
+    </section>
+
+
+    <section name="Shale Issue Tracking" href="issue">
+
+      <p>Please report any bugs, or log any enhancement requests, in the
+      <a href="http://issues.apache.org/bugzilla";>Apache Issue Tracking 
System</a>,
+      using product <code>Struts</code> and component <code>Shale</code>.</p>
+
+    </section>
+
+
+  </body>
+
+</document>

Propchange: struts/core/trunk/doc/shale/index.xml
------------------------------------------------------------------------------
    svn:executable = *

Added: struts/core/trunk/doc/shale/project.xml
URL: 
http://svn.apache.org/viewcvs/struts/core/trunk/doc/shale/project.xml?rev=190078&view=auto
==============================================================================
--- struts/core/trunk/doc/shale/project.xml (added)
+++ struts/core/trunk/doc/shale/project.xml Fri Jun 10 22:29:58 2005
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project name="Struts Framework"
+         href="http://struts.apache.org/shale";
+        image="images/struts.gif">
+
+    <title>Shale Framework</title>
+
+    <menu name="Shale">
+        <item name="Background"         href="index.html#background"/>
+        <item name="Features"           href="index.html#features"/>
+        <item name="Download"           href="index.html#download"/>
+        <item name="Documentation"      href="index.html#documentation"/>
+        <item name="Issue Tracking"     href="index.html#issue"/>
+    </menu>
+
+    <menu name="Features">
+        <item name="View Controller"    href="features.html#view"/>
+        <item name="Dialog Manager"     href="features.html#dialog"/>
+        <item name="Application Manager" href="features.html#application"/>
+        <item name="Validation"         href="features.html#validation"/>
+        <item name="Remoting"           href="features.html#remoting"/>
+        <item name="Spring Integration" href="features.html#spring"/>
+        <item name="Reusable Views"     href="features.html#clay"/>
+        <item name="Test Framework"     href="features.html#test"/>
+    </menu>
+
+    <menu name="Quick Links">
+        <item name="Struts"             href="../index.html"/>
+        <item name="JavaServer Faces"   
href="http://java.sun.com/j2ee/javaserverfaces"/>
+        <item name="Struts-Faces Integration Library" 
href="../faces/index.html"/>
+    </menu>
+
+
+</project>
+
+
+
+
+
+



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to