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/06/14 07:02:15 UTC
svn commit: r190554 - in /incubator/beehive/trunk/netui:
src/pageflow/org/apache/beehive/netui/pageflow/
test/webapps/drt/coreWeb/miniTests/initFormBeanInterface/
test/webapps/drt/coreWeb/miniTests/postToXmlBean/
Author: rich
Date: Mon Jun 13 22:02:13 2005
New Revision: 190554
URL: http://svn.apache.org/viewcvs?rev=190554&view=rev
Log:
Fix for http://issues.apache.org/jira/browse/BEEHIVE-812 : Cannot provide an initial value for an action that accepts an interface as its form bean
Also added a test of posting data directly into an XmlBean. This functionality wasn't broken; the test was just conspicuously missing.
tests: bvt in netui (WinXP)
BB: self (linux)
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/initFormBeanInterface/
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/initFormBeanInterface/Controller.jpf (with props)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/initFormBeanInterface/index.jsp (with props)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/postToXmlBean/
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/postToXmlBean/Controller.jpf (with props)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/postToXmlBean/index.jsp (with props)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/postToXmlBean/success.jsp (with props)
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowUtils.java
Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowUtils.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowUtils.java?rev=190554&r1=190553&r2=190554&view=diff
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowUtils.java (original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowUtils.java Mon Jun 13 22:02:13 2005
@@ -532,21 +532,48 @@
//
// Get the names of *all* form beans of the desired type, and blast out this instance under all those names.
//
- List/*< String >*/ formNames = getFormNamesFromModuleConfig( formClass.getName(), moduleConfig );
+ List formNames = getFormNamesFromModuleConfig( formClass.getName(), moduleConfig );
+ List additionalFormNames = null;
- if ( formNames == null )
+ //
+ // formNames is a statically-scoped list. Below, we create a dynamic list of form names that correspond
+ // to *implemented interfaces* of the given form bean class.
+ //
+ Class[] interfaces = formClass.getInterfaces();
+ for ( int i = 0; i < interfaces.length; i++ )
+ {
+ Class formInterface = interfaces[i];
+ List toAdd = getFormNamesFromModuleConfig( formInterface.getName(), moduleConfig );
+ if ( toAdd != null )
+ {
+ if ( additionalFormNames == null ) additionalFormNames = new ArrayList();
+ additionalFormNames.addAll( toAdd );
+ }
+ }
+
+ if ( formNames == null && additionalFormNames == null )
{
String formName = generateFormBeanName( formClass, request );
InternalUtils.setFormInScope( formName, form, mapping, request, overwrite );
}
else
{
- assert formNames.size() > 0; // getFormNamesFromModuleConfig returns null or a nonempty list
+ if ( formNames != null )
+ {
+ for ( Iterator i = formNames.iterator(); i.hasNext(); )
+ {
+ String formName = ( String ) i.next();
+ InternalUtils.setFormInScope( formName, form, mapping, request, overwrite );
+ }
+ }
- for ( Iterator ii = formNames.iterator(); ii.hasNext(); )
+ if ( additionalFormNames != null )
{
- String formName = ( String ) ii.next();
- InternalUtils.setFormInScope( formName, form, mapping, request, overwrite );
+ for ( Iterator i = additionalFormNames.iterator(); i.hasNext(); )
+ {
+ String formName = ( String ) i.next();
+ InternalUtils.setFormInScope( formName, form, mapping, request, overwrite );
+ }
}
}
}
Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/initFormBeanInterface/Controller.jpf
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/initFormBeanInterface/Controller.jpf?rev=190554&view=auto
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/initFormBeanInterface/Controller.jpf (added)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/initFormBeanInterface/Controller.jpf Mon Jun 13 22:02:13 2005
@@ -0,0 +1,70 @@
+/*
+ * 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.initFormBeanInterface;
+
+import org.apache.beehive.netui.pageflow.*;
+import org.apache.beehive.netui.pageflow.annotations.*;
+import java.io.Serializable;
+
+@Jpf.Controller()
+public class Controller extends PageFlowController
+{
+ @Jpf.Action(
+ forwards={
+ @Jpf.Forward(name="index", path="index.jsp")
+ }
+ )
+ public Forward begin()
+ {
+ MyForm bean = new MyForm();
+ bean.setFoo( "got it" );
+ return new Forward( "index", bean );
+ }
+
+ @Jpf.Action(
+ forwards={
+ @Jpf.Forward(name="index", path="index.jsp")
+ }
+ )
+ public Forward submit( MyFormInterface form )
+ {
+ return new Forward( "index" );
+ }
+
+ public static class MyForm
+ implements MyFormInterface, Serializable
+ {
+ private String _foo;
+
+ public String getFoo()
+ {
+ return _foo;
+ }
+
+ public void setFoo( String foo )
+ {
+ _foo = foo;
+ }
+ }
+
+ public interface MyFormInterface
+ {
+ public String getFoo();
+ public void setFoo( String foo );
+ }
+}
Propchange: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/initFormBeanInterface/Controller.jpf
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/initFormBeanInterface/index.jsp
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/initFormBeanInterface/index.jsp?rev=190554&view=auto
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/initFormBeanInterface/index.jsp (added)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/initFormBeanInterface/index.jsp Mon Jun 13 22:02:13 2005
@@ -0,0 +1,27 @@
+<%@ 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>
+
+ This test verifies that we can initialize the form bean on a JSP even when the destination
+ action accepts an <i>interface</i> as its form bean argument. The previous action passes a
+ concrete implementation of that interface on the Forward to this page.
+ <br/>
+ <br/>
+
+ <netui:form action="submit">
+ foo: <netui:textBox dataSource="actionForm.foo"/><netui:error key="foo"/>
+ </netui:form>
+ </netui:body>
+</netui:html>
+
+
+
Propchange: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/initFormBeanInterface/index.jsp
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/postToXmlBean/Controller.jpf
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/postToXmlBean/Controller.jpf?rev=190554&view=auto
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/postToXmlBean/Controller.jpf (added)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/postToXmlBean/Controller.jpf Mon Jun 13 22:02:13 2005
@@ -0,0 +1,68 @@
+/*
+ * 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.postToXmlBean;
+
+import org.apache.beehive.netui.pageflow.*;
+import org.apache.beehive.netui.pageflow.annotations.*;
+import org.openuri.customerPortfolio.Stock;
+
+@Jpf.Controller(
+ simpleActions={
+ @Jpf.SimpleAction(name="begin", path="index.jsp")
+ }
+)
+public class Controller extends PageFlowController
+{
+ @Jpf.Action(
+ forwards={
+ @Jpf.Forward(
+ name="success",
+ path="success.jsp",
+ actionOutputs={
+ @Jpf.ActionOutput(name="stock", type=Stock.class, required=true)
+ }
+ )
+ },
+ validatableProperties={
+ @Jpf.ValidatableProperty(
+ propertyName="symbol",
+ displayName="The symbol",
+ validateRequired=@Jpf.ValidateRequired(),
+ validateMask=@Jpf.ValidateMask(
+ regex="[A-Z][A-Z][A-Z][A-Z]",
+ message="The symbol must be exacly four uppercase characters."
+ )
+ ),
+ @Jpf.ValidatableProperty(
+ propertyName="name",
+ displayName="The name",
+ validateRequired=@Jpf.ValidateRequired()
+ ),
+ @Jpf.ValidatableProperty(
+ propertyName="price",
+ displayName="The price",
+ validateRange=@Jpf.ValidateRange(minFloat=0.01, maxFloat=100000.00)
+ )
+ },
+ validationErrorForward=@Jpf.Forward(name="failure", path="index.jsp")
+ )
+ public Forward submit( Stock stock )
+ {
+ return new Forward( "success", "stock", stock );
+ }
+}
Propchange: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/postToXmlBean/Controller.jpf
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/postToXmlBean/index.jsp
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/postToXmlBean/index.jsp?rev=190554&view=auto
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/postToXmlBean/index.jsp (added)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/postToXmlBean/index.jsp Mon Jun 13 22:02:13 2005
@@ -0,0 +1,41 @@
+<%@ 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>
+
+ This test confirms that we can post data directly into an XmlBean (and also that we can run
+ validation rules on XmlBean properties).
+ <br/>
+ <br/>
+
+ <netui:form action="submit">
+ <table>
+ <tr>
+ <td>symbol:</td>
+ <td><netui:textBox dataSource="actionForm.symbol"/><netui:error key="symbol"/></td>
+ </tr>
+ <tr>
+ <td>name:</td>
+ <td><netui:textBox dataSource="actionForm.name"/><netui:error key="name"/></td>
+ </tr>
+ <tr>
+ <td>price:</td>
+ <td><netui:textBox dataSource="actionForm.price"/><netui:error key="price"/></td>
+ </tr>
+ </table>
+ <br/>
+ <netui:button value="submit"/>
+ </netui:form>
+ </netui:body>
+</netui:html>
+
+
+
Propchange: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/postToXmlBean/index.jsp
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/postToXmlBean/success.jsp
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/postToXmlBean/success.jsp?rev=190554&view=auto
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/postToXmlBean/success.jsp (added)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/postToXmlBean/success.jsp Mon Jun 13 22:02:13 2005
@@ -0,0 +1,36 @@
+<%@ 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>
+
+ Success. The data submitted was:
+ <table>
+ <tr>
+ <td>symbol:</td>
+ <td><b>${pageInput.stock.symbol}</b></td>
+ </tr>
+ <tr>
+ <td>name:</td>
+ <td><b>${pageInput.stock.name}</b></td>
+ </tr>
+ <tr>
+ <td>price:</td>
+ <td><b>${pageInput.stock.price}</b></td>
+ </tr>
+ </table>
+
+ <br/>
+ <netui:anchor action="begin">start over</netui:anchor>
+ </netui:body>
+</netui:html>
+
+
+
Propchange: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/postToXmlBean/success.jsp
------------------------------------------------------------------------------
svn:eol-style = native