You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ri...@apache.org on 2005/05/13 09:45:40 UTC

svn commit: r169968 - in /incubator/beehive/trunk: netui/ant/ netui/test/ant/ netui/test/dist-test/ netui/test/dist-test/ant/ netui/test/external/ netui/test/external/strutstestcase/ netui/test/src/junitTests/ netui/test/src/junitTests/WEB-INF/ netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/ netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/ test/dist-test/

Author: rich
Date: Fri May 13 00:45:39 2005
New Revision: 169968

URL: http://svn.apache.org/viewcvs?rev=169968&view=rev
Log:
Got StrutsTestCase integrated into the NetUI JUnit tests.  This adds a handful of declarative validation tests, but also verifies that StrutsTestCase works against Page Flow.

See http://issues.apache.org/jira/browse/BEEHIVE-615 for more background.

tests: bvt in netui, run.tests against the built distributions (WinXP)
BB: self (linux)


Added:
    incubator/beehive/trunk/netui/test/external/
    incubator/beehive/trunk/netui/test/external/strutstestcase/
    incubator/beehive/trunk/netui/test/external/strutstestcase/strutstest-2.1.3.jar   (with props)
    incubator/beehive/trunk/netui/test/src/junitTests/WEB-INF/
    incubator/beehive/trunk/netui/test/src/junitTests/WEB-INF/struts-config.xml   (with props)
    incubator/beehive/trunk/netui/test/src/junitTests/WEB-INF/web.xml   (with props)
    incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/
    incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/MockPageFlowTestCase.java   (with props)
    incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/
    incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/Controller.jpf   (with props)
    incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/Messages.properties   (with props)
    incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/ValidationTest.java   (with props)
    incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/index.jsp   (with props)
Modified:
    incubator/beehive/trunk/netui/ant/netui.properties
    incubator/beehive/trunk/netui/test/ant/junitCore.xml
    incubator/beehive/trunk/netui/test/ant/netui-test-imports.xml
    incubator/beehive/trunk/netui/test/dist-test/ant/netui-test-imports.xml
    incubator/beehive/trunk/netui/test/dist-test/build.xml
    incubator/beehive/trunk/netui/test/src/junitTests/build.xml
    incubator/beehive/trunk/test/dist-test/build.xml

Modified: incubator/beehive/trunk/netui/ant/netui.properties
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/ant/netui.properties?rev=169968&r1=169967&r2=169968&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/ant/netui.properties (original)
+++ incubator/beehive/trunk/netui/ant/netui.properties Fri May 13 00:45:39 2005
@@ -72,6 +72,10 @@
 # NetUI config file references
 netuiconfig.xml=${src.dir}/webapp-template/default/WEB-INF/beehive-netui-config.xml
 
+# Validator rules file references
+netui-validator-rules.xml=${src.dir}/webapp-template/default/WEB-INF/netui-validator-rules.xml
+validator-rules.xml=${src.dir}/webapp-template/default/WEB-INF/validator-rules.xml
+
 #compile options
 compile.debug=true
 compile.deprecation=off

Modified: incubator/beehive/trunk/netui/test/ant/junitCore.xml
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/ant/junitCore.xml?rev=169968&r1=169967&r2=169968&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/test/ant/junitCore.xml (original)
+++ incubator/beehive/trunk/netui/test/ant/junitCore.xml Fri May 13 00:45:39 2005
@@ -8,6 +8,7 @@
         <path refid="junit-tests.dependency.path"/>
         <path refid="webapp.dependency.path"/>
         <path refid="junit.dependency.path"/>
+        <path refid="strutstestcase.dependency.path"/>
         <path refid="servlet.dependency.path"/>
     </path>
 
@@ -45,6 +46,11 @@
             <batchtest fork="yes" todir="${testout.dir}">
                 <fileset dir="${test.classes.dir}/junitTests">
                     <include name="org/apache/beehive/netui/test/core/**/*Test.class"/>
+                </fileset>
+            </batchtest>
+            <batchtest fork="yes" todir="${testout.dir}">
+                <fileset dir="${test.classes.dir}/junitTests">
+                    <include name="org/apache/beehive/netui/test/pageflow/**/*Test.class"/>
                 </fileset>
             </batchtest>
             <test name="org.apache.beehive.netui.test.databinding.expression.IndexedNameTest" todir="${testout.dir}"/>

Modified: incubator/beehive/trunk/netui/test/ant/netui-test-imports.xml
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/ant/netui-test-imports.xml?rev=169968&r1=169967&r2=169968&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/test/ant/netui-test-imports.xml (original)
+++ incubator/beehive/trunk/netui/test/ant/netui-test-imports.xml Fri May 13 00:45:39 2005
@@ -16,4 +16,8 @@
         <pathelement location="${test.lib.dir}/beehive-netui-junitTests.jar"/>
     </path>
 
+    <path id="strutstestcase.dependency.path">
+        <pathelement location="${test.external.dir}/strutstestcase/strutstest-2.1.3.jar"/>
+    </path>
+
 </project>

Modified: incubator/beehive/trunk/netui/test/dist-test/ant/netui-test-imports.xml
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/dist-test/ant/netui-test-imports.xml?rev=169968&r1=169967&r2=169968&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/test/dist-test/ant/netui-test-imports.xml (original)
+++ incubator/beehive/trunk/netui/test/dist-test/ant/netui-test-imports.xml Fri May 13 00:45:39 2005
@@ -36,6 +36,10 @@
        <pathelement path="${test.dir}/junit/lib/junit.jar"/>
     </path>
 
+    <path id="strutstestcase.dependency.path">
+       <pathelement path="${test.dir}/strutstestcase/strutstest-2.1.3.jar"/>
+    </path>
+
     <path id="log4j.dependency.path">
        <pathelement path="${dist.home}/lib/common/log4j-1.2.8.jar"/>
     </path>

Modified: incubator/beehive/trunk/netui/test/dist-test/build.xml
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/dist-test/build.xml?rev=169968&r1=169967&r2=169968&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/test/dist-test/build.xml (original)
+++ incubator/beehive/trunk/netui/test/dist-test/build.xml Fri May 13 00:45:39 2005
@@ -17,6 +17,8 @@
     </target>	
 
     <target name="assemble.tests" description="Assemble all netui tests for test distribution">
+        <property name="netui.test.dist.dir" value="${test.dist.base.dir}/beehive-test-dist/netui"/>
+
         <!-- Clean coreWeb -->
         <ant antfile="${app.dir}/drt/build.xml" target="clean"/>
     	
@@ -24,83 +26,89 @@
         <ant antfile="${app.dir}/jsf/build.xml" target="clean"/>
     	
         <!-- Moving files to the right place for packaging -->
-       <mkdir dir="${test.dist.base.dir}/beehive-test-dist"/>
-       <mkdir dir="${test.dist.base.dir}/beehive-test-dist/netui"/>
-       <mkdir dir="${test.dist.base.dir}/beehive-test-dist/netui/struts"/>  	
+        <mkdir dir="${test.dist.base.dir}/beehive-test-dist"/>
+        <mkdir dir="${netui.test.dist.dir}"/>
+        <mkdir dir="${netui.test.dist.dir}/struts"/>  	
 
-       <copy file="${test.dir}/dist-test/ant/build.xml" tofile="${test.dist.base.dir}/beehive-test-dist/netui/build.xml"/>
+        <copy file="${test.dir}/dist-test/ant/build.xml" tofile="${netui.test.dist.dir}/build.xml"/>
 
-       <copy todir="${test.dist.base.dir}/beehive-test-dist/netui/ant">
+        <copy todir="${netui.test.dist.dir}/ant">
             <fileset dir="${test.dir}/dist-test/ant" includes="**"/>
-       </copy> 
-
-       <copy todir="${test.dist.base.dir}/beehive-test-dist/netui/ant" file="${test.dir}/ant/junitCore.xml"/>
+        </copy> 
 
-       <!-- Get test webs -->
-       <copy todir="${test.dist.base.dir}/beehive-test-dist/netui/webapps/coreWeb">
+        <copy todir="${netui.test.dist.dir}/ant" file="${test.dir}/ant/junitCore.xml"/>
+ 
+        <!-- Get test webs -->
+        <copy todir="${netui.test.dist.dir}/webapps/coreWeb">
             <fileset dir="${app.dir}/drt/coreWeb"/>
-       </copy>
+        </copy>
     	
-       <copy todir="${test.dist.base.dir}/beehive-test-dist/netui/webapps/jsfWeb">
+        <copy todir="${netui.test.dist.dir}/webapps/jsfWeb">
              <fileset dir="${app.dir}/jsf/jsfWeb"/>
-       </copy>
+        </copy>
 
-       <!-- Get Junit tests -->
-       <copy todir="${test.dist.base.dir}/beehive-test-dist/netui/junit/junitTests/org">
-            <fileset dir="${test.classes.dir}/junitTests/org"/>
-       </copy>
+        <!-- Get Junit tests -->
+        <copy todir="${netui.test.dist.dir}/junit/junitTests">
+            <fileset dir="${test.classes.dir}/junitTests" excludes="build.xml"/>
+        </copy>
     	
-       <!-- Get general testRecorder resources -->
-        <copy todir="${test.dist.base.dir}/beehive-test-dist/netui/testRecorder">
+        <!-- Get general testRecorder resources -->
+        <copy todir="${netui.test.dist.dir}/testRecorder">
              <fileset dir="${build.dir}/tools/testRecorder"/>
         </copy>
 
-        <copy todir="${test.dist.base.dir}/beehive-test-dist/netui/conf">
+        <copy todir="${netui.test.dist.dir}/conf">
              <fileset dir="${test.dir}/conf"/>
         </copy>
      
-       <!-- Get testRecorder tests and config files for coreWeb-->
-       <copy todir="${test.dist.base.dir}/beehive-test-dist/netui/testRecorder/coreWeb/config">
+        <!-- Get testRecorder tests and config files for coreWeb-->
+        <copy todir="${netui.test.dist.dir}/testRecorder/coreWeb/config">
             <fileset dir="${app.dir}/drt/testRecorder/config" includes="*.xml"/>
-       </copy>
+        </copy>
     	
-       <replace dir="${test.dist.base.dir}/beehive-test-dist/netui/testRecorder/coreWeb/config" 
-       	        token="@DOMAIN_DIR@/drt/testRecorder/tests" value="@DOMAIN_DIR@/testRecorder/coreWeb/tests"/>
+        <replace dir="${netui.test.dist.dir}/testRecorder/coreWeb/config" 
+                 token="@DOMAIN_DIR@/drt/testRecorder/tests" value="@DOMAIN_DIR@/testRecorder/coreWeb/tests"/>
 
-       <copy todir="${test.dist.base.dir}/beehive-test-dist/netui/testRecorder/coreWeb/tests">
+        <copy todir="${netui.test.dist.dir}/testRecorder/coreWeb/tests">
             <fileset dir="${app.dir}/drt/testRecorder/tests"/>
-       </copy>
+        </copy>
     	
         <!-- Get testRecorder tests and config files for jsfWeb-->
-        <copy todir="${test.dist.base.dir}/beehive-test-dist/netui/testRecorder/jsfWeb/config">
+        <copy todir="${netui.test.dist.dir}/testRecorder/jsfWeb/config">
              <fileset dir="${app.dir}/jsf/testRecorder/config" excludes="testRecorder-webapp-*.xml"/>
         </copy>
     	
         <copy file="${app.dir}/jsf/testRecorder/config/testRecorder-webapp-myfaces.xml" 
-        	tofile="${test.dist.base.dir}/beehive-test-dist/netui/testRecorder/jsfWeb/config/testRecorder-webapp.xml">
+        	tofile="${netui.test.dist.dir}/testRecorder/jsfWeb/config/testRecorder-webapp.xml">
         </copy>
      	
-        <replace dir="${test.dist.base.dir}/beehive-test-dist/netui/testRecorder/jsfWeb/config" 
+        <replace dir="${netui.test.dist.dir}/testRecorder/jsfWeb/config" 
         	     token="@DOMAIN_DIR@/jsf/testRecorder/tests-myfaces" value="@DOMAIN_DIR@/testRecorder/jsfWeb/tests"/>
 
-        <copy todir="${test.dist.base.dir}/beehive-test-dist/netui/testRecorder/jsfWeb/tests">
+        <copy todir="${netui.test.dist.dir}/testRecorder/jsfWeb/tests">
              <fileset dir="${app.dir}/jsf/testRecorder/tests-myfaces"/>
         </copy>
 
-       <!-- Get jsf resources -->
-       <copy todir="${test.dist.base.dir}/beehive-test-dist/netui/jsf">
+        <!-- Get jsf resources -->
+        <copy todir="${netui.test.dist.dir}/jsf">
              <fileset dir="${netui.home}/external/jsf"/>
-       </copy>
+        </copy>
     	
-       <!-- Get Struts resources -->
+        <!-- Get Struts resources -->
         <ant antfile="${netui.home}/ant/webappTemplate.xml" target="deploy.struts" inheritAll="false">
              <property name="struts.version" value="1.1"/>
-        	 <property name="webapp.dir" value="${test.dist.base.dir}/beehive-test-dist/netui/struts/struts1.1"/>
+        	 <property name="webapp.dir" value="${netui.test.dist.dir}/struts/struts1.1"/>
         </ant>
         <ant antfile="${netui.home}/ant/webappTemplate.xml" target="deploy.struts" inheritAll="false">
              <property name="struts.version" value="1.2"/>
-         	 <property name="webapp.dir" value="${test.dist.base.dir}/beehive-test-dist/netui/struts/struts1.2"/>
+         	 <property name="webapp.dir" value="${netui.test.dist.dir}/struts/struts1.2"/>
         </ant>
+
+        <!-- Get StrutsTestCase resources -->
+        <copy todir="${netui.test.dist.dir}/strutstestcase">
+             <fileset dir="${netui.home}/test/external/strutstestcase"/>
+        </copy>
+    	
     </target>
 	
     <target name="usage" description="How to use this build file">

Added: incubator/beehive/trunk/netui/test/external/strutstestcase/strutstest-2.1.3.jar
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/external/strutstestcase/strutstest-2.1.3.jar?rev=169968&view=auto
==============================================================================
Binary file - no diff available.

Propchange: incubator/beehive/trunk/netui/test/external/strutstestcase/strutstest-2.1.3.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: incubator/beehive/trunk/netui/test/src/junitTests/WEB-INF/struts-config.xml
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/WEB-INF/struts-config.xml?rev=169968&view=auto
==============================================================================
--- incubator/beehive/trunk/netui/test/src/junitTests/WEB-INF/struts-config.xml (added)
+++ incubator/beehive/trunk/netui/test/src/junitTests/WEB-INF/struts-config.xml Fri May 13 00:45:39 2005
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
+<struts-config/>

Propchange: incubator/beehive/trunk/netui/test/src/junitTests/WEB-INF/struts-config.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/beehive/trunk/netui/test/src/junitTests/WEB-INF/web.xml
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/WEB-INF/web.xml?rev=169968&view=auto
==============================================================================
--- incubator/beehive/trunk/netui/test/src/junitTests/WEB-INF/web.xml (added)
+++ incubator/beehive/trunk/netui/test/src/junitTests/WEB-INF/web.xml Fri May 13 00:45:39 2005
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
+    version="2.4">
+
+    <display-name>Beehive Web Application</display-name>
+
+    <filter>
+        <filter-name>PageFlowJspFilter</filter-name>
+        <filter-class>org.apache.beehive.netui.pageflow.PageFlowJspFilter</filter-class>
+    </filter>
+
+    <filter>
+        <filter-name>PageFlowFacesFilter</filter-name>
+        <filter-class>org.apache.beehive.netui.pageflow.PageFlowFacesFilter</filter-class>
+    </filter>
+
+    <filter-mapping>
+        <filter-name>PageFlowJspFilter</filter-name>
+        <url-pattern>*.jsp</url-pattern>
+        <dispatcher>FORWARD</dispatcher>
+        <dispatcher>REQUEST</dispatcher>
+        <dispatcher>INCLUDE</dispatcher>
+    </filter-mapping>
+
+    <filter-mapping>
+        <filter-name>PageFlowJspFilter</filter-name>
+        <url-pattern>*.jspx</url-pattern>
+        <dispatcher>FORWARD</dispatcher>
+        <dispatcher>REQUEST</dispatcher>
+        <dispatcher>INCLUDE</dispatcher>
+    </filter-mapping>
+
+    <filter-mapping>
+        <filter-name>PageFlowFacesFilter</filter-name>
+        <url-pattern>*.faces</url-pattern>
+        <dispatcher>FORWARD</dispatcher>
+        <dispatcher>REQUEST</dispatcher>
+        <dispatcher>INCLUDE</dispatcher>
+    </filter-mapping>
+
+    <filter-mapping>
+        <filter-name>PageFlowFacesFilter</filter-name>
+        <url-pattern>*.jsf</url-pattern>
+        <dispatcher>FORWARD</dispatcher>
+        <dispatcher>REQUEST</dispatcher>
+        <dispatcher>INCLUDE</dispatcher>
+    </filter-mapping>
+
+    <!-- Action Servlet Configuration (with debugging) -->
+    <servlet>
+        <servlet-name>action</servlet-name>
+        <servlet-class>org.apache.beehive.netui.pageflow.PageFlowActionServlet</servlet-class>
+        <init-param>
+            <param-name>config</param-name>
+            <param-value>/WEB-INF/struts-config.xml</param-value>
+        </init-param>
+        <init-param>
+            <param-name>debug</param-name>
+            <param-value>2</param-value>
+        </init-param>
+        <init-param>
+            <param-name>detail</param-name>
+            <param-value>2</param-value>
+        </init-param>
+        <load-on-startup>2</load-on-startup>
+    </servlet>
+
+    <!-- The XmlHttpRequest handler Servlet -->
+    <servlet>
+      <servlet-name>XmlHttpRequestServlet</servlet-name>
+      <servlet-class>org.apache.beehive.netui.pageflow.xmlhttprequest.XmlHttpRequestServlet</servlet-class>
+    </servlet>
+
+    <!-- Struts Action Servlet Mappings -->
+    <!-- Note that because Struts takes the *last* mapping here as the extension to add to
+         actions posted from forms, we must have *.do come after *.jpf (etc.). -->
+    <servlet-mapping>
+        <servlet-name>action</servlet-name>
+        <url-pattern>*.jpf</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>action</servlet-name>
+        <url-pattern>*.jpfs</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>action</servlet-name>
+        <url-pattern>*.jsfb</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>action</servlet-name>
+        <url-pattern>*.do</url-pattern>
+    </servlet-mapping>
+
+    <!-- XmlHttpRequest Servlet -->
+    <servlet-mapping>
+      <servlet-name>XmlHttpRequestServlet</servlet-name>
+      <url-pattern>*.xhr</url-pattern>
+    </servlet-mapping>
+
+    <welcome-file-list>
+        <welcome-file>index.jsp</welcome-file>
+    </welcome-file-list>
+</web-app>

Propchange: incubator/beehive/trunk/netui/test/src/junitTests/WEB-INF/web.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/beehive/trunk/netui/test/src/junitTests/build.xml
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/build.xml?rev=169968&r1=169967&r2=169968&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/test/src/junitTests/build.xml (original)
+++ incubator/beehive/trunk/netui/test/src/junitTests/build.xml Fri May 13 00:45:39 2005
@@ -3,6 +3,7 @@
 <project name="Beehive/NetUI/JUnitTests" default="build" basedir=".">
 
     <import file="../../ant/netui-test-imports.xml"/>
+    <import file="../../../../ant/beehive-tools.xml"/>
 
     <property name="module.name" value="junitTests"/>
     <property name="module.dir" location="${test.src.dir}/${module.name}"/>
@@ -12,6 +13,7 @@
     <path id="junit.classpath">
         <path refid="webapp.dependency.path"/>
         <path refid="junit.dependency.path"/>
+        <path refid="strutstestcase.dependency.path"/>
         <path refid="servlet.dependency.path"/>
     </path>
 
@@ -22,16 +24,6 @@
 
         <mkdir dir="${module.classes.dir}"/>
 
-        <javac srcdir="${module.dir}"
-               destdir="${module.classes.dir}"
-               classpathref="junit.classpath"
-               debug="${compile.debug}"
-               deprecation="${compile.deprecation}"
-               optimize="${compile.optimize}"
-               source="1.4">
-            <include name="**/*.java"/>
-        </javac>
-
         <copy todir="${module.classes.dir}">
           <fileset dir="${module.dir}">
                   <exclude name="./build.xml"/>
@@ -40,6 +32,15 @@
         </copy>
 
         <copy todir="${module.classes.dir}/WEB-INF/" file="${netuiconfig.xml}"/>
+        <copy todir="${module.classes.dir}/WEB-INF/" file="${netui-validator-rules.xml}"/>
+        <copy todir="${module.classes.dir}/WEB-INF/" file="${validator-rules.xml}"/>
+
+        <!-- Build all page flows and other classes. -->
+        <build-pageflows
+               srcdir="${module.dir}"
+               classoutputdir="${module.classes.dir}"
+               weboutputdir="${module.classes.dir}"
+               classpathref="junit.classpath"/>
 
         <jar jarfile="${module.jar}" basedir="${module.classes.dir}">
             <manifest>

Added: incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/MockPageFlowTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/MockPageFlowTestCase.java?rev=169968&view=auto
==============================================================================
--- incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/MockPageFlowTestCase.java (added)
+++ incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/MockPageFlowTestCase.java Fri May 13 00:45:39 2005
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * $Header:$
+ */
+package org.apache.beehive.netui.test.pageflow;
+
+import org.apache.beehive.netui.pageflow.PageFlowActionServlet;
+import servletunit.struts.MockStrutsTestCase;
+import servletunit.HttpServletRequestSimulator;
+import junit.framework.AssertionFailedError;
+
+/**
+ * Base class for Page Flow test cases running under StrutsTestCase/JUnit.
+ */ 
+public abstract class MockPageFlowTestCase
+        extends MockStrutsTestCase
+{
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+        setActionServlet( new PageFlowActionServlet() );
+        
+        // The page flow class must be on classpath; if not, assert.
+        try
+        {
+            Class.forName( getPageFlowClassName() );
+        }
+        catch ( ClassNotFoundException e )
+        {
+            throw new AssertionFailedError( "Page flow class " + getPageFlowClassName() + " not found." );
+        }
+    }
+
+    protected void tearDown()
+            throws Exception
+    {
+        super.tearDown();
+    }
+    
+    /**
+     * Get the fully-qualified class name for the page flow to be tested.
+     */ 
+    protected abstract String getPageFlowClassName();
+    
+    /**
+     * Get the webapp name, to be used in constructing the request URI.  It is rarely necessary to specify this; it
+     * defaults to "mockPageFlowWebapp".
+     */ 
+    protected String getWebappName()
+    {
+        return "mockPageFlowWebapp";
+    }
+    
+    /**
+     * Run the given action on the page flow determined by {@link #getPageFlowClassName}.
+     */ 
+    protected void runAction( String actionName )
+    {
+        String modulePath = getPageFlowClassName().replace( '.', '/' );
+        int lastSlash = modulePath.lastIndexOf( '/' );
+        String actionPath = '/' + actionName + ".do";
+        HttpServletRequestSimulator mockRequest = getMockRequest();
+        
+        //
+        // Set up the request path-info and request servlet-path.  The logic differs when the page flow is the root
+        // module (the second case, below.
+        //
+        if ( lastSlash != -1 )
+        {
+            modulePath = modulePath.substring( 0, lastSlash );
+            setRequestPathInfo( modulePath, actionPath );
+            mockRequest.setServletPath( modulePath + actionPath );
+        }
+        else
+        {
+            assertTrue( false );
+            setRequestPathInfo( actionPath );
+            mockRequest.setServletPath( actionPath );
+        }
+        
+        mockRequest.setRequestURI( '/' + getWebappName() + mockRequest.getServletPath() );
+        
+        actionPerform();
+    }
+    
+    /**
+     * Add an update expression and the value to be set.
+     * @param expression the update expression, e.g., "actionForm.foo".
+     * @param value the value to be set.
+     */ 
+    protected void addUpdateExpression( String expression, String value )
+    {
+        addRequestParameter( '{' + expression + '}', new String[]{ value } );
+    }
+    
+    protected MockPageFlowTestCase( String name )
+    {
+        super( name );
+    }
+}

Propchange: incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/MockPageFlowTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/Controller.jpf
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/Controller.jpf?rev=169968&view=auto
==============================================================================
--- incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/Controller.jpf (added)
+++ incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/Controller.jpf Fri May 13 00:45:39 2005
@@ -0,0 +1,137 @@
+package org.apache.beehive.netui.test.pageflow.validation;
+
+import org.apache.beehive.netui.pageflow.*;
+import org.apache.beehive.netui.pageflow.annotations.*;
+import org.apache.struts.action.*;
+import javax.servlet.http.HttpServletRequest;
+import java.io.Serializable;
+
+@Jpf.Controller(
+    simpleActions={
+        @Jpf.SimpleAction(name="begin", path="index.jsp")
+    },
+    messageBundles={
+        @Jpf.MessageBundle(bundlePath="org.apache.beehive.netui.test.pageflow.validation.Messages")
+    }
+)
+public class Controller extends PageFlowController
+{
+    /**
+     * Validate a non-FormData-derived bean.
+     */ 
+    @Jpf.Action(
+        forwards={
+            @Jpf.Forward(name="index", path="index.jsp")
+        },
+        validationErrorForward=@Jpf.Forward(name="failure", path="index.jsp")
+    )
+    public Forward submitAnyBean( AnyBeanForm form )
+    {
+        return new Forward( "index" );
+    }
+    
+    
+    /**
+     * Validate a FormData-derived bean.
+     */ 
+    @Jpf.Action(
+        forwards={
+            @Jpf.Forward(name="index", path="index.jsp")
+        },
+        validationErrorForward=@Jpf.Forward(name="failure", path="index.jsp")
+    )
+    public Forward submitFormData( FormDataForm form )
+    {
+        return new Forward( "index" );
+    }
+
+    /**
+     * Validate a FormData-derived bean.
+     */ 
+    @Jpf.Action(
+        forwards={
+            @Jpf.Forward(name="index", path="index.jsp")
+        },
+        validationErrorForward=@Jpf.Forward(name="failure", path="index.jsp")
+    )
+    public Forward submitValidatableFormData( ValidatableFormDataForm form )
+    {
+        return new Forward( "index" );
+    }
+    
+    public static class AnyBeanForm
+            implements Serializable, Validatable
+    {
+        private String _foo;
+        
+        @Jpf.ValidatableProperty(
+                validateMinLength=@Jpf.ValidateMinLength(chars=10, messageKey="message2")
+                )
+                public String getFoo()
+        {
+            return _foo;
+        }
+        
+        public void setFoo( String foo )
+        {
+            _foo = foo;
+        }
+        
+        public void validate( ActionMapping mapping, HttpServletRequest request, ActionMessages errors )
+        {
+            errors.add( "foo", new ActionMessage( "message1" ) );
+        }
+    }
+    
+    public static class FormDataForm
+            extends FormData
+    {
+        private String _foo;
+        
+        @Jpf.ValidatableProperty(
+                validateMinLength=@Jpf.ValidateMinLength(chars=10, messageKey="message2")
+                )
+                public String getFoo()
+        {
+            return _foo;
+        }
+        
+        public void setFoo( String foo )
+        {
+            _foo = foo;
+        }
+        
+        public ActionErrors validate( ActionMapping mapping, HttpServletRequest request )
+        {
+            ActionErrors errors = super.validate( mapping, request );
+            if ( errors == null ) errors = new ActionErrors();
+            errors.add( "foo", new ActionMessage( "message1" ) );
+            return errors;
+        }
+    }
+    
+    public static class ValidatableFormDataForm
+        extends FormData
+        implements Validatable
+    {
+        private String _foo;
+
+        @Jpf.ValidatableProperty(
+            validateMinLength=@Jpf.ValidateMinLength(chars=10, messageKey="message2")
+        )
+        public String getFoo()
+        {
+            return _foo;
+        }
+
+        public void setFoo( String foo )
+        {
+            _foo = foo;
+        }
+
+        public void validate( ActionMapping mapping, HttpServletRequest request, ActionMessages errors )
+        {
+            errors.add( "foo", new ActionMessage( "message1" ) );
+        }
+    }
+}

Propchange: incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/Controller.jpf
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/Messages.properties
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/Messages.properties?rev=169968&view=auto
==============================================================================
--- incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/Messages.properties (added)
+++ incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/Messages.properties Fri May 13 00:45:39 2005
@@ -0,0 +1,2 @@
+message1=Message 1
+message2=Message 2

Propchange: incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/Messages.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/ValidationTest.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/ValidationTest.java?rev=169968&view=auto
==============================================================================
--- incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/ValidationTest.java (added)
+++ incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/ValidationTest.java Fri May 13 00:45:39 2005
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * $Header:$
+ */
+package org.apache.beehive.netui.test.pageflow.validation;
+
+import junit.framework.TestSuite;
+import junit.framework.Test;
+import org.apache.beehive.netui.test.pageflow.MockPageFlowTestCase;
+
+public class ValidationTest
+        extends MockPageFlowTestCase
+{
+    /**
+     * Test of declarative validation and method validation on a form bean which does not extend FormData, but which
+     * implements Validatable.
+     */ 
+    public void testAnyBean()
+    {
+        addUpdateExpression( "actionForm.foo", "too-short" );
+        runAction( "submitAnyBean" );
+        verifyActionErrors( new String[]{ "message1", "message2" } );
+    }
+    
+    /**
+     * Test of declarative validation and method validation on a form bean which extends FormData and which overrides
+     * the base validate().
+     */ 
+    public void testFormData()
+    {
+        addUpdateExpression( "actionForm.foo", "too-short" );
+        runAction( "submitFormData" );
+        verifyActionErrors( new String[]{ "message1", "message2" } );
+    }
+    
+    /**
+     * Test of declarative validation and method validation on a form bean which extends FormData and which implements
+     * Validatable.
+     */ 
+    public void testValidatableFormData()
+    {
+        addUpdateExpression( "actionForm.foo", "too-short" );
+        runAction( "submitValidatableFormData" );
+        verifyActionErrors( new String[]{ "message1", "message2" } );
+    }
+    
+    public ValidationTest( String name )
+    {
+        super( name );
+    }
+
+    protected String getPageFlowClassName()
+    {
+        return "org.apache.beehive.netui.test.pageflow.validation.Controller";
+    }
+
+    public static Test suite()
+    {
+        return new TestSuite( ValidationTest.class );
+    }
+}

Propchange: incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/ValidationTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/index.jsp
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/index.jsp?rev=169968&view=auto
==============================================================================
--- incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/index.jsp (added)
+++ incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/index.jsp Fri May 13 00:45:39 2005
@@ -0,0 +1,25 @@
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib prefix="netui" uri="http://beehive.apache.org/netui/tags-html-1.0"%>
+<%@ taglib prefix="netui-data" uri="http://beehive.apache.org/netui/tags-databinding-1.0"%>
+<%@ taglib prefix="netui-template" uri="http://beehive.apache.org/netui/tags-template-1.0"%>
+
+
+<netui:html>
+    <head>
+        <netui:base/>
+    </head>
+    <netui:body>
+        <h3>${pageFlow.URI}</h3>
+
+        <netui:anchor action="begin">begin</netui:anchor>
+
+        <netui:form action="submit">
+            foo: <netui:textBox dataSource="actionForm.foo"/><netui:error key="foo"/>
+            <br/>
+            <netui:button value="submit"/>
+        </netui:form>
+    </netui:body>
+</netui:html>
+
+  
+

Propchange: incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/pageflow/validation/index.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/beehive/trunk/test/dist-test/build.xml
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/test/dist-test/build.xml?rev=169968&r1=169967&r2=169968&view=diff
==============================================================================
--- incubator/beehive/trunk/test/dist-test/build.xml (original)
+++ incubator/beehive/trunk/test/dist-test/build.xml Fri May 13 00:45:39 2005
@@ -90,7 +90,7 @@
          <ant dir="${beehive.home}/netui/test/dist-test" antfile="build.xml" target="build.tests" inheritAll="false"/>
     </target>
 
-    <target name="build.controls.tests" description="Build netui tests">
+    <target name="build.controls.tests" description="Build controls tests">
         <ant dir="${beehive.home}/controls/test/dist-test" antfile="build.xml" target="build.tests" inheritAll="false">
             <property name="test.dist.base.dir" location="${test.dist.base.dir}"/>
             <property name="beehive.home" location="${beehive.home}"/>                             
@@ -103,7 +103,7 @@
          </ant>
     </target>
 
-    <target name="assemble.controls.tests" description="Assemble the netui tests for the distribution">
+    <target name="assemble.controls.tests" description="Assemble the controls tests for the distribution">
         <ant dir="${beehive.home}/controls/test/dist-test" antfile="build.xml" target="assemble.tests" inheritAll="false">
             <property name="test.dist.base.dir" location="${test.dist.base.dir}"/>
         </ant>