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/22 06:16:28 UTC
svn commit: r290884 - in /beehive/trunk/netui:
src/tags-html/org/apache/beehive/netui/tags/html/
test/webapps/drt/coreWeb/validation/messages/bundles/
test/webapps/drt/testRecorder/config/ test/webapps/drt/testRecorder/tests/
Author: rich
Date: Wed Sep 21 21:16:10 2005
New Revision: 290884
URL: http://svn.apache.org/viewcvs?rev=290884&view=rev
Log:
This is a contribution from Carlin Rogers to address http://issues.apache.org/jira/browse/BEEHIVE-307 : Struts validator support for the msg and args' bundle attribute is not working
tests: bvt in netui (WinXP)
BB: self (linux)
Added:
beehive/trunk/netui/test/webapps/drt/coreWeb/validation/messages/bundles/
beehive/trunk/netui/test/webapps/drt/coreWeb/validation/messages/bundles/Controller.jpf (with props)
beehive/trunk/netui/test/webapps/drt/coreWeb/validation/messages/bundles/index.jsp (with props)
beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidatorMsgBundles.xml (with props)
Modified:
beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ErrorBaseTag.java
beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
Modified: beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ErrorBaseTag.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ErrorBaseTag.java?rev=290884&r1=290883&r2=290884&view=diff
==============================================================================
--- beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ErrorBaseTag.java (original)
+++ beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ErrorBaseTag.java Wed Sep 21 21:16:10 2005
@@ -118,6 +118,14 @@
if (key.length() == 0) {
return "";
}
+ else if (!report.isResource()) {
+ //
+ // This covers the case where the validator has already used MessageResources
+ // with an alternate resource bundle to formatted the message before
+ // creating the ActionMessage. Just return the already formatted message.
+ //
+ message = report.getKey();
+ }
else {
ModuleConfig curModuleConfig = RequestUtils.getModuleConfig(pageContext);
ServletContext servletContext = pageContext.getServletContext();
Added: beehive/trunk/netui/test/webapps/drt/coreWeb/validation/messages/bundles/Controller.jpf
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/coreWeb/validation/messages/bundles/Controller.jpf?rev=290884&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/coreWeb/validation/messages/bundles/Controller.jpf (added)
+++ beehive/trunk/netui/test/webapps/drt/coreWeb/validation/messages/bundles/Controller.jpf Wed Sep 21 21:16:10 2005
@@ -0,0 +1,154 @@
+/*
+ * Copyright 2005 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 validation.messages.bundles;
+
+import javax.servlet.http.HttpSession;
+
+import org.apache.beehive.netui.pageflow.Forward;
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
+import validation.messages.ValidatableFormData;
+
+@Jpf.Controller(
+ messageBundles = {
+ @Jpf.MessageBundle(bundlePath = "validation.messages.messages"),
+ @Jpf.MessageBundle(bundlePath = "validation.messages.moremessages",
+ bundleName = "more")
+ },
+ validatorVersion = Jpf.ValidatorVersion.oneOne,
+ validatableBeans = {
+ @Jpf.ValidatableBean(
+ type = validation.messages.ValidatableFormData.class,
+ validatableProperties = {
+ @Jpf.ValidatableProperty(
+ propertyName = "item1",
+ validateMinLength =
+ @Jpf.ValidateMinLength(
+ chars = 2,
+ message = "minimum length for {0} is {1} chars",
+ messageArgs = {
+ @Jpf.MessageArg(
+ arg = "item1"
+ ),
+ @Jpf.MessageArg(
+ arg = "two"
+ )
+ }
+ )
+ ),
+ @Jpf.ValidatableProperty(
+ propertyName = "item2",
+ validateMaxLength =
+ @Jpf.ValidateMaxLength(
+ chars = 4,
+ messageKey = "maxlength.msg",
+ bundleName = "more",
+ messageArgs = {
+ @Jpf.MessageArg(
+ bundleName = "more",
+ argKey = "item2.maxlength.name"
+ ),
+ @Jpf.MessageArg(
+ bundleName = "more",
+ argKey = "item2.maxlength.length"
+ )
+ }
+ )
+ ),
+ @Jpf.ValidatableProperty(
+ propertyName = "item3",
+ validateMinLength =
+ @Jpf.ValidateMinLength(
+ chars = 6,
+ messageKey = "minlength.msg",
+ messageArgs = {
+ @Jpf.MessageArg(
+ arg = "six",
+ position = 1
+ )
+ }
+ )
+ ),
+ @Jpf.ValidatableProperty(
+ propertyName = "item4",
+ validateMaxLength =
+ @Jpf.ValidateMaxLength(
+ chars = 8,
+ messageKey = "maxlength.msg",
+ bundleName = "more",
+ messageArgs = {
+ @Jpf.MessageArg(
+ argKey = "item4.maxlength.length",
+ bundleName = "more",
+ position = 1
+ ),
+ @Jpf.MessageArg(
+ argKey = "item4.maxlength.name",
+ bundleName = "more",
+ position = 0
+ )
+ }
+ )
+ )
+ }
+ )
+ }
+)
+public class Controller extends PageFlowController
+{
+ @Jpf.Action(
+ forwards={
+ @Jpf.Forward(name="index", path="index.jsp")
+ }
+ )
+ protected Forward begin()
+ {
+ return new Forward("index");
+ }
+
+
+ /**
+ * Callback that is invoked when this controller instance is created.
+ */
+ protected void onCreate()
+ {
+ }
+
+ /**
+ * Callback that is invoked when this controller instance is destroyed.
+ */
+ protected void onDestroy(HttpSession session)
+ {
+ }
+
+
+ @Jpf.Action(
+ forwards = {
+ @Jpf.Forward(name = "success", path = "index.jsp")
+ },
+ validationErrorForward = @Jpf.Forward(name = "errors",
+ path = "index.jsp")
+ )
+ protected Forward validate(ValidatableFormData form)
+ {
+ Forward forward = new Forward( "success" );
+ return forward;
+ }
+}
+
Propchange: beehive/trunk/netui/test/webapps/drt/coreWeb/validation/messages/bundles/Controller.jpf
------------------------------------------------------------------------------
svn:eol-style = native
Added: beehive/trunk/netui/test/webapps/drt/coreWeb/validation/messages/bundles/index.jsp
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/coreWeb/validation/messages/bundles/index.jsp?rev=290884&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/coreWeb/validation/messages/bundles/index.jsp (added)
+++ beehive/trunk/netui/test/webapps/drt/coreWeb/validation/messages/bundles/index.jsp Wed Sep 21 21:16:10 2005
@@ -0,0 +1,58 @@
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib prefix="netui" uri="http://beehive.apache.org/netui/tags-html-1.0"%>
+
+<netui:html>
+ <head>
+ <netui:base/>
+ </head>
+ <netui:body>
+ <h3>Declarative Validation Test</h3>
+
+ <netui:form action="validate">
+ <table>
+ <tr valign="top">
+ <td>item1:</td>
+ <td>
+ <netui:textBox dataSource="actionForm.item1"></netui:textBox>
+ </td>
+ <td>
+ <netui:error key="item1"/>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td>item2:</td>
+ <td>
+ <netui:textBox dataSource="actionForm.item2"></netui:textBox>
+ </td>
+ <td>
+ <netui:error key="item2"/>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td>item3:</td>
+ <td>
+ <netui:textBox dataSource="actionForm.item3"></netui:textBox>
+ </td>
+ <td>
+ <netui:error key="item3"/>
+ </td>
+ </tr>
+ <tr valign="top">
+ <td>item4:</td>
+ <td>
+ <netui:textBox dataSource="actionForm.item4"></netui:textBox>
+ </td>
+ <td>
+ <netui:error key="item4"/>
+ </td>
+ </tr>
+ </table>
+ <br/>
+
+ <netui:button action="validate"></netui:button>
+ </netui:form>
+ <hr>
+ <netui:errors/>
+ </netui:body>
+</netui:html>
+
Propchange: beehive/trunk/netui/test/webapps/drt/coreWeb/validation/messages/bundles/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=290884&r1=290883&r2=290884&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 Wed Sep 21 21:16:10 2005
@@ -8196,6 +8196,18 @@
</features>
</test>
<test>
+ <name>ValidatorMsgBundles</name>
+ <description>Test the support for alternative message bundles for messages and args in the declarative validation annotations (version 1.1 of the validator).</description>
+ <webapp>coreWeb</webapp>
+ <categories>
+ <category>bvt</category>
+ <category>corePageFlow</category>
+ </categories>
+ <features>
+ <feature>Validation</feature>
+ </features>
+ </test>
+ <test>
<name>VariantValidation</name>
<description>Test support of locale variant in the validation locale rules and creation of the validation rules XML file.</description>
<webapp>coreWeb</webapp>
Added: beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidatorMsgBundles.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidatorMsgBundles.xml?rev=290884&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidatorMsgBundles.xml (added)
+++ beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidatorMsgBundles.xml Wed Sep 21 21:16:10 2005
@@ -0,0 +1,296 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+ <ses:sessionName>ValidatorMsgBundles</ses:sessionName>
+ <ses:tester>crogers</ses:tester>
+ <ses:startDate>31 Aug 2005, 12:00:49.276 PM MDT</ses:startDate>
+ <ses:description>Test the support for alternative message bundles for messages and args in the declarative validation annotations.</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/validation/messages/bundles/Controller.jpf</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>F1372A952AC756C671D70F2A99DD9C91</ses:value>
+ </ses:cookie>
+ <ses:cookie>
+ <ses:name>nde-textsize</ses:name>
+ <ses:value>16px</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>UTF-8,*</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.5</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=F1372A952AC756C671D70F2A99DD9C91; nde-textsize=16px</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.10) Gecko/20050716 Firefox/1.0.6</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/validation/messages/bundles/index.jsp">
+ </head>
+ <body>
+ <h3>Declarative Validation Test</h3>
+
+ <form action="/coreWeb/validation/messages/bundles/validate.do" method="post">
+ <table>
+ <tr valign="top">
+ <td>item1:</td>
+ <td>
+ <input type="text" name="{actionForm.item1}">
+ </td>
+ <td>
+
+ </td>
+ </tr>
+ <tr valign="top">
+ <td>item2:</td>
+ <td>
+ <input type="text" name="{actionForm.item2}">
+ </td>
+ <td>
+
+ </td>
+ </tr>
+ <tr valign="top">
+ <td>item3:</td>
+ <td>
+ <input type="text" name="{actionForm.item3}">
+ </td>
+ <td>
+
+ </td>
+ </tr>
+ <tr valign="top">
+ <td>item4:</td>
+ <td>
+ <input type="text" name="{actionForm.item4}">
+ </td>
+ <td>
+
+ </td>
+ </tr>
+ </table>
+ <br/>
+
+ <input type="submit" name="actionOverride:validate" value="Click">
+ </form>
+ <hr>
+
+ </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/validation/messages/bundles/validate.do</ses:uri>
+ <ses:method>POST</ses:method>
+ <ses:parameters>
+ <ses:parameter>
+ <ses:name>actionOverride:validate</ses:name>
+ <ses:value>Click</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>{actionForm.item1}</ses:name>
+ <ses:value>1</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>{actionForm.item2}</ses:name>
+ <ses:value>12345</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>{actionForm.item3}</ses:name>
+ <ses:value>1234</ses:value>
+ </ses:parameter>
+ <ses:parameter>
+ <ses:name>{actionForm.item4}</ses:name>
+ <ses:value>123456789</ses:value>
+ </ses:parameter>
+ </ses:parameters>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>F1372A952AC756C671D70F2A99DD9C91</ses:value>
+ </ses:cookie>
+ <ses:cookie>
+ <ses:name>nde-textsize</ses:name>
+ <ses:value>16px</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>UTF-8,*</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.5</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>146</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=F1372A952AC756C671D70F2A99DD9C91; nde-textsize=16px</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/validation/messages/bundles/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.10) Gecko/20050716 Firefox/1.0.6</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/validation/messages/bundles/index.jsp">
+ </head>
+ <body>
+ <h3>Declarative Validation Test</h3>
+
+ <form action="/coreWeb/validation/messages/bundles/validate.do" method="post">
+ <table>
+ <tr valign="top">
+ <td>item1:</td>
+ <td>
+ <input type="text" name="{actionForm.item1}" value="1">
+ </td>
+ <td>
+ minimum length for item1 is two chars
+
+ </td>
+ </tr>
+ <tr valign="top">
+ <td>item2:</td>
+ <td>
+ <input type="text" name="{actionForm.item2}" value="12345">
+ </td>
+ <td>
+ Maximum length validation: item two cannot be more than four chars.
+
+ </td>
+ </tr>
+ <tr valign="top">
+ <td>item3:</td>
+ <td>
+ <input type="text" name="{actionForm.item3}" value="1234">
+ </td>
+ <td>
+ Minimum length validation: Item3 cannot be less than six chars.
+
+ </td>
+ </tr>
+ <tr valign="top">
+ <td>item4:</td>
+ <td>
+ <input type="text" name="{actionForm.item4}" value="123456789">
+ </td>
+ <td>
+ Maximum length validation: item four cannot be more than eight chars.
+
+ </td>
+ </tr>
+ </table>
+ <br/>
+
+ <input type="submit" name="actionOverride:validate" value="Click">
+ </form>
+ <hr>
+ Minimum length validation: Item3 cannot be less than six chars.
+minimum length for item1 is two chars
+Maximum length validation: item four cannot be more than eight chars.
+Maximum length validation: item two cannot be more than four chars.
+
+ </body>
+
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ </ses:tests>
+ <ses:endDate>31 Aug 2005, 12:01:35.813 PM MDT</ses:endDate>
+ <ses:testCount>2</ses:testCount>
+</ses:recorderSession>
\ No newline at end of file
Propchange: beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidatorMsgBundles.xml
------------------------------------------------------------------------------
svn:eol-style = native