Author: steveh
Date: Fri Mar 18 10:31:07 2005
New Revision: 158119

URL: http://svn.apache.org/viewcvs?view=rev&rev=158119
Log:
Integrating doc work from the trunk to the beta branch.

Added:
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/config/beehive-netui-config.xml
   (with props)
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_databinding.xml
   (with props)
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_datagrid.xml
   (with props)
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/popupWindows.xml
   (with props)
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/resources/images/nested_1.dia
   (with props)
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/resources/images/nested_1.png
   (with props)
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/resources/images/nested_2.dia
   (with props)
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/resources/images/nested_2.png
   (with props)
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/resources/images/pageflow_database_app_1.dia
   (with props)
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/resources/images/pageflow_database_app_1.png
   (with props)
Removed:
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/config/netui-config.xml
Modified:
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/controlsOverview.xml
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/sample_controls-blank.xml
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/sample_controls-db.xml
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/index.xml
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/jpetstore.xml
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/guide.xml
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/index.xml
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_overview.xml
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/sample_netui-blank.xml
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/tutorial_pageflow.xml
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/setup.xml
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/site.xml
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/wsm/sample_AddressBook.xml
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/wsm/sample_Dashboard.xml
    
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/wsm/sample_wsm-blank.xml

Modified: 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/controlsOverview.xml
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/controlsOverview.xml?view=diff&r1=158118&r2=158119
==============================================================================
--- 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/controlsOverview.xml
 (original)
+++ 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/controlsOverview.xml
 Fri Mar 18 10:31:07 2005
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" 
"http://forrest.apache.org/dtd/document-v13.dtd";>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" 
"http://forrest.apache.org/dtd/document-v20.dtd";>
 <document>
     <header>
         <title>Controls Overview</title>
@@ -9,24 +9,22 @@
             <title>Overview</title>
             <section>
                 <title>The Problem with J2EE: Complexity</title>
-                <p>
-J2EE provides a rich set of component types, protocols, and system services 
that can be used to assemble an application or service</p>
-                <p>
-                    <strong>
+                <p>J2EE provides a rich set of component types, protocols, and 
system services that can be used to assemble an application or service.</p>
+                <p><strong>
 As the scope of the J2EE architectural design space has grown, the complexity 
of assembling solutions has also grown.</strong>
                 </p>
                 <p>Many of the basic building blocks provide their own set of 
mechanisms for how J2EE abstractions are accessed, how usage is parameterized, 
and how resources associated with them (connections, sessions, etc) are 
managed.</p>
                 <p>
-An objective of the J2EE community is to expand beyond the Java system 
software developer that has traditionally built J2EE solutions to enfranchise a 
new type of developer: the corporate developer. The corporate developer is 
often a very strong programmer, but may have significantly less experience with 
object-oriented design, building distributed systems, and Java/J2EE.</p>
+An objective of the J2EE community is to expand beyond the Java system 
software developer who has traditionally built J2EE solutions to enfranchise a 
new type of developer: the corporate developer. The corporate developer is 
often a very strong programmer, but may have significantly less experience with 
object-oriented design, building distributed systems, and Java/J2EE.</p>
                 <p>
                     <strong>The goal is to enable a collaboration where the 
base J2EE distributed system architecture and back-end components can be 
designed and built by the J2EE system software developer, then assembled into 
exposed web user interfaces, web services, or applications by the corporate or 
application developer.
 </strong>
                 </p>
-                <p>But the complexity and diversity of J2EE client access 
models stands in direct opposition to achieving this goal. Depending upon the 
system architecture and components constructed by the system developer, the 
application developer might have to learn a variety of new technologies and 
APIs to work within the architecture.
+                <p>But the complexity and diversity of J2EE client access 
models stand in direct opposition to achieving this goal. Depending upon the 
system architecture and components constructed by the system developer, the 
application developer might have to learn a variety of new technologies and 
APIs to work within the architecture.
 </p>
                 <p>Consider a simple example: A systems developer has built a 
distributed system where synchronous services are exposed as Enterprise 
JavaBeans and asynchronous services are exposed via JMS queues. A corporate 
developer new to J2EE is tasked with building a web user interface that 
integrates with these services.
 </p>
-                <p>To accomplish his task, the corporate developer now has to 
learn how to:</p>
+                <p>To accomplish this task, the corporate developer now has to 
learn how to:</p>
                 <ul>
                     <li>Create a JNDI context and lookup resources. If 
resources are app-scoped, then how to provide the appropriate deployment 
descriptor configuration.</li>
                     <li>How to use home/business interfaces of exposed EJBs to 
access business methods, including understanding differences in usage depending 
upon whether the exposed EJBs are Stateless Session Beans, Stateful Session 
Beans, or Entity Beans.</li>
@@ -35,7 +33,7 @@
                     <li>How to properly manage the resources associated with 
the above, such that vital system resources (such as connections) are used 
efficiently and correctly. The cost of a subtle mistake can be poor system 
performance or even system failure.</li>
                 </ul>
                 <p>
-What initially appears to be a simple task in the abstract (call these EJBs or 
enqueue a message that looks like this) can devolve into hours or days or 
reading J2EE HowTo books and Javadoc API references, getting the right 
deployment descriptor values configured, and calling all the right APIs, at all 
of the right times, in the right order. In the resulting application or 
service, often the directly application-related code (i.e. calling the bean 
business method or building message contents) is a small fraction of the total 
code required to accomplish the task.</p>
+What initially appears to be a simple task in the abstract (call these EJBs or 
enqueue a message that looks like this) can devolve into hours or days of 
reading J2EE HowTo books and Javadoc API references, getting the right 
deployment descriptor values configured, and calling all the right APIs, at all 
of the right times, in the right order. In the resulting application or 
service, often the directly application-related code (i.e. calling the bean 
business method or building message contents) is a small fraction of the total 
code required to accomplish the task.</p>
                 <p>
 Here is an example of the code required to invoke a single method on an 
exposed EJB using standard J2EE APIs: </p>
                 <source>Trader trader = null;
@@ -56,7 +54,17 @@
     if (trader != null)
         trader.remove();
 }</source>
-                <p>A common solution to this problem is often to task the J2EE 
professional developer with constructing facades or custom frameworks that hide 
some of the underlying complexity and resource access mechanisms and provides 
appropriate guarantees that system resources (connections, sessions, handles, 
etc) are utilized properly. But constructing these intermediate abstractions is 
an inefficient use of (an often scarce and expensive) systems development 
resources. Depending upon the "thickness" of the intermediate abstractions, 
this approach can also have performance or application deployment footprint 
implications. </p>
+                <p>A common solution to this problem is often to 
+                                       task the J2EE professional developer 
with constructing facades or custom 
+                                       frameworks that hide some of the 
underlying complexity of the resource access 
+                                       mechanisms and provides appropriate 
guarantees that system resources 
+                                       (connections, sessions, handles, etc) 
are utilized properly. But constructing 
+                                       these intermediate abstractions is an 
inefficient use of 
+                                       (often scarce and expensive) 
+                                       systems development resources. 
Depending upon the "thickness" of the intermediate 
+                                       abstractions, 
+                                       this approach can also have performance 
or application deployment footprint 
+                                       implications. </p>
             </section>
             <section>
                 <title>Solution: Controls: A Unified Client Programming Model 
</title>
@@ -317,9 +325,10 @@
 <p>
 Contextual services can also define an event model, so contextual services can 
also declare and fire events on Controls that have registered in interest. As 
an example, a basic ControlContext contextual service is provided as part of 
the base Controls architecture. This contextual service provides common 
services for Controls, such as access to properties, as well as a set of 
lifecycle events for Controls.
 </p>
-<p>
-The discovery and implementation model for Controls Contextual Services will 
be based upon the JavaBeans Runtime Containment and Services Protocol (Glasgow) 
(<link 
href="http://java.sun.com/products/javabeans/glasgow/#containment";>http://java.sun.com/products/javabeans/glasgow/#containment</link>)
 that is already shipping as part of J2SE.
-</p>
+<p>The discovery and implementation model for Controls Contextual Services 
will be based upon the 
+       JavaBeans Runtime Containment and Services Protocol (Glasgow) 
+       (<a 
href="http://java.sun.com/products/javabeans/glasgow/#containment";>http://java.sun.com/products/javabeans/glasgow/#containment</a>)
 
+       that is already shipping as part of J2SE.</p>
             </section>
             <section>
                 <title>Resource Management</title>

Modified: 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/sample_controls-blank.xml
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/sample_controls-blank.xml?view=diff&r1=158118&r2=158119
==============================================================================
--- 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/sample_controls-blank.xml
 (original)
+++ 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/sample_controls-blank.xml
 Fri Mar 18 10:31:07 2005
@@ -22,7 +22,7 @@
         <p>The following instruction assume that you have completed the basic 
Beehive set up procedure 
                        at <a class="fork" href="../setup.html">Set Up the Dev 
Environment</a>.</p>
   <p>To use the template, copy the contents of 
<code>&lt;BeehiveRoot>/samples/controls-blank</code> into your 
-       project folder (refered to as <code>&lt;Project-Folder></code> below). 
(Or copy <code>controls-blank</code>
+       project folder (referred to as <code>&lt;Project-Folder></code> below). 
(Or copy <code>controls-blank</code>
        to another location and rename it as <code>&lt;Project-Folder></code>.) 
 
        An Ant build file is included 
        in the template, which will compile your control project into a 
distributable JAR 
@@ -31,7 +31,7 @@
 <source>&lt;Project-Folder>
   src
   build.xml</source> 
-  <p>The following Ant command will compile the control template. </p>
+  <p>The following Ant command will compile the control template.</p>
 <source>ant -f <strong>&lt;Path-to-Project-Folder></strong>\build.xml 
build</source>
     <p>This will produce a distributable JAR file at: 
<code>&lt;Project-Folder>/build/mycontrols.jar</code>.</p>
     <p>To use the JAR in your other projects (like a web app project or a web 
service project), copy 

Modified: 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/sample_controls-db.xml
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/sample_controls-db.xml?view=diff&r1=158118&r2=158119
==============================================================================
--- 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/sample_controls-db.xml
 (original)
+++ 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/controls/sample_controls-db.xml
 Fri Mar 18 10:31:07 2005
@@ -34,7 +34,13 @@
     
 <p>In this example, the title field is of type VARCHAR, so the return value is 
declared as String. </p>
 
-<p>When your method returns a single row with multiple fields, its return type 
can be a user-defined object or a java.util.HashMap object.  When the return 
type is a user-defined object,  it must contain members with names that match 
the names of the columns that will be returned by the query. Because database 
column names are case-insensitive, the matching names are case-insensitive. The 
class may also contain other members, members not matching any column names 
will not be set.  The following example declares an Employee class with members 
corresponding to fields in the Employee table. The findEmployee method returns 
an object of type Employee:</p>
+<p>When your method returns a single row with multiple fields, its return type 
can be a user-defined 
+       object or a java.util.HashMap object.  When the return type is a 
user-defined object,  it must 
+       contain members with names that match the names of the columns that 
will be returned by the query. 
+       Because database column names are case-insensitive, the matching names 
are case-insensitive. The 
+       class may also contain other members; members not matching any column 
names will not be set.  
+       The following example declares an Employee class with members 
corresponding to fields in the 
+       Employee table. The findEmployee method returns an object of type 
Employee:</p>
 
 <source>    @SQL(statement="SELECT * FROM EMPLOYEE WHERE id={id}")
     public Employee findEmployee(int id) throws SQLException;
@@ -47,8 +53,11 @@
         public String title;
     }</source>
 
-<p>When your method returns multiple rows from the database, its return type 
can be an array, a java.util.Iterator, or a java.sql.ResultSet.  </p>
-<p>When you want to return an Iterator object, you must specify the 
iteratorElementType element to the @SQL annotation to indicate the underlying 
type that the Iterator will contain.  The following example returns a iterator 
of all employees sorted by their last names.</p>
+<p>When your method returns multiple rows from the database, its return type 
can be an array, a 
+       java.util.Iterator, or a java.sql.ResultSet.  </p>
+<p>When you want to return an Iterator object, you must specify the 
iteratorElementType 
+       element to the @SQL annotation to indicate the underlying type that the 
Iterator will contain.  
+       The following example returns an iterator of all employees sorted by 
their last names.</p>
 
 <source>    @SQL(statement="SELECT * FROM EMPLOYEE ORDER BY lName", 
iteratorElementType=Employee.class, maxRows=500)
     public Iterator getEmployeesSortedByLastName() throws 
SQLException;</source>

Modified: 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/index.xml
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/index.xml?view=diff&r1=158118&r2=158119
==============================================================================
--- 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/index.xml
 (original)
+++ 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/index.xml
 Fri Mar 18 10:31:07 2005
@@ -11,7 +11,7 @@
                        <anchor id="what"/>
                        <p> Welcome to Beehive! Our goal is to make J2EE 
programming easier 
                                by building a simple object model on J2EE and 
Struts. Using the 
-                               new JSR-175 and JSR-181 metadata annotations 
Beehive reduces 
+                               new JSR-175 and JSR-181 metadata annotations, 
Beehive reduces 
                                the coding necessary for J2EE. The initial 
Beehive project has 
                                three pieces.</p>
                        <ul>
@@ -25,8 +25,8 @@
                                        with a few pre-made controls as well, 
for example, see the 
                                        <a 
href="controls/sample_controls-db.html">Database Control 
                                        Sample</a>.</li>
-                               <li>Web Services &#8211; An Implementation of 
JSR-181, an 
-                                       annotation driven programming model for 
web services.</li>
+                               <li>Web Services &#8211; An implementation of 
JSR-181, an 
+                                       annotation-driven programming model for 
web services.</li>
                        </ul>
                </section>
                <section id="news">
@@ -36,7 +36,7 @@
                                <li>Beehive has a <a class="fork" 
                                        
href="http://wiki.apache.org/beehive";>wiki</a>.</li>
                                <li>Bugs or feature requests can be filed in 
our issue tracking system: <a class="fork" 
-                                       
href="http://nagoya.apache.org/jira/secure/BrowseProject.jspa?id=10570";>jira</a></li>
+                                       
href="http://nagoya.apache.org/jira/secure/BrowseProject.jspa?id=10570";>jira</a>.</li>
                                <li><a class="fork" 
                                        
href="http://www.eclipse.org/pollinate/";>Pollinate</a> is 
                                        an Eclipse technology project building 
an IDE for the 

Modified: 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/jpetstore.xml
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/jpetstore.xml?view=diff&r1=158118&r2=158119
==============================================================================
--- 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/jpetstore.xml
 (original)
+++ 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/jpetstore.xml
 Fri Mar 18 10:31:07 2005
@@ -28,7 +28,7 @@
                        <p>Most of the Page Flows have associated Control files 
(located 
                                at: 
                                
<code>petstoreWeb/WEB-INF/src/org/apache/beehive/samples/petstore/controls/</code>).
 
-                               The Controls handle the backend data traffic 
and encupsulate 
+                               The Controls handle the backend data traffic 
and encapsulate 
                                the operations of the web application, such as 
retrieving data 
                                from a database and handling user orders.</p>
                </section>
@@ -128,7 +128,6 @@
                                <p>Open a command shell and confirm that you 
have the following variables 
                                        have been set:</p>
                                        <ul>
-                                               
<li><code>BEEHIVE_HOME</code></li>
                                                <li><code>ANT_HOME</code></li>
                                                <li><code>JAVA_HOME</code></li>
                                                
<li><code>CATALINA_HOME</code></li>
@@ -153,33 +152,50 @@
   beehive_projects
     petstoreWeb</source>
                        </section>
-                       <section id="copy_runtime">
+                       <section id="edit_properties_file"><title>Edit the 
<code>build.properties</code> File</title>
+                               <p>In this section you will edit the 
<code>build.properties</code> file--the file
+                                       that sets the build-related properties 
for your web application.</p>
+                               <p>Open the file 
<code>C:/beehive_projects/petstoreWeb/WEB-INF/src/build.properties</code>
+                                       in a text editor.</p>
+                               <p>Edit the file so that the 
<code>beehive.home</code> property points to the 
+                                       top-level folder of your beehive 
installation.  For example, if you beehive installation
+                                       resides at 
<code>C:/apache/apache-beehive-1.0</code>, then your 
<code>build.properties</code> file
+                                       would appear as follows.</p>
+                               
<source>beehive.home=<strong>C:/apache/apache-beehive-1.0</strong>
+
+servlet-api.jar=${os.CATALINA_HOME}/common/lib/servlet-api.jar
+jsp-api.jar=${os.CATALINA_HOME}/common/lib/jsp-api.jar
+
+context.path=petstoreWeb</source>
+                                       </section>
+                       
+<!--                   <section id="copy_runtime">
                                <title>To Copy the Runtime Resources</title>
                                <p>The Petstore application is distributed 
without the Beehive runtime JAR 
                                        files it needs to run.
                                        To copy the runtime JARs into the 
Petstore app, 
                                        run the following Ant command.  </p>
-                               <source>ant 
-  -f %BEEHIVE_HOME%\ant\webappRuntimeCore.xml
-  -Dwebapp.dir=C:\beehive_projects\petstoreWeb
-  deploy.beehive.webapp.runtime
+                <source>ant 
+  -f C:\beehive_projects\petstoreWeb\WEB-INF\src\build.xml
+  deploy-beehive
   
-<strong>Copy and paste version:</strong>
-ant -f %BEEHIVE_HOME%\ant\webappRuntimeCore.xml 
-Dwebapp.dir=C:\beehive_projects\petstoreWeb 
deploy.beehive.webapp.runtime</source>
+<strong>Copy and Paste version:</strong>
+ant -f C:\beehive_projects\petstoreWeb\WEB-INF\src\build.xml 
deploy-beehive</source>
                                <p>This will copy the Beehive webapp runtime 
JARs into the following location.</p>
                                <source>  
C:/beehive_projects/petstoreWeb/WEB-INF/lib</source>
-                       </section>
+                       </section>-->
                        <section id="compile">
                                <title>To Compile the Petstore 
Application</title>
                                <p>To compile the Petstore app, enter the 
following Ant 
                                        command:</p>
-                               <source>ant 
-  -f %BEEHIVE_HOME%\ant\buildWebapp.xml 
-  -Dwebapp.dir=C:\beehive_projects\petstoreWeb 
+<source>ant 
+  -f C:\beehive_projects\petstoreWeb\WEB-INF\src\build.xml
+  clean
   build
-  
-<strong>Copy and paste version:</strong>
-ant -f %BEEHIVE_HOME%\ant\buildWebapp.xml 
-Dwebapp.dir=C:\beehive_projects\petstoreWeb build</source>
+
+<strong>Copy and Paste version:</strong>
+ant -f C:\beehive_projects\petstoreWeb\WEB-INF\src\build.xml clean 
build</source>
+
                        </section>
                        <section id="start_tomcat">
                                <title>To Start Tomcat</title>
@@ -187,7 +203,7 @@
                                <source>%CATALINA_HOME%\bin\startup.bat</source>
                        </section>
                        <section id="deploy">
-                               <title>To Deploying to Tomcat</title>
+                               <title>To Deploy to Tomcat</title>
        <p>To deploy the web application, click the following link.  We 
recommend that you open the 
                link in a new browser window.  Each time you want to redeploy 
the application,
                simply refresh the browser.</p>

Added: 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/config/beehive-netui-config.xml
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/config/beehive-netui-config.xml?view=auto&rev=158119
==============================================================================
--- 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/config/beehive-netui-config.xml
 (added)
+++ 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/config/beehive-netui-config.xml
 Fri Mar 18 10:31:07 2005
@@ -0,0 +1,786 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" 
"http://forrest.apache.org/dtd/document-v20.dtd";>
+<document>
+    <header>
+        <title>Reference Documentation: beehive-netui-config.xml File</title>
+    </header>
+    <body>
+        <section id="desc">
+            <title>Description</title>
+            <p>
+            The <code>beehive-netui-config.xml</code> file configures the 
runtime behavior of your Page Flow web 
+            app.  
+        </p>
+        <p>Use <code>beehive-netui-config.xml</code> to declare interceptor 
classes, override the default handler classes,
+        etc.</p>
+        </section>
+               <section id="structure">
+                       <title>General Structure</title>
+<source><a href="#netui-config">&lt;netui-config></a>
+  <a href="#legacy-tag-support">&lt;legacy-tag-support></a>
+  <a href="#expression-languages">&lt;expression-languages></a>
+    <a href="#expression-language">&lt;expression-language></a>
+      <a href="#default-language">&lt;default-language></a>
+      <a href="#name">&lt;name></a>
+      <a href="#factory-class">&lt;factory-class></a>
+      <a href="#binding-contexts">&lt;binding-contexts></a>
+        <a href="#binding-context">&lt;binding-context></a>
+          <a href="#name">&lt;name></a>
+          <a href="#factory-class">&lt;factory-class></a>    
+  <a href="#pageflow-action-interceptors">&lt;pageflow-action-interceptors></a>
+    <a href="#global">&lt;global></a>
+      <a href="#simple-action-interceptor">&lt;simple-action-interceptor></a>
+        <a href="#intercept-path">&lt;intercept-path></a>
+        <a href="#after-action">&lt;after-action></a>
+      <a href="#action-interceptor">&lt;action-interceptor></a>
+        <a href="#interceptor-class">&lt;interceptor-class></a>
+        <a href="#custom-property">&lt;custom-property></a>
+          <a href="#name">&lt;name></a>
+          <a href="#value">&lt;value></a>
+    <a href="#per-pageflow">&lt;per-pageflow></a>
+      <a href="#pageflow-uri">&lt;pageflow-uri></a>
+      <a href="#simple-action-interceptor">&lt;simple-action-interceptor></a>
+        <a href="#intercept-path">&lt;intercept-path></a>
+        <a href="#after-action">&lt;after-action></a>
+      <a href="#action-interceptor">&lt;action-interceptor></a>
+        <a href="#interceptor-class">&lt;interceptor-class></a>
+        <a href="#custom-property">&lt;custom-property></a>
+      <a href="#per-action">&lt;per-action></a>
+        <a href="#action-name">&lt;action-name></a>
+        <a href="#simple-action-interceptor">&lt;simple-action-interceptor></a>
+          <a href="#intercept-path">&lt;intercept-path></a>
+          <a href="#after-action">&lt;after-action></a>
+        <a href="#action-interceptor">&lt;action-interceptor></a>
+          <a href="#interceptor-class">&lt;interceptor-class></a>
+          <a href="#custom-property">&lt;custom-property></a>
+  <a href="#pageflow-handlers">&lt;pageflow-handlers></a>
+    <a href="#login-handler-class">&lt;login-handler-class></a>
+    <a 
href="#forward-redirect-handler-class">&lt;forward-redirect-handler-class></a>
+    <a 
href="#reloadable-class-handler-class">&lt;reloadable-class-handler-class></a>
+    <a href="#exceptions-handler-class">&lt;exceptions-handler-class></a>
+  <a href="#pageflow-config">&lt;pageflow-config></a>
+    <a href="#enable-renesting">&lt;enable-renesting></a>
+    <a href="#max-forwards-per-request">&lt;max-forwards-per-request></a>
+    <a href="#max-nesting-stack-depth">&lt;max-nesting-stack-depth></a>
+    <a href="#ensure-secure-forwards">&lt;ensure-secure-forwards></a>
+    <a 
href="#throw-session-expired-exception">&lt;throw-session-expired-exception></a>
+    <a href="#multipart-handler">&lt;multipart-handler></a>
+    <a href="#module-config-locators">&lt;module-config-locators></a>
+      <a href="#description">&lt;description></a>
+      <a href="#locator-class">&lt;locator-class></a>
+  <a href="#type-converters">&lt;type-converters></a>
+    <a href="#type-converter">&lt;type-converter></a>
+      <a href="#type">&lt;type></a>
+      <a href="#converter-class">&lt;converter-class></a>
+  <a href="#jsp-tag-config">&lt;jsp-tag-config></a>
+    <a href="#doctype">&lt;doctype></a>
+    <a href="#id-javascript">&lt;id-javascript></a>
+    <a href="#tree-image-location">&lt;tree-image-location></a>
+  <a href="#iterator-factories">&lt;iterator-factories></a>
+    <a href="#iterator-factory">&lt;iterator-factory></a>
+      <a href="#name">&lt;name></a>
+      <a href="#factory-class">&lt;factory-class></a>
+  <a href="#request-interceptors">&lt;request-interceptors></a>
+    <a href="#interceptor-class">&lt;interceptor-class></a></source>
+               </section>
+        <section id="elements">
+            <title>Elements</title>
+            <section 
id="action-interceptor"><title>&lt;action-interceptor&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;action-interceptor>
+  &lt;interceptor-class> xsd:string &lt;/interceptor-class> [occurrences: 1]
+  &lt;custom-property> 
+    &lt;name> xsd:string &lt;/name> [occurrences: 1]
+    &lt;value> xsd:string &lt;/value> [occurrences: 1]  
+  &lt;/custom-property> [occurrences: 0-*]
+&lt;/action-interceptor></source>
+                               <p><strong>Parents:</strong></p>
+                               <p><a href="#global">&lt;global></a>, 
+                                       <a 
href="#per-pageflow">&lt;per-pageflow></a>, 
+                                       <a 
href="#per-action">&lt;per-action></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>
+        <a href="#interceptor-class">&lt;interceptor-class></a>,
+        <a href="#custom-property">&lt;custom-property></a></p>
+                               </section>
+        <section id="action-name"><title>&lt;action-name&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;action-name> xsd:string 
&lt;action-name> [occurrences: 1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#per-action">&lt;per-action></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+        <section id="after-action"><title>&lt;after-action&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source> &lt;after-action> xsd:boolean 
&lt;after-action> [occurrences: 0-1] </source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#intercept-path">&lt;intercept-path></a>
+                                          </p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+                               
+        <section id="binding-context"><title>&lt;binding-context&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;binding-context> [occurrences: 0-*]
+  &lt;name> xsd:string &lt;/name> [occurrences: 1]
+  &lt;factory-class> xsd:string &lt;/factory-class> [occurrences: 1]
+&lt;/binding-context></source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#binding-contexts">&lt;binding-contexts></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p><a href="#name">&lt;name></a>,
+                   <a 
href="#factory-class">&lt;factory-class></a></p></section>
+        <section id="binding-contexts"><title>&lt;binding-contexts&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;/binding-contexts> [occurrences: 
0-1]
+  &lt;binding-context> [occurrences: 0-*]
+    &lt;name> xsd:string &lt;/name> [occurrences: 1]
+    &lt;factory-class> xsd:string &lt;/factory-class> [occurrences: 1]
+  &lt;/binding-context>
+&lt;/binding-contexts></source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#expression-language">&lt;expression-language></a></p>
+                               <p><strong>Children:</strong></p>
+                                       <p><a 
href="#binding-context">&lt;binding-context></a></p></section>
+        <section id="converter-class"><title>&lt;converter-class&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;converter-class> xsd:string 
&lt;/converter-class> [occurrences: 1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#type-converter">&lt;type-converter></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+        <section id="custom-property"><title>&lt;custom-property&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;custom-property>
+  &lt;name> xsd:string &lt;/name> [occurrences: 1]
+  &lt;value> xsd:string &lt;/value> [occurrences: 1]
+&lt;/custom-property></source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#action-interceptor">&lt;action-interceptor></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p><a href="#name">&lt;name></a>, 
+                                  <a href="#value">&lt;value></a></p></section>
+        <section id="default-language"><title>&lt;default-language&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;default-language> xsd:string 
&lt;/default-language> [occurrences: 1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#expression-language">&lt;expression-language></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+        <section id="description"><title>&lt;description&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;description> xsd:string 
&lt;/description> [occurrences: 0-1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#module-config-locator">&lt;module-config-locator></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+        <section id="doctype"><title>&lt;doctype&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;doctype> [ html4-loose | 
xhtml1-transitional ] &lt;/doctype> [occurrences: 0-1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#jsp-tag-config">&lt;jsp-tag-config></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+        <section id="enable-renesting"><title>&lt;enable-renesting&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;enable-renesting> xsd:boolean 
&lt;/enable-renesting> [occurrences: 0-1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#pageflow-config">&lt;pageflow-config></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+        <section 
id="ensure-secure-forwards"><title>&lt;ensure-secure-forwards&gt;</title>
+                           <p>For some server implementations, security checks 
are executed only when an URL is called 
+                                       directly, while security checks for 
server forwards are ignored.</p>
+                               <p>When this element is set to 
<code>true</code>, server forwards are guaranteed to be checked.</p>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;ensure-secure-forwards> xsd:boolean 
&lt;/ensure-secure-forwards> [occurrences: 0-1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#pageflow-config">&lt;pageflow-config></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+        <section 
id="exceptions-handler-class"><title>&lt;exceptions-handler-class&gt;</title>
+                           <p>Typically, exceptions thrown by the controller 
class are delivered in a wrapper exception
+                                       class.  The class named here, can be 
used to unwrap these exceptions and handle
+                                       the underlying exception in a more 
fine-grained manner.</p>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;exceptions-handler-class> 
xsd:string &lt;/exceptions-handler-class> [occurrences: 0-1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#pageflow-handlers">&lt;pageflow-handlers></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+        <section 
id="expression-language"><title>&lt;expression-language&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>  &lt;expression-language> 
[occurrences: 1-*]
+    &lt;name> xsd:string &lt;/name> [occurrences: 1]
+    &lt;factory-class> xsd:string &lt;/factory-class> [occurrences: 1]
+    &lt;binding-contexts> binding-contexts &lt;/binding-contexts> 
[occurrences: 0-1]
+  &lt;/expression-language></source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#pageflow-handlers">&lt;pageflow-handlers></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p><a href="#name">&lt;name></a>,
+                                       <a 
href="#factory-class">&lt;factory-class></a>,
+                                       <a 
href="#binding-contexts">&lt;binding-contexts></a></p></section>
+        <section 
id="expression-languages"><title>&lt;expression-languages&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;expression-languages> [occurrences: 
1]
+  &lt;default-language> xsd:string &lt;/default-language> [occurrences: 1]
+  &lt;expression-language> [occurrences: 1-*]
+    &lt;name> xsd:string &lt;/name> [occurrences: 1]
+    &lt;factory-class> xsd:string &lt;/factory-class> [occurrences: 1]
+    &lt;binding-contexts> binding-contexts &lt;/binding-contexts> 
[occurrences: 0-1]
+  &lt;/expression-language> 
+&lt;/expression-languages></source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#netui-config">&lt;netui-config></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p><a 
href="#default-language">&lt;default-language></a>,
+                                       <a 
href="#expression-language">&lt;expression-language></a>
+                                       </p></section>
+        <section id="factory-class"><title>&lt;factory-class&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;factory-class> xsd:string 
&lt;/factory-class> [occurrences: 1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#binding-contexts">&lt;binding-contexts></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+        <section 
id="forward-redirect-handler-class"><title>&lt;forward-redirect-handler-class&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;forward-redirect-handler-class> 
xsd:string &lt;/forward-redirect-handler-class> [occurrences: 0-1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#pageflow-handlers">&lt;pageflow-handlers></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+        <section id="global"><title>&lt;global&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;global> [occurrences: 0-1]
+  &lt;simple-action-interceptor> 
+    &lt;intercept-path> xsd:string &lt;/intercept-path> [occurrences: 1]
+    &lt;after-action> xsd:boolean &lt;/after-action> [occurrences: 0-1]  
+  &lt;/simple-action-interceptor> [occurrences: 0-*]
+  &lt;action-interceptor> 
+    &lt;interceptor-class> xsd:string &lt;/interceptor-class> [occurrences: 1]
+    &lt;custom-property> 
+      &lt;name> xsd:string &lt;/name> [occurrences: 1]
+      &lt;value> xsd:string &lt;/value> [occurrences: 1]
+    &lt;/custom-property> [occurrences: 0-*]
+  &lt;/action-interceptor> [occurrences: 0-*]
+&lt;/global></source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#pageflow-action-interceptors">&lt;pageflow-action-interceptors></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p><a 
href="#simple-action-inteceptor">&lt;simple-action-inteceptor></a>,
+                                       <a 
href="#action-inteceptor">&lt;action-inteceptor></a></p></section>
+        <section id="id-javascript"><title>&lt;id-javascript&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;id-javascript> [ default | legacy | 
legacyOnly ] &lt;/id-javascript> [occurrences: 0-1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#jsp-tag-config">&lt;jsp-tag-config></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+        <section 
id="interceptor-class"><title>&lt;interceptor-class&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;interceptor-class> xsd:string 
&lt;interceptor-class> [occurrences: 1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#jsp-tag-config">&lt;jsp-tag-config></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+        <section id="intercept-path"><title>&lt;intercept-path&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;intercept-path> xsd:string 
&lt;/intercept-path> [occurrences: 1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#simple-action-interceptor">&lt;simple-action-interceptor></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+
+        <section 
id="iterator-factories"><title>&lt;iterator-factories&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;iterator-factories>
+  &lt;iterator-factory> [occurrences: 0-*]
+    ...
+  &lt;/iterator-factory>
+&lt;/iterator-factories></source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#netui-config">&lt;netui-config></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p><a 
href="#iterator-factory">&lt;iterator-factory></a></p></section>
+
+        <section id="iterator-factory"><title>&lt;iterator-factory&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;iterator-factory> [occurrences: 0-*]
+  &lt;name> xsd:string &lt;/name> [occurrences: 1]
+  &lt;factory-class> xsd:string &lt;/factory-class> [occurrences: 1]
+&lt;/iterator-factory></source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#iterator-factorys">&lt;iterator-factorys></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p><a href="#name">&lt;name></a>,
+                                       <a 
href="#factory-class">&lt;factory-class></a></p></section>
+
+        <section id="jsp-tag-config"><title>&lt;jsp-tag-config&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;jsp-tag-config>
+  &lt;doctype> xsd:string &lt;/doctype> [occurrences: 0-1]
+  &lt;id-javascript> [ default | legacy | legacyOnly ] &lt;/id-javascript> 
[occurrences: 0-1]
+  &lt;tree-image-location> xsd:string &lt;/tree-image-location> [occurrences: 
0-1]
+&lt;/jsp-tag-config></source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#netui-config">&lt;netui-config></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p><a href="#doctype">&lt;doctype></a>,
+                                       <a 
href="#id-javascript">&lt;id-javascript></a>,
+                                       <a 
href="#tree-image-location">&lt;tree-image-location></a>,</p></section>
+
+        <section 
id="legacy-tag-support"><title>&lt;legacy-tag-support&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;legacy-tag-support> xsd:boolean 
&lt;/legacy-tag-support> [occurrences: 0-1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#netui-config">&lt;netui-config></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+
+        <section id="locator-class"><title>&lt;locator-class&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;locator-class> xsd:string 
&lt;/locator-class> [occurrences: 1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#module-config-locators">&lt;module-config-locators></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+        <section 
id="login-handler-class"><title>&lt;login-handler-class&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;login-handler-class> xsd:string 
&lt;/login-handler-class> [occurrences: 0-1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#pageflow-handlers">&lt;pageflow-handlers></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>    
+        <section 
id="max-forwards-per-request"><title>&lt;max-forwards-per-request&gt;</title>
+                               <p>If the number of server 
+        forwards exceeds the given count, an error is written to the response 
and no further 
+        forwarding is excuted. This is mainly to prevent infinite loops of 
server forwards. 
+        To reproduce the error, invoke this action in a Page Flow:</p>
+<source>
+<![CDATA[    @Jpf.Action(
+        forwards={
+            @Jpf.Forward(name="self", path="overflow.do")
+        }
+    )
+    public Forward overflow()
+    {
+        return new Forward( "self" );
+    }]]></source>
+
+<p>If the jpf-forward-overflow-count parameter is omitted from the web.xml 
file, 
+the error will be written to the response after 50 server forwards within a 
single request. ÃÂ 
+</p>
+<p>When an application is in development, a descriptive error is sent; for 
deployed applications, a 500 response is sent.</p>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;max-forwards-per-request> xsd:int 
&lt;/max-forwards-per-request> [occurrences: 0-1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#pageflow-config">&lt;pageflow-config></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p>
+</section>
+
+        <section 
id="max-nesting-stack-depth"><title>&lt;max-nesting-stack-depth&gt;</title>
+               <p>
+        This parameter sets the maximum size of the Page Flow nesting stack. 
+        If Page Flows are repeatedly nested until the stack exceeds the 
specified value, 
+        an error is written to the response object and any further nesting is 
not allowed. 
+        This helps prevent the nesting stack from consuming large amounts of 
resources.</p>
+<p>When an application is in development, a descriptive error is sent; for 
deployed applications, a 500 response is sent.</p>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;max-nesting-stack-depth> xsd:int 
&lt;/max-nesting-stack-depth> [occurrences: 0-1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#pageflow-config">&lt;pageflow-config></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p>
+        </section>
+
+        <section 
id="module-config-locator"><title>&lt;module-config-locator&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;module-config-locator> 
[occurrences: 0-*]
+  &lt;description> xsd:string &lt;/description> [occurrences: 0-1]
+  &lt;locator-class> xsd:string &lt;/locator-class> [occurrences: 1]
+&lt;/module-config-locator></source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#module-config-locators">&lt;module-config-locators></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p><a href="#description">&lt;description></a>,
+                                       <a 
href="#locator-class">&lt;locator-class></a></p></section>
+
+        <section 
id="module-config-locators"><title>&lt;module-config-locators&gt;</title>
+                       <p>Names a class or group of classes that know the 
location of the web application's 
+                               Struts configuration files.  By default these 
configuation files are saved to 
+                               
<code>WEB-INF/.pageflow-struts-generated/</code>.  But, in cases where this 
default location
+                               has been overridden by a custom compilation 
process, use <code>&lt;module-config-locators></code> to point to a Java class 
that knows the
+                               new location.  </p>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;module-config-locators> 
[occurrences: 0-1]
+  &lt;module-config-locator> [occurrences: 0-*]
+    &lt;description> xsd:string &lt;/description> [occurrences: 0-1]
+    &lt;locator-class> xsd:string &lt;/locator-class> [occurrences: 1]
+  &lt;/module-config-locator>
+&lt;/module-config-locators></source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#pageflow-config">&lt;pageflow-config></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p><a 
href="#module-config-locator">&lt;module-config-locator></a></p></section>
+
+        <section 
id="multipart-handler"><title>&lt;multipart-handler&gt;</title>
+                           <p>By default multi-part file uploading is disabled 
for page flow web applications.
+                                       To turn it on, you must (1) explicitly 
set this element to <code>memory</code>
+                                       or <code>disk</code>, or (2) decorate a 
given controller class with 
+                                       the @Jpf.MultipartHandler annotation.   
Doing (1) will enable file uploading across 
+                                       the entire web applcation, doing (2) 
enables file uploading on a
+                                       controller-by-controller basis.</p>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;multipart-handler> [ disabled | 
memory | disk ] &lt;/multipart-handler> [occurrences: 0-1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#pageflow-config">&lt;pageflow-config></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p>
+                               <p>
+        To disable file upload, set the value to "none".
+        [todo: other values include memory, ?, ...]</p>
+        </section>
+
+        <section id="name"><title>&lt;name&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;name> xsd:string &lt;/name> 
[occurrences: 1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#expression-language">&lt;expression-language></a>,
+                                               <a 
href="#iterator-factory">&lt;iterator-factory></a>,
+                                               <a 
href="#binding-context">&lt;binding-context></a>,
+                                               <a 
href="#custom-property">&lt;custom-property></a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+
+        <section id="netui-config">
+                <title>&lt;netui-config&gt;</title>
+                               <p>
+        The top-level element in the <code>beehive-netui-config.xml</code> 
file.
+         ÃÂ </p>                             
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;netui-config>
+  &lt;legacy-tag-support> xsd:boolean &lt;/legacy-tag-support> [occurrences: 
0-1]
+  &lt;expression-languages> ... &lt;/expression-languages> [occurrences: 1]
+  &lt;pageflow-action-interceptors> ... &lt;/pageflow-action-interceptors> 
[occurrences: 0-1]
+  &lt;pageflow-handlers> ... &lt;/pageflow-handlers> [occurrences: 0-1]
+  &lt;pageflow-config> ... &lt;/pageflow-config> [occurrences: 0-1]
+  &lt;type-converters> ... &lt;/type-converters> [occurrences: 0-1]
+  &lt;jsp-tag-config> ... &lt;/jsp-tag-config> [occurrences: 0-1]
+  &lt;iterator-factories> ... &lt;/iterator-factories> [occurrences: 0-1]
+  &lt;request-interceptors> ... &lt;/request-interceptors> [occurrences: 0-1]
+&lt;/netui-config></source>
+                               <p><strong>Parents:</strong></p>
+                                       <p></p>
+                               <p><strong>Children:</strong></p>
+                               <p>  <a 
href="#legacy-tag-support">&lt;legacy-tag-support&gt;</a>,
+  <a href="#expression-languages">&lt;expression-languages&gt;</a>,
+  <a 
href="#pageflow-action-interceptors">&lt;pageflow-action-interceptors&gt;</a>,
+  <a href="#pageflow-handlers">&lt;pageflow-handlers&gt;</a>,
+  <a href="#pageflow-config">&lt;pageflow-config&gt;</a>,
+  <a href="#type-converters">&lt;type-converters&gt;</a>,
+  <a href="#jsp-tag-config">&lt;jsp-tag-config&gt;</a>,
+  <a href="#iterator-factories">&lt;iterator-factories&gt;</a>,
+  <a href="#request-interceptors">&lt;request-interceptors&gt;</a></p>
+            </section>
+ 
+            <section id="pageflow-action-interceptors">
+                       <title>&lt;pageflow-action-interceptors&gt;</title>
+            <p>If you want to be notified before (or after) every action 
that's run in the webapp, 
+you configure a &lt;pageflow-action-interceptor&gt; group. 
+A simple example of this would be a monitoring infrastructure 
+that keeps track of the number of actions raised.  To keep track of the number 
of actions raised, 
+register an interceptor 
+that runs the counting code before going to any action. A more complex example 
+is an interceptor that *redirects* you to another page flow before allowing 
you 
+to go to the current one; for instance, it might take you to a nested page 
flow 
+that asks you to fill out a "satisfaction survey" before sending you to the 
+destination page flow. </p>
+<p>The action-intercepting class is run twice: <em>both</em> before 
<em>and</em> after the execution of the 
+       action.</p>
+ <p><strong>Also see:</strong></p>
+ <p><a 
href="../../apidocs/classref_pageflows/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptor.html">Interface
 org.apache.beehive.netui.pageflow.interceptor.ActionInterceptor</a></p>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;pageflow-action-interceptors>
+       &lt;global> [occurrences: 0-1]
+               &lt;simple-action-interceptor> ... 
&lt;/simple-action-interceptor> [occurrences: 0-*]
+               &lt;action-interceptor> ... &lt;/action-interceptor> 
[occurrences: 0-*]
+       &lt;/global>
+       &lt;per-pageflow> [occurrences: 0-*]
+               &lt;pageflow-uri> xsd:string &lt;/pageflow-uri> [occurrences: 1]
+               &lt;simple-action-interceptor> ... 
&lt;/simple-action-interceptor> [occurrences: 0-*]
+               &lt;action-interceptor> ... &lt;/action-interceptor> 
[occurrences: 0-*]
+               &lt;per-action> [occurrences: 0-*]
+                       &lt;action-name> xsd:string &lt;/action-name> 
[occurrences: 1]
+                       &lt;simple-action-interceptor> ... 
&lt;/simple-action-interceptor> [occurrences: 0-*]
+                       &lt;action-interceptor> ... &lt;/action-interceptor> 
[occurrences: 0-*]
+               &lt;/per-action>
+       &lt;/per-pageflow>
+&lt;/pageflow-action-interceptors></source>
+                               <p><strong>Parents</strong></p>
+                               <p><a 
href="#netui-config">&lt;netui-config&gt;</a></p>
+                               <p><strong>Children</strong></p>
+                               <p><a href="#global">&lt;global&gt;</a>, <a 
href="#per-pageflow">&lt;per-pageflow&gt;</a> </p>                          
+            </section>
+
+            <section id="pageflow-config">
+                <title>&lt;pageflow-config&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;pageflow-config>
+       &lt;enable-renesting> xsd:boolean &lt;/enable-renesting> [occurrences: 
0-1]
+       &lt;max-forwards-per-request> xsd:int &lt;/max-forwards-per-request> 
[occurrences: 0-1]
+       &lt;max-nesting-stack-depth> xsd:int &lt;/max-nesting-stack-depth> 
[occurrences: 0-1]
+       &lt;ensure-secure-forwards> xsd:boolean &lt;/ensure-secure-forwards> 
[occurrences: 0-1]
+       &lt;throw-session-expired-exception> xsd:boolean 
&lt;/throw-session-expired-exception> [occurrences: 0-1]
+       &lt;multipart-handler> [ disabled | memory | disk ] 
&lt;/multipart-handler> [occurrences: 0-1]
+       &lt;module-config-locators> ... &lt;/module-config-locators> 
[occurrences: 0-1]
+&lt;/pageflow-config></source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#netui-config">&lt;netui-config&gt;</a></p>
+                               <p><strong>Children:</strong></p>
+                               <p><a 
href="#enable-renesting">&lt;enable-renesting&gt;</a>, 
+                                       <a 
href="#max-forwards-per-request">&lt;max-forwards-per-request&gt;</a>, 
+                                       <a 
href="#max-nesting-stack-depth">&lt;max-nesting-stack-depth&gt;</a>,
+                                       <a 
href="#ensure-secure-forwards">&lt;ensure-secure-forwards&gt;</a>,
+                                       <a 
href="#throw-session-expired-exception">&lt;throw-session-expired-exception&gt;</a>,
+                                       <a 
href="#multipart-handler">&lt;multipart-handler&gt;</a>,
+                                       <a 
href="#module-config-locators">&lt;module-config-locators&gt;</a>,
+                                       </p>
+                               <p>
+Configures the page flow 
+runtime across the webapp. If you want to disable file-upload, for instance, 
+you set the multipart-handler to "none". There will be more settings here 
soon. 
+                     ÃÂ </p>
+            </section>
+            
+                       <section id="pageflow-handlers">
+                <title>&lt;pageflow-handlers&gt;</title>
+                               <p>
+These settings let you override base framework behavior. 
+A good example is the LoginHandler. By default, we use standard Servlet 
+APIs to see if you're logged in, and we use some server-specific APIs to 
+actually log you in when login() is called inside a page flow. 
+If you want to replace this behavior with your own login scheme 
+(which may look at a User database table for login information), 
+you can provide your own LoginHandler that defines methods like login() and 
isUserInRole().
+</p>
+
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;pageflow-handlers&gt;
+       &lt;login-handler-class> xsd:string &lt;/login-handler-class> 
[occurrences: 0-1]
+       &lt;forward-redirect-handler-class> xsd:string 
&lt;/forward-redirect-handler-class> [occurrences: 0-1]
+       &lt;reloadable-class-handler-class> xsd:string 
&lt;/reloadable-class-handler-class> [occurrences: 0-1]
+       &lt;exceptions-handler-class> xsd:string &lt;/exceptions-handler-class> 
[occurrences: 0-1]
+&lt;/pageflow-handlers&gt;</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#netui-config">&lt;netui-config&gt;</a></p>
+                               <p><strong>Children:</strong></p>
+                               <p><a 
href="#login-handler-class">&lt;login-handler-class&gt;</a>, 
+                                       <a 
href="#forward-redirect-handler-class">&lt;forward-redirect-handler-class&gt;</a>,
+                                       <a 
href="#reloadable-class-handler-class">&lt;reloadable-class-handler-class&gt;</a>,
+                                       <a 
href="#exceptions-handler-class">&lt;exceptions-handler-class&gt;</a></p>
+            </section>
+            
+       <section id="pageflow-uri"><title>&lt;pageflow-uri&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;pageflow-uri> xsd:string 
&lt;/pageflow-uri> [occurrences: 1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#per-pageflow">&lt;per-pageflow&gt;</a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+
+       <section id="per-action"><title>&lt;per-action&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;per-action> [occurrences: 0-*]
+       &lt;action-name> xsd:string &lt;/action-name> [occurrences: 1]
+       &lt;simple-action-interceptor> netui:simple-action-interceptor 
&lt;/simple-action-interceptor> [occurrences: 0-*]
+       &lt;action-interceptor> netui:action-interceptor 
&lt;/action-interceptor> [occurrences: 0-*]
+&lt;/per-action></source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#global">&lt;global&gt;</a></p>
+                               <p><strong>Children:</strong></p>
+                               <p><a 
href="#action-name">&lt;action-name&gt;</a>,
+                                       <a 
href="#simple-action-interceptor">&lt;simple-action-interceptor&gt;</a>,
+                                       <a 
href="#action-interceptor">&lt;action-interceptor&gt;</a></p></section>
+
+       <section id="per-pageflow"><title>&lt;per-pageflow&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;per-pageflow> [occurrences: 0-*]
+       &lt;pageflow-uri> xsd:string &lt;/pageflow-uri> [occurrences: 1]
+       &lt;simple-action-interceptor> netui:simple-action-interceptor 
&lt;/simple-action-interceptor> [occurrences: 0-*]
+       &lt;action-interceptor> netui:action-interceptor 
&lt;/action-interceptor> [occurrences: 0-*]
+       &lt;per-action> [occurrences: 0-*]
+               &lt;action-name> xsd:string &lt;/action-name> [occurrences: 1]
+               &lt;simple-action-interceptor> netui:simple-action-interceptor 
&lt;/simple-action-interceptor> [occurrences: 0-*]
+               &lt;action-interceptor> netui:action-interceptor 
&lt;/action-interceptor> [occurrences: 0-*]
+       &lt;/per-action>
+&lt;/per-pageflow></source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#global">&lt;global&gt;</a></p>
+                               <p><strong>Children:</strong></p>
+                               <p><a 
href="#pageflow-uri">&lt;pageflow-uri&gt;</a>,
+                                       <a 
href="#simple-action-interceptor">&lt;simple-action-interceptor&gt;</a>,
+                                       <a 
href="#action-interceptor">&lt;action-interceptor&gt;</a>,
+                                       <a 
href="#per-action">&lt;per-action&gt;</a></p></section>
+
+       <section 
id="reloadable-class-handler-class"><title>&lt;reloadable-class-handler-class&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;reloadable-class-handler-class> 
xsd:string &lt;/reloadable-class-handler-class> [occurrences: 0-1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#pageflow-handlers">&lt;pageflow-handlers&gt;</a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+
+       <section id="request-interceptors">
+                               <title>&lt;request-interceptors&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;request-interceptors>
+  &lt;interceptor-class> xsd:string &lt;/interceptor-class> [occurrences: 1-*]
+&lt;/request-interceptors></source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#netui-config">&lt;netui-config&gt;</a></p>
+                               <p><strong>Children:</strong></p>
+                               <p><a 
href="#interceptor-class">&lt;interceptor-class&gt;</a></p></section>
+
+       <section 
id="simple-action-interceptor"><title>&lt;simple-action-interceptor&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;simple-action-interceptor>
+  &lt;intercept-path> xsd:string &lt;/intercept-path> [occurrences: 1]
+  &lt;after-action> xsd:boolean &lt;/after-action> [occurrences: 0-1]
+&lt;/simple-action-interceptor></source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#netui-config">&lt;netui-config&gt;</a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+
+       <section 
id="throw-session-expired-exception"><title>&lt;throw-session-expired-exception&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;throw-session-expired-exception> 
xsd:boolean &lt;/throw-session-expired-exception> [occurrences: 0-1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#pageflow-config">&lt;pageflow-config&gt;</a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+
+       <section 
id="tree-image-location"><title>&lt;tree-image-location&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;tree-image-location> xsd:string 
&lt;/tree-image-location> [occurrences: 0-1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#jsp-tag-config">&lt;jsp-tag-config&gt;</a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+
+       <section id="type"><title>&lt;type&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;type> xsd:string &lt;/type> 
[occurrences: 1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#type-converter">&lt;type-converter&gt;</a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+
+       <section id="type-converter"><title>&lt;type-converter&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;type-converter> [occurrences: 0-*]
+  &lt;type> xsd:string &lt;/type> [occurrences: 1]
+  &lt;converter-class> xsd:string &lt;/converter-class> [occurrences: 1]
+&lt;/type-converter></source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#type-converters">&lt;type-converters&gt;</a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+
+       <section id="type-converters"><title>&lt;type-converters&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;type-converters>
+  &lt;type-converter> [occurrences: 0-*]
+    &lt;type> xsd:string &lt;/type> [occurrences: 1]
+    &lt;converter-class> xsd:string &lt;/converter-class> [occurrences: 1]
+  &lt;/type-converter>
+&lt;/type-converters></source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#netui-config">&lt;netui-config&gt;</a></p>
+                               <p><strong>Children:</strong></p>
+                               <p><a 
href="#type-converter">&lt;type-converter&gt;</a></p></section>
+
+        <section id="value"><title>&lt;value&gt;</title>
+                               <p><strong>Syntax</strong></p>
+                               <source>&lt;value> xsd:string &lt;/value> 
[occurrences: 1]</source>
+                               <p><strong>Parents:</strong></p>
+                                       <p><a 
href="#custom-property">&lt;custom-property&gt;</a></p>
+                               <p><strong>Children:</strong></p>
+                               <p>none</p></section>
+        </section>
+        <section>
+            <title>Example</title>
+            <p>
+        Use the following example <code>netui-config.xsd</code> file as a 
template.</p>
+            <source><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
+
+<netui-config xmlns="http://beehive.apache.org/netui/2004/server/config";>
+
+    <legacy-tag-support>false</legacy-tag-support>
+
+    <expression-languages>
+        <default-language>netuiel</default-language>
+        <expression-language>
+            <name>netuiel</name>
+            
<factory-class>org.apache.beehive.netui.script.el.ExpressionEvaluatorImpl$NetUIELEngineFactory</factory-class>
+        </expression-language>
+    </expression-languages>
+
+    <pageflow-action-interceptors>
+        <global>
+            <before-action>
+                <action-interceptor>
+                    
<interceptor-class>miniTests.interceptors.InterceptorsController$BeforeInterceptor</interceptor-class>
+                </action-interceptor>
+                <action-interceptor>
+                    
<interceptor-class>miniTests.interceptors.InterceptorsController$BeforeInterceptor2</interceptor-class>
+                </action-interceptor>
+            </before-action>
+            <after-action>
+                <action-interceptor>
+                    
<interceptor-class>miniTests.interceptors.InterceptorsController$AfterInterceptor</interceptor-class>
+                </action-interceptor>
+                <action-interceptor>
+                    
<interceptor-class>miniTests.interceptors.InterceptorsController$AfterInterceptor2</interceptor-class>
+                </action-interceptor>
+            </after-action>
+        </global>
+    </pageflow-action-interceptors>
+
+    <pageflow-handlers>
+        
<forward-redirect-handler-class>pageFlowCore.forwards.Controller$Redirector</forward-redirect-handler-class>
+    </pageflow-handlers>
+
+    <pageflow-config>
+        <multipart-handler>memory</multipart-handler>
+        <module-config-locators>
+            <module-config-locator>
+                <description>For /miniTests/moduleConfigLocator.</description>
+                <locator-class>moduleConfigLocator.Locator1</locator-class>
+            </module-config-locator>
+        </module-config-locators>
+    </pageflow-config>
+
+    <jsp-tag-config>
+       <doctype>html4-loose</doctype>
+       <id-javascript>Legacy-JavaScript-Only</id-javascript>
+    </jsp-tag-config>
+
+    <iterator-factories>
+    </iterator-factories>
+
+</netui-config>
+            
+        ]]></source>
+        </section>
+        <section>
+               <title>Related Topics</title>
+<p><a 
href="../../apidocs/classref_pageflows/org/apache/beehive/netui/util/config/ConfigUtil.html">Class
 org.apache.beehive.netui.util.config.ConfigUtil</a></p>
+<p><a 
href="../../apidocs/classref_pageflows/org/apache/beehive/netui/pageflow/interceptor/ActionInterceptor.html">Interface
 org.apache.beehive.netui.pageflow.interceptor.ActionInterceptor</a></p>
+        </section>
+        
+    </body>
+</document>

Propchange: 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/config/beehive-netui-config.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/guide.xml
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/guide.xml?view=diff&r1=158118&r2=158119
==============================================================================
--- 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/guide.xml
 (original)
+++ 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/guide.xml
 Fri Mar 18 10:31:07 2005
@@ -33,7 +33,7 @@
             <p>
                 <strong>How the Code Works</strong>
             </p>
-            <p>Methods in the Controller file are invoked through specially 
designed JSP tags, called "netui" tags.  These tags appear with the prefix 
<strong>&lt;netui:></strong>. (Tags with the &lt;netui:> reference the 
netui-tags-html.tld tag library.)  Neuti tags like &lt;neuti:anchor>, 
&lt;netui:button>, and &lt;netui:imageButton> are all capable of invoking 
methods in the Controller file.  The method to invoke is specified by the tag's 
<code>action</code> attribute.  For example, the following  &lt;netui:anchor> 
tag invokes the <code>toPageB</code> method by referencing the method in it's 
<code>action</code> attribute.</p>
+            <p>Methods in the Controller file are invoked through specially 
designed JSP tags, called "netui" tags.  These tags appear with the prefix 
<strong>&lt;netui:></strong>. (Tags with the &lt;netui:> reference the 
netui-tags-html.tld tag library.)  Neuti tags like &lt;neuti:anchor>, 
&lt;netui:button>, and &lt;netui:imageButton> are all capable of invoking 
methods in the Controller file.  The method to invoke is specified by the tag's 
<code>action</code> attribute.  For example, the following  &lt;netui:anchor> 
tag invokes the <code>navigate</code> method by referencing the method in it's 
<code>action</code> attribute.</p>
             <p>
                 <strong>pageA.jsp</strong>
             </p>
@@ -42,10 +42,10 @@
     &lt;%@ taglib uri="netui-tags-html.tld" prefix="netui"%>
        ...
        <!-- Render a link that invokes the toPageB method -->
-       &lt;netui:anchor <strong>action="toPageB"</strong>>Link to 
page_B.jsp&lt;/netui:anchor>
+       &lt;netui:anchor <strong>action="navigate"</strong>>Link to 
page_B.jsp&lt;/netui:anchor>
 </source>
 <!--            <p>(When pageA.jsp is viewed in a broswer, the 
&lt;netui:anchor> tag is rendered as ordinary HTML, with associated JavaScript 
which handles the invocation.... [todo] )</p>-->
-            <p>Suppose the link above is clicked.  When clicked, the following 
method, <code>toPageB</code>, is invoked.</p>
+            <p>Suppose the link above is clicked.  When clicked, the following 
method, <code>navigate</code>, is invoked.</p>
             <p>The method below, when invoked, navigates the user to 
pageB.jsp.  The code within the method body is very simple: upon invocation, 
the method immediately returns a Forward object, with the String parameter 
"success".  The code <em>above</em> the method does the real work of 
determining the navigational target.  The code above the method consists of two 
metadata annotations.  "Metadata" means that the annotation configures or sets 
a property on some part of the Java code.  In the example below, the 
@Jpf.Action annotation makes the method available to invocation (by netui 
tags), while the @Jpf.Forward annotation configures the navigation information. 
 In the this case the method it configured to navigate to pageB.jsp whenever it 
is invoked.  </p>
             <p>
                 <strong>Controller.jpf</strong>
@@ -58,7 +58,7 @@
             @Jpf.Forward(name = "<strong>success</strong>", path = 
"<strong>pageB.jsp</strong>")
         }
     )
-    protected Forward toPageB()
+    protected Forward navigate()
     {
         return new Forward("success");
     }</source>

Modified: 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/index.xml
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/index.xml?view=diff&r1=158118&r2=158119
==============================================================================
--- 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/index.xml
 (original)
+++ 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/index.xml
 Fri Mar 18 10:31:07 2005
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" 
"http://forrest.apache.org/dtd/document-v12.dtd";>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" 
"http://forrest.apache.org/dtd/document-v20.dtd";>
 <document>
        <header>
                <title>Introduction to Beehive Page Flows</title>

Added: 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_databinding.xml
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_databinding.xml?view=auto&rev=158119
==============================================================================
--- 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_databinding.xml
 (added)
+++ 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_databinding.xml
 Fri Mar 18 10:31:07 2005
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" 
"http://forrest.apache.org/dtd/document-v20.dtd";>
+<document>
+       <header>
+               <title>Databinding: Passing Data Between Controller Classes and 
JSP Pages</title>
+       </header>
+       <body>
+               <section id="intro">
+                       <title>Introduction</title>
+                       <p>Your web application's presentation layer (JSP 
pages) and processing layer 
+                               (Controller classes) are bound together through 
the process of <em>databinding</em>.
+                               There are numerous databinding contexts 
available, including all
+                               of the JSP 2.0 implicit objects as well as 
other contexts peculiar to 
+                               page flow apps.</p>
+                       <p>Databinding syntax uses the JSP 2.0 Expression 
Language.  For a quick summary of the 
+                               JSP 2.0 EL see <a 
href="http://www.onjava.com/pub/a/onjava/2003/11/05/jsp.html"; class="fork">JSP 
2.0: The New Deal, Part 1</a>.</p>
+                       <p>It is important to note that the databinding 
contexts form a two-way street between the 
+                               presentation and processing layers of a web 
application.  Databinding contexts not 
+                               only pass data from the processing layer to the 
presentation layer, some contexts
+                               can pass data in the opposite direction from 
the presentation layer to the processing layer.
+                               </p>
+                       <p>The one-way, read-only contexts are: requestScope, 
url, sessionScope, container, pageContext, bundle, pageInput</p>
+                       <p>The two-way, read-write contexts are:  pageFlow, 
globalApp, actionForm</p>
+               </section>
+               <section id="contexts">
+                       <title>Summary of Binding Contexts</title>
+                       <table>
+                               <tr>
+                                       <th>Context Name</th>
+                                       <th>Object the Context References</th>
+                                       <th>Description</th>
+                               </tr>
+                               <tr>
+                                       <td>
+                                               <code>actionForm</code>
+                                       </td>
+                                       <td>The current form bean (the form 
bean named in the 
+                                               current 
<code>&lt;netui:form></code> tag)</td>
+                                       <td>Individual fields defined in the 
form bean can be 
+                                               referenced. Values are 
read-write.</td>
+                               </tr>
+                               <tr>
+                                       <td>
+                                               <code>applicationScope</code>
+                                       </td>
+                                       <td>an attribute map on the application 
object (a JSP 2.0 implicit object)</td>
+                                       <td></td>
+                               </tr>
+                               <tr>
+                                       <td>
+                                               <code>bundle</code>
+                                       </td>
+                                       <td>Properties defined in a message 
resource file</td>
+                                       <td>On a JSP page, declare the message 
resource file using 
+                                               the 
&lt;netui-data:declareBundle> tag. <source>&lt;netui-data:declareBundle 
name="myBundle" bundlePath="properties.bundle1"/></source> 
+                                               Reference individual properties 
in the file using the 
+                                               <code>bundle</code> databinding 
context. <source>&lt;netui:span 
value="${bundle.myBundle.message1}"/></source></td>
+                               </tr>
+                               <tr>
+                                       <td>
+                                               <code>container</code>
+                                       </td>
+                                       <td>The data set referenced in the 
current 
+                                               &lt;netui-data:dataGrid> or 
&lt;netui-data:repeater> 
+                                               tag</td>
+                                       <td>In the example below, the 
<code>container</code> 
+                                               context refers to the object 
named in the 
+                                               
<code>&lt;netui-data:dataGrid></code>'s 
+                                               <code>dataSource</code> 
<source>&lt;netui-data:dataGrid <strong>dataSource="pageScope.stocks"</strong> 
name="portfolio">
+    &lt;netui-data:rows>
+        &lt;netui-data:spanCell 
value="${<strong>container.item.symbol</strong>}"/>
+        &lt;netui-data:spanCell 
value="${<strong>container.item.price</strong>}"/>
+    &lt;/netui-data:rows>
+&lt;/netui-data:dataGrid></source> See below for detailed 
+                                               information on 
<code>container</code>'s 
+                                               sub-contexts.</td>
+                               </tr>                           
+                               <tr>
+                                       <td>
+                                               <code>pageFlow</code>
+                                       </td>
+                                       <td>The current Controller class</td>
+                                       <td>Public members of the current 
Controller class can be referenced and written to.
+                                               Assume that the Controller 
class contains the following public member String.
+                                               <source>public String someText 
= "This is some text"</source>
+                                               Then that member can be 
referenced from any JSP page in the page flow.
+                                               <source>&lt;netui:span 
value="${pageFlow.someText}"/></source></td>
+                               </tr>
+                               <tr>
+                                       <td>
+                                               <code>pageInput</code>
+                                       </td>
+                                       <td>an attribute map on the current 
Forward object</td>
+                                       <td>Page input data can be added to the 
Forward object 
+                                               using the 
<code>addActionOutput(String, Object) 
+                                               method.</code>. <source>Forward 
forward = new Forward("success");
+forward.addActionOutput("name", someNameData);</source> The data can be 
retrieved on 
+                                               the JSP page using the 
<code>pageInput</code> 
+                                               databinding context. 
<source>&lt;netui:span value="${pageInput.name}"/></source></td>
+                               </tr>
+                               <tr>
+                                       <td>
+                                               <code>pageScope</code>
+                                       </td>
+                                       <td>an attribute map on the current JSP 
page (a JSP 2.0 implicit object)</td>
+                                       <td></td>
+                               </tr>
+                               <tr>
+                                       <td>
+                                               <code>requestScope</code>
+                                       </td>
+                                       <td>an attribute map on the request 
object (a JSP 2.0 implicit object)</td>
+                                       <td></td>
+                               </tr>
+                               <tr>
+                                       <td>
+                                               <code>sessionScope</code>
+                                       </td>
+                                       <td>an attribute map on the session 
object (a JSP 2.0 implicit object)</td>
+                                       <td></td>
+                               </tr>
+                               <tr>
+                                       <td>
+                                               <code>sharedFlow</code>
+                                       </td>
+                                       <td>Attribute map of all of the shared 
flows in the web application</td>
+                                       <td>Provided that the shared flow is 
declared in the Controller file
+                                               <source>@Jpf.Controller(
+    sharedFlowRefs={
+        @Jpf.SharedFlowRef(name="mySharedFlow", 
type=sharedFlows.SharedFlow.class)
+    }
+)
+public class Controller extends PageFlowController
+</source>
+You can access the members of the shared flow through the 
<code>sharedFlow</code> context.
+<source>&lt;netui:span 
value="${sharedFlow.mySharedFlow.someProperty}"/></source></td>
+                               </tr>                           
+                               <tr>
+                                       <td>
+                                               <code>url</code>
+                                       </td>
+                                       <td>Query parameters on the current 
JSP's URL.</td>
+                                       <td>Query parameters that are part of 
the URL can be 
+                                               referenced. Values are read 
only.</td>
+                               </tr>
+                       </table>
+               </section>
+               <section>
+                       <title>Individual Binding Contexts</title>
+                       <section id="actionForm">
+                               <title>
+                                       <code>actionForm</code>
+                               </title>
+                       </section>
+                       <section id="application">
+                               <title>
+                                       <code>applicationScope</code>
+                               </title>
+                       </section>
+                       <section id="bundle">
+                               <title>
+                                       <code>bundle</code>
+                               </title>
+                       </section>
+                       <section id="container">
+                               <title>
+                                       <code>container</code>
+                               </title>
+                       </section>
+                       <section id="pageInput">
+                               <title>
+                                       <code>pageInput</code>
+                               </title>
+                       </section>
+                       <section id="request">
+                               <title>
+                                       <code>requestScope</code>
+                               </title>
+                       </section>
+                       <section id="session">
+                               <title>
+                                       <code>sessionScope</code>
+                               </title>
+                       </section>
+                       <section id="sharedFlow">
+                               <title>
+                                       <code>sharedFlow</code>
+                               </title>
+                               <p>SharedFlow properties can be accessed from a 
JSP using the scope sharedFlow, for example,</p>
+
+       <source>dataSource="sharedFlow.specificSharedFlow.someProperty"</source>
+
+<p>Actions declared in a SharedFlow are accessed by specifying a fully 
qualified action</p>
+
+       <source>action="specificSharedFlow.someAction"</source>
+
+           <p>where specificSharedFlow was the name given to the sharedFlow in 
the JPF annotation</p>
+                       </section>
+                       <section id="url">
+                               <title>
+                                       <code>url</code>
+                               </title>
+                       </section>
+               </section>
+               <section id="related"><title>Related Topics</title>
+                       <p>For more information on the JSP 2.0 Expression 
Language, see <a href="http://www.onjava.com/pub/a/onjava/2003/11/05/jsp.html"; 
class="fork">JSP 2.0: The New Deal, Part 1</a></p></section>
+       </body>
+</document>
\ No newline at end of file

Propchange: 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_databinding.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_datagrid.xml
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_datagrid.xml?view=auto&rev=158119
==============================================================================
--- 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_datagrid.xml
 (added)
+++ 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_datagrid.xml
 Fri Mar 18 10:31:07 2005
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" 
"http://forrest.apache.org/dtd/document-v20.dtd";>
+<document>
+    <header>
+        <title>Displaying Results Sets with Data Grids</title>
+    </header>
+    <body>
+        <section id="database_driven">
+            <title>Database Driven Web Applications</title>
+                       <p><img src="images/pageflow_database_app_1.png" 
alt="pageflow_database"/></p>
+        </section>
+        <section id="pager">
+            <title>The &lt;netui-data:pager> Tag</title>
+        </section>
+        <section id="filtering">
+            <title>Filtering a Data Grid</title>
+        </section>
+        <section id="sorting">
+            <title>Sorting a Data Grid</title>
+        </section>
+               <section>
+                       <title>Sample Code</title>
+                       <p><strong>Controller.jpf</strong></p>
+                       <source>import java.sql.ResultSet;
+import javax.servlet.http.HttpSession;
+import org.apache.beehive.netui.pageflow.Forward;
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
+// Set up annotations
[EMAIL PROTECTED](
+    simpleActions={
+        @Jpf.SimpleAction(name="begin", path="index.jsp")
+    }
+    , sharedFlowRefs={       @Jpf.SharedFlowRef(name="shared", 
type=shared.SharedFlow.class)    }
+)
+public class Controller 
+    extends PageFlowController
+{
+    // Shared Flow - handle common exceptions, etc. here
+       @Jpf.SharedFlowField(name="shared")
+    private shared.SharedFlow sharedFlow;
+    
+    // Controls
+       @org.apache.beehive.controls.api.bean.Control 
+    private controls.data.carDB carDB;
+
+       // Objects to pass to page flow
+       public ResultSet rs;
+       
+       // Actions
+    @Jpf.Action(
+            forwards = { 
+                @Jpf.Forward(name = "success", path = "list.jsp")
+            }
+        )
+        public Forward processData() throws Exception
+        {
+            int nCount = carDB.countCars();
+            getRequest().setAttribute("cars", nCount);
+            rs = carDB.getInventoryRS();
+            return new Forward("success");
+        }
+
+    @Jpf.Action(
+               forwards = {
+                       @Jpf.Forward(name = "success", path = "item.jsp")
+        })
+        protected Forward item() throws Exception
+        {
+               int nSKU = Integer.parseInt(getRequest().getParameter("sku"));
+               rs = carDB.getItem(nSKU);
+               return new Forward("success");
+        }
+
+    // Callback that is invoked when this controller instance is created.
+    protected void onCreate() {}
+
+    // Callback that is invoked when this controller instance is destroyed.
+    protected void onDestroy(HttpSession session) {}
+}</source>
+                       <p><strong>list.jsp</strong></p>
+                               <source>&lt;%@ taglib 
uri="http://beehive.apache.org/netui/tags-html-1.0"; prefix="netui" %>
+&lt;%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0"; 
prefix="netui-template"%>
+&lt;%@ taglib uri="http://beehive.apache.org/netui/tags-databinding-1.0"; 
prefix="netui-data"%>
+&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core"; prefix="c"%>
+&lt;netui-template:template templatePage="/resources/jsp/template.jsp">
+    &lt;netui-template:setAttribute value="WAS - Inventory" name="title"/>
+    &lt;netui-template:section name="bodySection">
+        &lt;blockquote>
+        &lt;span class="subtitle">Inventory Section&lt;/span>&lt;br>
+
+               &lt;netui-data:dataGrid dataSource="pageFlow.rs" 
name="inventoryGrid" styleClassPrefix="gridStyle">
+               &lt;netui-data:configurePager pageSize="4" 
pagerFormat="prevNext" pageAction="processData.do" disableDefaultPager="true"/>
+               &lt;netui-data:caption>
+                       We currently have ${requestScope.cars} vehicles in our 
inventory.
+               &lt;/netui-data:caption>
+        
+               &lt;netui-data:header>
+                       &lt;netui-data:headerCell headerText="Details"/>
+                       &lt;netui-data:headerCell headerText="Make"/>
+                       &lt;netui-data:headerCell headerText="Model" />
+                       &lt;netui-data:headerCell headerText="Description"/>
+                       &lt;netui-data:headerCell headerText="Inventory 
Number"/>
+                       &lt;netui-data:headerCell headerText="Price"/>
+                       &lt;netui-data:headerCell headerText="Status"/>
+                   &lt;/netui-data:header>
+                   &lt;netui-data:rows>
+                       &lt;netui-data:imageAnchorCell 
src="${pageContext.request.contextPath}/resources/images/${container.item.carid}sm.jpg"
 action="item" alt="Details for this vehicle" border="0">
+                           &lt;netui:parameter name="sku" 
value="${container.item.sku}"/>
+                       &lt;/netui-data:imageAnchorCell>
+                       &lt;netui-data:spanCell value="${container.item.make}"/>
+                       &lt;netui-data:spanCell value="${container.item.model}" 
filterExpression="model" />
+                       &lt;netui-data:spanCell 
value="${container.item.description}"/>
+                       &lt;netui-data:spanCell value="${container.item.sku}"/>
+                       &lt;netui-data:spanCell value="${container.item.price}">
+                               &lt;netui:formatNumber pattern="$#,###"/>
+                       &lt;/netui-data:spanCell>
+                       &lt;netui-data:spanCell 
value="${container.item.status}" styleClass="${container.item.status == 
'Available' ? 'status-available' : 'status-sold'}"/>
+                   &lt;/netui-data:rows>
+               &lt;netui-data:footer>
+                 &lt;td colspan="7" style="height: 50px;">
+                   &lt;netui-data:renderPager/>
+                 &lt;/td>
+               &lt;/netui-data:footer>
+           &lt;/netui-data:dataGrid>
+        &lt;/blockquote>
+    &lt;/netui-template:section>
+&lt;/netui-template:template></source>
+               </section>
+</body>
+</document>
\ No newline at end of file

Propchange: 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_datagrid.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_overview.xml
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_overview.xml?view=diff&r1=158118&r2=158119
==============================================================================
--- 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_overview.xml
 (original)
+++ 
incubator/beehive/branches/v1/beta/docs/forrest/src/documentation/content/xdocs/pageflow/pageflow_overview.xml
 Fri Mar 18 10:31:07 2005
@@ -29,7 +29,7 @@
     <p><strong>Declarative Programming</strong></p>
     <p>Many common web app programming tasks are accomplished through a 
declarative programming model using 
                JSR 175 metadata annotations, a new feature in JKD5.  JSR 175 
metadata annotations, "annotations" 
-               for short, are property setters for Java classes and methods, 
aliviating the need for independent 
+               for short, are property setters for Java classes and methods, 
alleviating the need for independent 
                configuration files. Navigation, exception handling, 
validation, and other tasks become configurable 
                properties of a single Java class, the "controller" class that 
drives the web application.</p>
     <p><strong>Page Flows are Stateful</strong></p>
@@ -220,7 +220,7 @@
        <p>Actions may perform any required
     complex logic.  For example, if a user clicks on the "My Page" link, the 
action may check if
     the user is logged in, and if so, navigate the user to the 
<code>mypage.jsp</code>
-    page, otherwise it will navigate the user to the
+    page; otherwise it will navigate the user to the
     <code>login.jsp</code> page.
     </p>
 
@@ -233,7 +233,7 @@
     </ul>
 
     <p>
-    When using JPFs, pages and actions are interweaved, transparently.
+    When using JPFs, pages and actions are interwoven, transparently.
     </p>
 
     <ul>


Reply via email to