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/09/24 05:24:40 UTC

svn commit: r291240 - in /beehive/trunk/netui: src/compiler-core/org/apache/beehive/netui/compiler/genmodel/ src/compiler-core/org/apache/beehive/netui/compiler/grammar/ src/compiler-core/org/apache/beehive/netui/compiler/model/ src/util/org/apache/bee...

Author: rich
Date: Fri Sep 23 20:24:18 2005
New Revision: 291240

URL: http://svn.apache.org/viewcvs?rev=291240&view=rev
Log:
Fix for http://issues.apache.org/jira/browse/BEEHIVE-954 : form bean-specifc message bundle does not work when two actions use the same form bean

tests: bvt in netui (WinXP)
BB: bvt in netui (linux)


Added:
    beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/multipleActionsSameBean/
    beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/multipleActionsSameBean/FormBeanMessages.properties   (with props)
    beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/multipleActionsSameBean/
    beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/multipleActionsSameBean/Controller.jpf   (with props)
    beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/multipleActionsSameBean/index.jsp   (with props)
    beehive/trunk/netui/test/webapps/drt/testRecorder/tests/MultipleActionsSameBean.xml   (with props)
Modified:
    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenActionModel.java
    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenStrutsApp.java
    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenValidationModel.java
    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/MessageBundleGrammar.java
    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/WebappPathType.java
    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/FormBeanModel.java
    beehive/trunk/netui/src/util/org/apache/beehive/netui/util/netui.properties
    beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml

Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenActionModel.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenActionModel.java?rev=291240&r1=291239&r2=291240&view=diff
==============================================================================
--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenActionModel.java (original)
+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenActionModel.java Fri Sep 23 20:24:18 2005
@@ -21,6 +21,7 @@
 import org.apache.beehive.netui.compiler.JpfLanguageConstants;
 import org.apache.beehive.netui.compiler.model.ActionModel;
 import org.apache.beehive.netui.compiler.model.ForwardModel;
+import org.apache.beehive.netui.compiler.model.FormBeanModel;
 import org.apache.beehive.netui.compiler.typesystem.declaration.AnnotationInstance;
 import org.apache.beehive.netui.compiler.typesystem.declaration.ClassDeclaration;
 import org.apache.beehive.netui.compiler.typesystem.declaration.Declaration;
@@ -203,7 +204,10 @@
         paramType = CompilerUtils.getGenericBoundsType( paramType );
         assert paramType instanceof DeclaredType : paramType.getClass().getName();  // checker should enforce this
         TypeDeclaration decl = CompilerUtils.getDeclaration( ( DeclaredType ) paramType );
-        String formBeanName = parentApp.addFormBean( decl, this );
+        List formBeans = parentApp.getMatchingFormBeans( decl, getFormMember() != null );
+        assert formBeans.size() > 0;
+        FormBeanModel formBeanModel = (FormBeanModel) formBeans.get(0);
+        setFormBeanMessageResourcesKey(formBeanModel.getFormBeanMessageResourcesKey());
         
         //
         // If this isn't an ActionForm-derived argument, keep track of the classname for the runtime.
@@ -213,7 +217,7 @@
             setFormClass( CompilerUtils.getLoadableName( decl ) );
         }
         
-        return formBeanName;
+        return formBeanModel.getName();
     }
     
     protected AnnotationInstance getActionAnnotation( Declaration sourceElement )

Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenStrutsApp.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenStrutsApp.java?rev=291240&r1=291239&r2=291240&view=diff
==============================================================================
--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenStrutsApp.java (original)
+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenStrutsApp.java Fri Sep 23 20:24:18 2005
@@ -33,17 +33,13 @@
 import org.apache.beehive.netui.compiler.typesystem.declaration.ClassDeclaration;
 import org.apache.beehive.netui.compiler.typesystem.declaration.MethodDeclaration;
 import org.apache.beehive.netui.compiler.typesystem.declaration.Modifier;
-import org.apache.beehive.netui.compiler.typesystem.declaration.ParameterDeclaration;
 import org.apache.beehive.netui.compiler.typesystem.declaration.TypeDeclaration;
 import org.apache.beehive.netui.compiler.typesystem.env.AnnotationProcessorEnvironment;
-import org.apache.beehive.netui.compiler.typesystem.type.DeclaredType;
-import org.apache.beehive.netui.compiler.typesystem.type.TypeInstance;
 
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.PrintStream;
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -135,17 +131,18 @@
                 if ( innerType.hasModifier( Modifier.PUBLIC ) 
                      && CompilerUtils.isAssignableFrom( PAGEFLOW_FORM_CLASS_NAME, innerClass, _env ) )
                 {
-                    addFormBean( innerClass, null );
+                    getMatchingFormBeans( innerClass, false );
                 }
             }
         }
         
-    }    
-    
-    String addFormBean( TypeDeclaration formType, ActionModel usedByAction )
-    {
-        String formClass = CompilerUtils.getFormClassName( formType, _env );
+    }
 
+    /**
+     * @return a non-empty List of FormBeanModels that match the given type.
+     */
+    List getMatchingFormBeans( TypeDeclaration formType, boolean usesPageFlowScopedFormBean )
+    {
         //
         // Use the actual type of form to create the name.
         // This avoids conflicts if there are multiple forms using the
@@ -157,23 +154,27 @@
         // See if the app already has a form-bean of this type.  If so,
         // we'll just use it; otherwise, we need to create it.
         //
-        boolean usesPageFlowScopedFormBean = usedByAction != null ? usedByAction.getFormMember() != null : false;
-        List existingBeans = getFormBeansByActualType( actualType, Boolean.valueOf( usesPageFlowScopedFormBean ) );
-        String formBeanName;
+        List formBeans = getFormBeansByActualType( actualType, Boolean.valueOf( usesPageFlowScopedFormBean ) );
 
-        if ( existingBeans != null )
-        {
-            assert existingBeans.size() > 0;
-            formBeanName = ( ( FormBeanModel ) existingBeans.get( 0 ) ).getName();
-        }
-        else
-        {
-            formBeanName = getFormNameForType( actualType, usesPageFlowScopedFormBean );
-            addFormBean( new FormBeanModel( formBeanName, formClass, actualType, usesPageFlowScopedFormBean, this ) );
-            getMessageResourcesFromForm( formType, usedByAction );
+        if (formBeans == null) {
+            FormBeanModel formBeanModel = addNewFormBean(formType, usesPageFlowScopedFormBean);
+            formBeans = new ArrayList();
+            formBeans.add(formBeanModel);
         }
         
-        return formBeanName;
+        assert formBeans.size() > 0;
+        return formBeans;
+    }
+    
+    private FormBeanModel addNewFormBean(TypeDeclaration formType, boolean usesFlowScopedFormBean)
+    {
+        String actualTypeName = CompilerUtils.getLoadableName( formType );
+        String formClass = CompilerUtils.getFormClassName( formType, _env );
+        String name = getFormNameForType( actualTypeName, usesFlowScopedFormBean );
+        String key = getMessageResourcesFromFormType( formType );
+        FormBeanModel fb = new FormBeanModel(name, formClass, actualTypeName, usesFlowScopedFormBean, key, this);
+        addFormBean( fb );
+        return fb;
     }
     
     private void addMessageResources( Collection messageResources )
@@ -270,25 +271,16 @@
             {
                 ActionModel actionModel = new GenActionModel( actionMethod, this, _jclass );
                 addActionMapping( actionModel );
-                ParameterDeclaration[] params = actionMethod.getParameters();
-                
-                if ( params.length > 0 )
-                {
-                    ParameterDeclaration param1 = params[0];
-                    TypeInstance paramType = param1.getType();
-                    
-                    if ( paramType instanceof DeclaredType )
-                    {
-                        getMessageResourcesFromForm( CompilerUtils.getDeclaration( ( DeclaredType ) paramType ), actionModel );
-                    }
-                }
             }
         }
     }
-    
-    private void getMessageResourcesFromForm( TypeDeclaration formTypeDecl, ActionModel actionModel )
+
+    /**
+     * @return the message-resources key for the form bean's message bundle
+     */
+    String getMessageResourcesFromFormType( TypeDeclaration formTypeDecl )
     {
-        if ( ! ( formTypeDecl instanceof ClassDeclaration ) ) return;
+        if ( ! ( formTypeDecl instanceof ClassDeclaration ) ) return null;
         
         ClassDeclaration formClassDecl = ( ClassDeclaration ) formTypeDecl;
         
@@ -305,7 +297,7 @@
                 for ( Iterator ii = getMessageResourcesList().iterator(); ii.hasNext(); )  
                 {
                     MessageResourcesModel i = ( MessageResourcesModel ) ii.next();
-                    if ( key.equals( i.getKey() ) && i.getParameter().equals( defaultMessageResources ) ) return;
+                    if ( key.equals( i.getKey() ) && i.getParameter().equals( defaultMessageResources ) ) return key;
                 }
                 
                 MessageResourcesModel mrm = new MessageResourcesModel( this );
@@ -313,9 +305,11 @@
                 mrm.setParameter( defaultMessageResources );
                 mrm.setReturnNull( true );
                 addMessageResources( mrm );
-                if ( actionModel != null ) actionModel.setFormBeanMessageResourcesKey( key );
+                return key;
             }
         }
+        
+        return null;
     }
     
     protected String getMergeFileName()

Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenValidationModel.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenValidationModel.java?rev=291240&r1=291239&r2=291240&view=diff
==============================================================================
--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenValidationModel.java (original)
+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenValidationModel.java Fri Sep 23 20:24:18 2005
@@ -223,25 +223,13 @@
      */ 
     private List getFormBeanNames( TypeDeclaration beanType )
     {
-        String actualType = CompilerUtils.getLoadableName( beanType );
-        List formBeans = _strutsApp.getFormBeansByActualType( actualType, null );
-        ArrayList formBeanNames = new ArrayList();
-
-        if ( formBeans == null )
+        List formBeans = _strutsApp.getMatchingFormBeans( beanType, false );
+        List formBeanNames = new ArrayList();
+        
+        for ( Iterator i = formBeans.iterator(); i.hasNext(); )
         {
-            String beanClassName = CompilerUtils.getFormClassName( beanType, _strutsApp.getEnv() );
-            String formName = _strutsApp.getFormNameForType( actualType, false );
-            FormBeanModel formBean = new FormBeanModel( formName, beanClassName, actualType, false, _strutsApp );
-            _strutsApp.addFormBean( formBean );
-            formBeanNames.add( formBean.getName() );
-        }
-        else
-        {
-            for ( Iterator i = formBeans.iterator(); i.hasNext(); )
-            {
-                FormBeanModel formBeanModel = ( FormBeanModel ) i.next();
-                formBeanNames.add( formBeanModel.getName() );
-            }
+            FormBeanModel formBeanModel = ( FormBeanModel ) i.next();
+            formBeanNames.add( formBeanModel.getName() );
         }
 
         return formBeanNames;

Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/MessageBundleGrammar.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/MessageBundleGrammar.java?rev=291240&r1=291239&r2=291240&view=diff
==============================================================================
--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/MessageBundleGrammar.java (original)
+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/MessageBundleGrammar.java Fri Sep 23 20:24:18 2005
@@ -42,8 +42,7 @@
     {
         super( env, diags, requiredRuntimeVersion, runtimeVersionChecker, fcInfo );
         
-        addMemberType( BUNDLE_PATH_ATTR,
-                       new UniqueValueType( MESSAGE_BUNDLES_ATTR, false, false, null, this ) );
+        addMemberType( BUNDLE_PATH_ATTR, new UniqueValueType( MESSAGE_BUNDLES_ATTR, false, false, null, this ) );
         addMemberType( BUNDLE_NAME_ATTR, new UniqueValueType( MESSAGE_BUNDLES_ATTR, true, true, null, this ) );
     }
 

Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/WebappPathType.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/WebappPathType.java?rev=291240&r1=291239&r2=291240&view=diff
==============================================================================
--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/WebappPathType.java (original)
+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/WebappPathType.java Fri Sep 23 20:24:18 2005
@@ -232,8 +232,7 @@
                 }
             }
             
-            if ( (fileToCheck == null || ! fileToCheck.exists()) && ! ( ignoreDirectories && fileToCheck.isDirectory() ) )
-            {
+            if (fileToCheck == null || ! fileToCheck.exists()) {
                 fileExists = false;
             }
         }

Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/FormBeanModel.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/FormBeanModel.java?rev=291240&r1=291239&r2=291240&view=diff
==============================================================================
--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/FormBeanModel.java (original)
+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/FormBeanModel.java Fri Sep 23 20:24:18 2005
@@ -95,6 +95,7 @@
     private boolean _dynamic = false;
     private String _name = null;  // required to be set
     private String _type = null;  // required to be set
+    private String _formBeanMessageResourcesKey = null;
 
     /** This is a NetUI-specific property. */
     private String _actualType = null;
@@ -104,13 +105,15 @@
 
     private ArrayList _properties = new ArrayList();
 
-    public FormBeanModel( String name, String type, String actualType, boolean pageFlowScoped, StrutsApp parent )
+    public FormBeanModel( String name, String type, String actualType, boolean pageFlowScoped,
+                          String formBeanMessageResorucesKey, StrutsApp parent )
     {
         super( parent );
         _name = name;
         _type = type;
         _actualType = actualType;
         _pageFlowScoped = pageFlowScoped;
+        _formBeanMessageResourcesKey = formBeanMessageResorucesKey;
     }
 
     protected void writeToElement(XmlModelWriter xw, Element element)
@@ -187,6 +190,10 @@
     public void setActualType(String actualType)
     {
         _actualType = actualType;
+    }
+
+    public String getFormBeanMessageResourcesKey() {
+        return _formBeanMessageResourcesKey;
     }
 
     public void addProperty( String name, String type, boolean required, boolean multival )

Modified: beehive/trunk/netui/src/util/org/apache/beehive/netui/util/netui.properties
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/netui.properties?rev=291240&r1=291239&r2=291240&view=diff
==============================================================================
--- beehive/trunk/netui/src/util/org/apache/beehive/netui/util/netui.properties (original)
+++ beehive/trunk/netui/src/util/org/apache/beehive/netui/util/netui.properties Fri Sep 23 20:24:18 2005
@@ -111,7 +111,7 @@
 Tags_LocaleRequiresLanguage=If you set a country, you must also set a language when specifying a local, defaulting to Locale of Request.  The country set was "{0}"
 Tags_ErrorsException=An error occurred accessing the message bundle.  This may be because the message-resource is not defined within the page flow.  The error: {0}
 Tags_ErrorsBundleMissing=An error occurred accessing the message bundle when looking for message key "{0}".  This may be because there is no default message bundle defined for the current page flow.
-Tags_ErrorsMessageMissing=Could not find a message for message key "{0}" in the default message bundle for the current page flow.
+Tags_ErrorsMessageMissing=Could not find a message for message key "{0}" in the default message bundle for the current page flow, or in the default message bundle for the form bean.
 Tags_ParameterRenderError=The parameter type [{0}] was not recognized as a valid type.
 Tags_ParameterAccessError=The parameter type [{0}] was not recognized as a valid type, attempting to access argument ''{1}''.
 Tags_DataSourceExpressionError=An error occurred converting the data source "{0}" into an expression; {1}

Added: beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/multipleActionsSameBean/FormBeanMessages.properties
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/multipleActionsSameBean/FormBeanMessages.properties?rev=291240&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/multipleActionsSameBean/FormBeanMessages.properties (added)
+++ beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/multipleActionsSameBean/FormBeanMessages.properties Fri Sep 23 20:24:18 2005
@@ -0,0 +1,2 @@
+fooMessage=foo!
+barMessage=bar!

Propchange: beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/miniTests/multipleActionsSameBean/FormBeanMessages.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/multipleActionsSameBean/Controller.jpf
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/multipleActionsSameBean/Controller.jpf?rev=291240&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/multipleActionsSameBean/Controller.jpf (added)
+++ beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/multipleActionsSameBean/Controller.jpf Fri Sep 23 20:24:18 2005
@@ -0,0 +1,86 @@
+/*
+ * 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 miniTests.multipleActionsSameBean;
+
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.Forward;
+import org.apache.beehive.netui.pageflow.FormData;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
+@Jpf.Controller(
+    simpleActions={
+        @Jpf.SimpleAction(name="begin", path="index.jsp")
+    }
+)
+public class Controller extends PageFlowController
+{
+    @Jpf.Action(
+        forwards={
+            @Jpf.Forward(name="index", path="index.jsp")
+        },
+        validationErrorForward=@Jpf.Forward(name="failure", path="index.jsp")
+    )
+    public Forward submit(MyForm form)
+    {
+        return new Forward("index");
+    }
+
+    @Jpf.Action(
+        forwards={
+            @Jpf.Forward(name="index", path="index.jsp")
+        },
+        validationErrorForward=@Jpf.Forward(name="failure", path="index.jsp")
+    )
+    public Forward submit2(MyForm form)
+    {
+        return new Forward("index");
+    }
+
+    @Jpf.FormBean(messageBundle="miniTests.multipleActionsSameBean.FormBeanMessages")
+    public static class MyForm implements java.io.Serializable
+    {
+        private String _foo;
+        private String _bar;
+
+        @Jpf.ValidatableProperty(
+            validateMinLength=@Jpf.ValidateMinLength(chars=2, messageKey="fooMessage")
+        )
+        public String getFoo()
+        {
+            return _foo;
+        }
+
+        public void setFoo(String foo)
+        {
+            _foo = foo;
+        }
+
+        @Jpf.ValidatableProperty(
+            validateMinLength=@Jpf.ValidateMinLength(chars=2, messageKey="barMessage")
+        )
+        public String getBar()
+        {
+            return _bar;
+        }
+
+        public void setBar(String bar)
+        {
+            _bar = bar;
+        }
+    }
+}

Propchange: beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/multipleActionsSameBean/Controller.jpf
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/multipleActionsSameBean/index.jsp
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/multipleActionsSameBean/index.jsp?rev=291240&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/multipleActionsSameBean/index.jsp (added)
+++ beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/multipleActionsSameBean/index.jsp Fri Sep 23 20:24:18 2005
@@ -0,0 +1,33 @@
+<%@ 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>
+
+        <p>
+            This test ensures that two forms on the same page can submit to two actions that accept
+            the same form bean type, and that form-bean-specific messages from the bean (defined in
+            <code>@Jpf.FormBean</code>) are applied in each case.
+        </p>
+        <netui:form action="submit">
+            foo: <netui:textBox dataSource="actionForm.foo"/><netui:error key="foo"/>
+            <br/>
+            <netui:button value="submit"/>
+        </netui:form>
+        <netui:form action="submit2">
+            bar: <netui:textBox dataSource="actionForm.bar"/><netui:error key="bar"/>
+            <br/>
+            <netui:button value="submit2"/>
+        </netui:form>
+    </netui:body>
+</netui:html>
+
+  
+

Propchange: beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/multipleActionsSameBean/index.jsp
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml?rev=291240&r1=291239&r2=291240&view=diff
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml (original)
+++ beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml Fri Sep 23 20:24:18 2005
@@ -5233,6 +5233,20 @@
          </features>
       </test>
       <test>
+         <name>MultipleActionsSameBean</name>
+         <description>Test to ensure that two forms on the same page can submit to two actions that accept the same form bean type, and that form-bean-specific messages from the bean (defined in @Jpf.FormBean) are applied in each case.</description>
+         <webapp>coreWeb</webapp>
+         <categories>
+            <category>bvt</category>
+            <category>bvt.struts11</category>
+            <category>corePageFlow</category>
+         </categories>
+         <features>
+            <feature>Form</feature>
+            <feature>Validation</feature>
+         </features>
+      </test>
+      <test>
          <name>MultipleDatasource</name>
          <description>Test of Compound expressions used as data source</description>
          <webapp>coreWeb</webapp>

Added: beehive/trunk/netui/test/webapps/drt/testRecorder/tests/MultipleActionsSameBean.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/MultipleActionsSameBean.xml?rev=291240&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/testRecorder/tests/MultipleActionsSameBean.xml (added)
+++ beehive/trunk/netui/test/webapps/drt/testRecorder/tests/MultipleActionsSameBean.xml Fri Sep 23 20:24:18 2005
@@ -0,0 +1,348 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+   <ses:sessionName>MultipleActionsSameBean</ses:sessionName>
+   <ses:tester>rich</ses:tester>
+   <ses:startDate>23 Sep 2005, 06:36:41.238 PM MDT</ses:startDate>
+   <ses:description>Test to ensure that two forms on the same page can submit to two actions that accept
+Test to ensure that the same form bean type, and that form-bean-specific messages from the bean (defined in            @Jpf.FormBean) are applied in each case.</ses:description>
+   <ses:tests>
+      <ses:test>
+         <ses:testNumber>1</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/miniTests/multipleActionsSameBean/Controller.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>5FBE08BEB59D1EF05F1A1A30DDDAF16F</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>nde-textsize</ses:name>
+                  <ses:value>16px</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>Country</ses:name>
+                  <ses:value>US</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>Language</ses:name>
+                  <ses:value>en</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.7,ja;q=0.3</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=5FBE08BEB59D1EF05F1A1A30DDDAF16F; nde-textsize=16px; Country=US; Language=en</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+
+    <head>
+        <base href="http://localhost:8080/coreWeb/miniTests/multipleActionsSameBean/index.jsp">
+    </head>
+    <body>
+        <h3>/miniTests/multipleActionsSameBean/Controller.jpf</h3>
+
+        <p>
+            This test ensures that two forms on the same page can submit to two actions that accept
+            the same form bean type, and that form-bean-specific messages from the bean (defined in
+            <code>@Jpf.FormBean</code>) are applied in each case.
+        </p>
+        <form action="/coreWeb/miniTests/multipleActionsSameBean/submit.do" method="post">
+            foo: <input type="text" name="{actionForm.foo}">
+            <br/>
+            <input type="submit" value="submit">
+        </form>
+        <form action="/coreWeb/miniTests/multipleActionsSameBean/submit2.do" method="post">
+            bar: <input type="text" name="{actionForm.bar}">
+            <br/>
+            <input type="submit" value="submit2">
+        </form>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>2</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/miniTests/multipleActionsSameBean/submit.do</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>{actionForm.foo}</ses:name>
+                  <ses:value>a</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>5FBE08BEB59D1EF05F1A1A30DDDAF16F</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>nde-textsize</ses:name>
+                  <ses:value>16px</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>Country</ses:name>
+                  <ses:value>US</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>Language</ses:name>
+                  <ses:value>en</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.7,ja;q=0.3</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>22</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=5FBE08BEB59D1EF05F1A1A30DDDAF16F; nde-textsize=16px; Country=US; Language=en</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/miniTests/multipleActionsSameBean/Controller.jpf</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+
+    <head>
+        <base href="http://localhost:8080/coreWeb/miniTests/multipleActionsSameBean/index.jsp">
+    </head>
+    <body>
+        <h3>/miniTests/multipleActionsSameBean/Controller.jpf</h3>
+
+        <p>
+            This test ensures that two forms on the same page can submit to two actions that accept
+            the same form bean type, and that form-bean-specific messages from the bean (defined in
+            <code>@Jpf.FormBean</code>) are applied in each case.
+        </p>
+        <form action="/coreWeb/miniTests/multipleActionsSameBean/submit.do" method="post">
+            foo: <input type="text" name="{actionForm.foo}" value="a">foo!
+
+            <br/>
+            <input type="submit" value="submit">
+        </form>
+        <form action="/coreWeb/miniTests/multipleActionsSameBean/submit2.do" method="post">
+            bar: <input type="text" name="{actionForm.bar}">
+            <br/>
+            <input type="submit" value="submit2">
+        </form>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>3</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/miniTests/multipleActionsSameBean/submit2.do</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>{actionForm.bar}</ses:name>
+                  <ses:value>b</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>5FBE08BEB59D1EF05F1A1A30DDDAF16F</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>nde-textsize</ses:name>
+                  <ses:value>16px</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>Country</ses:name>
+                  <ses:value>US</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>Language</ses:name>
+                  <ses:value>en</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.7,ja;q=0.3</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>22</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=5FBE08BEB59D1EF05F1A1A30DDDAF16F; nde-textsize=16px; Country=US; Language=en</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/miniTests/multipleActionsSameBean/submit.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+
+    <head>
+        <base href="http://localhost:8080/coreWeb/miniTests/multipleActionsSameBean/index.jsp">
+    </head>
+    <body>
+        <h3>/miniTests/multipleActionsSameBean/Controller.jpf</h3>
+
+        <p>
+            This test ensures that two forms on the same page can submit to two actions that accept
+            the same form bean type, and that form-bean-specific messages from the bean (defined in
+            <code>@Jpf.FormBean</code>) are applied in each case.
+        </p>
+        <form action="/coreWeb/miniTests/multipleActionsSameBean/submit.do" method="post">
+            foo: <input type="text" name="{actionForm.foo}">
+            <br/>
+            <input type="submit" value="submit">
+        </form>
+        <form action="/coreWeb/miniTests/multipleActionsSameBean/submit2.do" method="post">
+            bar: <input type="text" name="{actionForm.bar}" value="b">bar!
+
+            <br/>
+            <input type="submit" value="submit2">
+        </form>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+   </ses:tests>
+   <ses:endDate>23 Sep 2005, 06:36:56.009 PM MDT</ses:endDate>
+   <ses:testCount>3</ses:testCount>
+</ses:recorderSession>

Propchange: beehive/trunk/netui/test/webapps/drt/testRecorder/tests/MultipleActionsSameBean.xml
------------------------------------------------------------------------------
    svn:eol-style = native