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/12/09 01:07:26 UTC

svn commit: r355290 - in /beehive/trunk/netui: src/compiler-core/org/apache/beehive/netui/compiler/ src/compiler-core/org/apache/beehive/netui/compiler/genmodel/ src/compiler-core/org/apache/beehive/netui/compiler/grammar/ src/compiler-core/org/apache/...

Author: rich
Date: Thu Dec  8 16:07:17 2005
New Revision: 355290

URL: http://svn.apache.org/viewcvs?rev=355290&view=rev
Log:
Fix for http://issues.apache.org/jira/browse/BEEHIVE-961 : Add URL rule to declarative validation rule annotations

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


Added:
    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/ValidateURLGrammar.java   (with props)
    beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateURL.xml   (with props)
    beehive/trunk/netui/test/webapps/drt/web/validation/validateURL/
    beehive/trunk/netui/test/webapps/drt/web/validation/validateURL/Controller.java   (with props)
    beehive/trunk/netui/test/webapps/drt/web/validation/validateURL/index.jsp   (with props)
Modified:
    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/JpfLanguageConstants.java
    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/DefaultValidatorRuleFactory.java
    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/ValidationRulesContainerGrammar.java
    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/validation/ValidatorConstants.java
    beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/annotations/Jpf.java
    beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/validation/defaultMessages.properties
    beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
    beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughAction.xml
    beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughClass.xml
    beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughForm.xml
    beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidationDefaultMessages.xml

Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/JpfLanguageConstants.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/JpfLanguageConstants.java?rev=355290&r1=355289&r2=355290&view=diff
==============================================================================
--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/JpfLanguageConstants.java (original)
+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/JpfLanguageConstants.java Thu Dec  8 16:07:17 2005
@@ -57,6 +57,7 @@
     public static final String VALIDATE_DATE_TAG_NAME = "ValidateDate";
     public static final String VALIDATE_TYPE_TAG_NAME = "ValidateType";
     public static final String VALIDATE_VALID_WHEN_TAG_NAME = "ValidateValidWhen";
+    public static final String VALIDATE_URL_TAG_NAME = "ValidateURL";
     public static final String VALIDATE_CUSTOM_RULE_TAG_NAME = "ValidateCustomRule";
     public static final String MESSAGE_ARG_TAG_NAME = "MessageArg";
     public static final String VALIDATE_CUSTOM_VARIABLE_TAG_NAME = "ValidateCustomVariable";
@@ -155,6 +156,7 @@
     public static final String VALIDATE_DATE_ATTR = "validateDate";
     public static final String VALIDATE_TYPE_ATTR = "validateType";
     public static final String VALIDATE_VALID_WHEN_ATTR = "validateValidWhen";
+    public static final String VALIDATE_URL_ATTR = "validateURL";
     public static final String VALIDATE_CUSTOM_ATTR = "validateCustomRules";
     public static final String VALIDATABLE_PROPERTIES_ATTR = "validatableProperties";
     public static final String MESSAGE_BUNDLE_ATTR = "messageBundle";
@@ -167,6 +169,10 @@
     public static final String PREVENT_DOUBLE_SUBMIT_ATTR = "preventDoubleSubmit";
     public static final String FORWARD_REF_ATTR = "forwardRef";
     public static final String TYPE_HINT_ATTR = "typeHint";
+    public static final String ALLOW_ALL_SCHEMES_ATTR = "allowAllSchemes";
+    public static final String ALLOW_TWO_SLASHES_ATTR = "allowTwoSlashes";
+    public static final String DISALLOW_FRAGMENTS = "disallowFragments";
+    public static final String SCHEMES_ATTR = "schemes";
     
     public static final String MIN_INT_ATTR = "minInt";
     public static final String MAX_INT_ATTR = "maxInt";

Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/DefaultValidatorRuleFactory.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/DefaultValidatorRuleFactory.java?rev=355290&r1=355289&r2=355290&view=diff
==============================================================================
--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/DefaultValidatorRuleFactory.java (original)
+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/DefaultValidatorRuleFactory.java Thu Dec  8 16:07:17 2005
@@ -121,6 +121,33 @@
             rule = new ValidatorRule( RULENAME_VALID_WHEN );
             rule.setVar( VARNAME_VALID_WHEN, CompilerUtils.getString( ruleAnnotation, CONDITION_ATTR, true ) );
         }
+        else if (annName.equals(VALIDATE_URL_TAG_NAME))
+        {
+            Boolean allowAllSchemes = CompilerUtils.getBoolean(ruleAnnotation, ALLOW_ALL_SCHEMES_ATTR, true);
+            Boolean allowTwoSlashes = CompilerUtils.getBoolean(ruleAnnotation, ALLOW_TWO_SLASHES_ATTR, true);
+            Boolean disallowFragments = CompilerUtils.getBoolean(ruleAnnotation, DISALLOW_FRAGMENTS, true);
+            List schemes = CompilerUtils.getStringArray(ruleAnnotation, SCHEMES_ATTR, true);
+            
+            rule = new ValidatorRule(RULENAME_URL);
+            if (allowAllSchemes != null) {
+                rule.setVar(VARNAME_ALLOW_ALL_SCHEMES, allowAllSchemes.toString());
+            }
+            if (allowTwoSlashes != null) {
+                rule.setVar(VARNAME_ALLOW_TWO_SLASHES, allowTwoSlashes.toString());
+            }
+            if (disallowFragments != null) {
+                rule.setVar(VARNAME_DISALLOW_FRAGMENTS, disallowFragments.toString());
+            }
+            if (schemes != null) {
+                Iterator it = schemes.iterator();
+                StringBuffer schemesStr = new StringBuffer((String) it.next());
+                
+                while (it.hasNext()) {
+                    schemesStr.append(',').append(((String) it.next()).trim());
+                }
+                rule.setVar(VARNAME_SCHEMES, schemesStr.toString());
+            }
+        }
         else if ( annName.equals( VALIDATE_CUSTOM_RULE_TAG_NAME ) )
         {
             String ruleName = CompilerUtils.getString( ruleAnnotation, RULE_ATTR, false );

Added: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/ValidateURLGrammar.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/ValidateURLGrammar.java?rev=355290&view=auto
==============================================================================
--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/ValidateURLGrammar.java (added)
+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/ValidateURLGrammar.java Thu Dec  8 16:07:17 2005
@@ -0,0 +1,50 @@
+/*
+ * 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.compiler.grammar;
+
+import org.apache.beehive.netui.compiler.Diagnostics;
+import org.apache.beehive.netui.compiler.RuntimeVersionChecker;
+import org.apache.beehive.netui.compiler.typesystem.env.AnnotationProcessorEnvironment;
+
+public class ValidateURLGrammar
+        extends BaseValidationRuleGrammar
+{
+    private static String[][] MUTUALLY_EXCLUSIVE_ATTRS = {{ALLOW_ALL_SCHEMES_ATTR, SCHEMES_ATTR}};
+
+    public ValidateURLGrammar(AnnotationProcessorEnvironment env, Diagnostics diags, RuntimeVersionChecker rvc)
+    {
+        super(env, diags, rvc);
+        // no custom types needed
+    }
+
+    public String[][] getMutuallyExclusiveAttrs()
+    {
+        return MUTUALLY_EXCLUSIVE_ATTRS;
+    }
+
+    public String[][] getRequiredAttrs()
+    {
+        return null;
+    }
+
+    public String[][] getAttrDependencies()
+    {
+        return null;
+    }
+}
+

Propchange: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/ValidateURLGrammar.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/ValidationRulesContainerGrammar.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/ValidationRulesContainerGrammar.java?rev=355290&r1=355289&r2=355290&view=diff
==============================================================================
--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/ValidationRulesContainerGrammar.java (original)
+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/ValidationRulesContainerGrammar.java Thu Dec  8 16:07:17 2005
@@ -44,6 +44,7 @@
                           new BaseValidationRuleGrammar( env, diags, rvc, new String[][]{ { PATTERN_ATTR } } ) );
         addMemberGrammar( VALIDATE_TYPE_ATTR, new ValidateTypeGrammar( env, diags, rvc ) );
         addMemberGrammar( VALIDATE_VALID_WHEN_ATTR, new ValidateValidWhenGrammar( env, diags, rvc ) );
+        addMemberGrammar( VALIDATE_URL_ATTR, new ValidateURLGrammar( env, diags, rvc ) );
         addMemberArrayGrammar( VALIDATE_CUSTOM_ATTR, new ValidateCustomGrammar( env, diags, rvc ) );
     }
 }

Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/validation/ValidatorConstants.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/validation/ValidatorConstants.java?rev=355290&r1=355289&r2=355290&view=diff
==============================================================================
--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/validation/ValidatorConstants.java (original)
+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/validation/ValidatorConstants.java Thu Dec  8 16:07:17 2005
@@ -35,6 +35,7 @@
     String RULENAME_DOUBLE = "double";
     String RULENAME_DATE = "date";
     String RULENAME_VALID_WHEN = "netui_validwhen";
+    String RULENAME_URL = "url";
     
     String VARNAME_MIN = "min";
     String VARNAME_MAX = "max";
@@ -44,6 +45,10 @@
     String VARNAME_DATE_PATTERN = "datePattern";
     String VARNAME_DATE_PATTERN_STRICT = "datePatternStrict";
     String VARNAME_VALID_WHEN = RULENAME_VALID_WHEN;
+    String VARNAME_ALLOW_ALL_SCHEMES = "allowallschemes";
+    String VARNAME_ALLOW_TWO_SLASHES = "allow2slashes";
+    String VARNAME_DISALLOW_FRAGMENTS = "nofragments";
+    String VARNAME_SCHEMES = "schemes";
     
     String EXPRESSION_KEY_PREFIX = "NETUI-EXPRESSION:";
 }

Modified: beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/annotations/Jpf.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/annotations/Jpf.java?rev=355290&r1=355289&r2=355290&view=diff
==============================================================================
--- beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/annotations/Jpf.java (original)
+++ beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/annotations/Jpf.java Thu Dec  8 16:07:17 2005
@@ -1486,6 +1486,67 @@
     }
 
     /**
+     * A validation rule that will fail when it is applied to a property that has a non-empty value that is an invalid
+     * URL.
+     * Used within {@link ValidatableProperty} and {@link ValidationLocaleRules}.
+     */
+    @Target( ANNOTATION_TYPE )
+    @Retention( RUNTIME )
+    public @interface ValidateURL
+    {
+        /**
+         * If set to <code>false</code>, then this rule will not be applied.
+         */
+        boolean enabled() default true;
+
+        /**
+         * If <code>true</code>, then all schemes are allowed.  Mutually-exclusive with {@link #schemes}.
+         */
+        boolean allowAllSchemes() default false;
+
+        /**
+         * An array of schemes that are allowed in the URL.  Defaults to <code>{"http", "https", "ftp"}</code>.
+         * Mutually-exclusive with {@link #allowAllSchemes}.
+         */
+        String[] schemes() default {"http", "https", "ftp"};
+
+        /**
+         * If <code>true</code>, then double '/' characters are allowed in the URL.
+         */
+        boolean allowTwoSlashes() default false;
+
+        /**
+         * If <code>true</code>, then fragments are <strong>not</strong> allowed.
+         */
+        boolean disallowFragments() default false;
+        
+        /**
+         * The JSP 2.0-style expression (e.g., <code>${pageFlow.myProperty}</code>) or literal string that will be used
+         * as the error message.  Mutually-exclusive with {@link #messageKey}.
+         */
+        String message() default "";
+
+        /**
+         * A key in the default message bundle or in the bundle specified by {@link #bundleName} that will be
+         * used to look up the error message.  Mutually-exclusive with {@link #message}.
+         * @see MessageBundle
+         */
+        String messageKey() default "";
+
+        /**
+         * The name of the message bundle in which to look up the error message. Requires {@link #messageKey} to be set.
+         * @see MessageBundle
+         */
+        String bundleName() default "";
+
+        /**
+         * An array of message arguments, which will be used for the message obtained from {@link #message} or 
+         * {@link #messageKey}, whichever is specified.
+         */
+        MessageArg[] messageArgs() default {};
+    }
+
+    /**
      * A variable name/value that is used by {@link ValidateCustomRule}.
      */
     @Target( ANNOTATION_TYPE )
@@ -1556,37 +1617,40 @@
     @Retention( RUNTIME )
     public @interface ValidationLocaleRules
     {
-        /** A ValidateRequired rule that will be applied for the given locale. */
+        /** A {@link ValidateRequired} rule that will be applied for the given locale. */
         ValidateRequired validateRequired() default @ValidateRequired(enabled=false);
 
-        /** A ValidateMinLength rule that will be applied for the given locale. */
+        /** A {@link ValidateMinLength} rule that will be applied for the given locale. */
         ValidateMinLength validateMinLength() default @ValidateMinLength(enabled=false, chars=-1);
 
-        /** A ValidateMaxLength rule that will be applied for the given locale. */
+        /** A {@link ValidateMaxLength} rule that will be applied for the given locale. */
         ValidateMaxLength validateMaxLength() default @ValidateMaxLength(enabled=false, chars=-1);
 
-        /** A ValidateMask rule that will be applied for the given locale. */
+        /** A {@link ValidateMask} rule that will be applied for the given locale. */
         ValidateMask validateMask() default @ValidateMask(enabled=false, regex="");
 
-        /** A ValidateType rule that will be applied for the given locale. */
+        /** A {@link ValidateType} rule that will be applied for the given locale. */
         ValidateType validateType() default @ValidateType(enabled=false, type=void.class);
 
-        /** A ValidateDate rule that will be applied for the given locale. */
+        /** A {@link ValidateDate} rule that will be applied for the given locale. */
         ValidateDate validateDate() default @ValidateDate(enabled=false, pattern="");
 
-        /** A ValidateRange rule that will be applied for the given locale. */
+        /** A {@link ValidateRange} rule that will be applied for the given locale. */
         ValidateRange validateRange() default @ValidateRange(enabled=false);
 
-        /** A ValidateCreditCard rule that will be applied for the given locale. */
+        /** A {@link ValidateCreditCard} rule that will be applied for the given locale. */
         ValidateCreditCard validateCreditCard() default @ValidateCreditCard(enabled=false);
 
-        /** A ValidateEmail rule that will be applied for the given locale. */
+        /** A {@link ValidateEmail} rule that will be applied for the given locale. */
         ValidateEmail validateEmail() default @ValidateEmail(enabled=false);
 
-        /** A ValidateValidWhen rule that will be applied for the given locale. */
+        /** A {@link ValidateValidWhen} rule that will be applied for the given locale. */
         ValidateValidWhen validateValidWhen() default @ValidateValidWhen(enabled=false, condition="");
+        
+        /** A {@link ValidateURL} rule that will be applied for the given locale. */
+        ValidateURL validateURL() default @ValidateURL(enabled=false);
 
-        /** A ValidateCustomRule rule that will be applied for the given locale. */
+        /** A {@link ValidateCustomRule} rule that will be applied for the given locale. */
         ValidateCustomRule[] validateCustomRules() default {};
         
         /**
@@ -1644,37 +1708,40 @@
          */
         String displayNameKey() default "";
 
-        /** A ValidateRequired rule that will be applied for all locales. */
+        /** A {@link ValidateRequired} rule that will be applied for all locales. */
         ValidateRequired validateRequired() default @ValidateRequired(enabled=false);
 
-        /** A ValidateMinLength rule that will be applied for all locales. */
+        /** A {@link ValidateMinLength} rule that will be applied for all locales. */
         ValidateMinLength validateMinLength() default @ValidateMinLength(enabled=false, chars=-1);
 
-        /** A ValidateMaxLength rule that will be applied for all locales. */
+        /** A {@link ValidateMaxLength} rule that will be applied for all locales. */
         ValidateMaxLength validateMaxLength() default @ValidateMaxLength(enabled=false, chars=-1);
 
-        /** A ValidateMask rule that will be applied for all locales. */
+        /** A {@link ValidateMask} rule that will be applied for all locales. */
         ValidateMask validateMask() default @ValidateMask(enabled=false, regex="");
 
-        /** A ValidateType rule that will be applied for all locales. */
+        /** A {@link ValidateType} rule that will be applied for all locales. */
         ValidateType validateType() default @ValidateType(enabled=false, type=void.class);
 
-        /** A ValidateDate rule that will be applied for all locales. */
+        /** A {@link ValidateDate} rule that will be applied for all locales. */
         ValidateDate validateDate() default @ValidateDate(enabled=false, pattern="");
 
-        /** A ValidateRange rule that will be applied for all locales. */
+        /** A {@link ValidateRange} rule that will be applied for all locales. */
         ValidateRange validateRange() default @ValidateRange(enabled=false);
 
-        /** A ValidateCreditCard rule that will be applied for all locales. */
+        /** A {@link ValidateCreditCard} rule that will be applied for all locales. */
         ValidateCreditCard validateCreditCard() default @ValidateCreditCard(enabled=false);
 
-        /** A ValidateEmail rule that will be applied for all locales. */
+        /** A {@link ValidateEmail} rule that will be applied for all locales. */
         ValidateEmail validateEmail() default @ValidateEmail(enabled=false);
 
-        /** A ValidateValidWhen rule that will be applied for all locales. */
+        /** A {@link ValidateValidWhen} rule that will be applied for all locales. */
         ValidateValidWhen validateValidWhen() default @ValidateValidWhen(enabled=false, condition="");
 
-        /** A ValidateCustomRule rule that will be applied for all locales. */
+        /** A {@link ValidateURL} rule that will be applied for all locales. */
+        ValidateURL validateURL() default @ValidateURL(enabled=false);
+
+        /** A {@link ValidateCustomRule} rule that will be applied for all locales. */
         ValidateCustomRule[] validateCustomRules() default {};
 
         /**

Modified: beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/validation/defaultMessages.properties
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/validation/defaultMessages.properties?rev=355290&r1=355289&r2=355290&view=diff
==============================================================================
--- beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/validation/defaultMessages.properties (original)
+++ beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/validation/defaultMessages.properties Thu Dec  8 16:07:17 2005
@@ -12,5 +12,6 @@
                                                                                                                                                   
 errors.date={0} is not a date.
 errors.range={0} is not in the range {1} through {2}.
-errors.creditcard={0} is an invalid credit card number.
-errors.email={0} is an invalid e-mail address.
+errors.creditcard={0} is not a valid credit card number.
+errors.email={0} is not a valid e-mail address.
+errors.url={0} is not a valid URL.

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=355290&r1=355289&r2=355290&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 Thu Dec  8 16:07:17 2005
@@ -8435,6 +8435,20 @@
          </features>
       </test>
       <test>
+         <name>ValidateURL</name>
+         <description>Test to ensure that the @Jpf.ValidateURL annotation works correctly.</description>
+         <webapp>coreWeb</webapp>
+         <categories>
+            <category>bvt</category>
+            <category>drt</category>
+            <category>corePageFlow</category>
+         </categories>
+         <features>
+            <feature>Form</feature>
+            <feature>Validation</feature>
+         </features>
+      </test>
+      <test>
          <name>Validation2</name>
          <description>Tests of basic validation and validation using the Struts ValidatorPlugIn (as well as netui:error, netui:errors).</description>
          <webapp>coreWeb</webapp>

Modified: beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughAction.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughAction.xml?rev=355290&r1=355289&r2=355290&view=diff
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughAction.xml (original)
+++ beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughAction.xml Thu Dec  8 16:07:17 2005
@@ -875,7 +875,7 @@
                     <td>credit card:</td>
                     <td>
                         <input type="text" name="{actionForm.creditCard}" value="4444444444444447">
-                        This field is an invalid credit card number.
+                        This field is not a valid credit card number.
 
                     </td>
                 </tr>
@@ -883,7 +883,7 @@
                     <td>email:</td>
                     <td>
                         <input type="text" name="{actionForm.email}" value="invalid">
-                        This field is an invalid e-mail address.
+                        This field is not a valid e-mail address.
 
                     </td>
                 </tr>
@@ -1058,4 +1058,4 @@
    <ses:testCount>5</ses:testCount>
    <ses:passedCount>1</ses:passedCount>
    <ses:failedCount>4</ses:failedCount>
-</ses:recorderSession>
\ No newline at end of file
+</ses:recorderSession>

Modified: beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughClass.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughClass.xml?rev=355290&r1=355289&r2=355290&view=diff
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughClass.xml (original)
+++ beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughClass.xml Thu Dec  8 16:07:17 2005
@@ -1153,7 +1153,7 @@
                     <td>credit card:</td>
                     <td>
                         <input type="text" name="{actionForm.creditCard}" value="4444444444444447">
-                        This field is an invalid credit card number.
+                        This field is not a valid credit card number.
 
                     </td>
                 </tr>
@@ -1161,7 +1161,7 @@
                     <td>email:</td>
                     <td>
                         <input type="text" name="{actionForm.email}" value="invalid">
-                        This field is an invalid e-mail address.
+                        This field is not a valid e-mail address.
 
                     </td>
                 </tr>
@@ -1336,4 +1336,4 @@
    <ses:testCount>6</ses:testCount>
    <ses:passedCount>1</ses:passedCount>
    <ses:failedCount>5</ses:failedCount>
-</ses:recorderSession>
\ No newline at end of file
+</ses:recorderSession>

Modified: beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughForm.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughForm.xml?rev=355290&r1=355289&r2=355290&view=diff
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughForm.xml (original)
+++ beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateThroughForm.xml Thu Dec  8 16:07:17 2005
@@ -941,7 +941,7 @@
                     <td>credit card:</td>
                     <td>
                         <input type="text" name="{actionForm.creditCard}" value="4444444444444447">
-                        This field is an invalid credit card number.
+                        This field is not a valid credit card number.
 
                     </td>
                 </tr>
@@ -949,7 +949,7 @@
                     <td>email:</td>
                     <td>
                         <input type="text" name="{actionForm.email}" value="invalid">
-                        This field is an invalid e-mail address.
+                        This field is not a valid e-mail address.
 
                     </td>
                 </tr>
@@ -1124,4 +1124,4 @@
    <ses:testCount>5</ses:testCount>
    <ses:passedCount>1</ses:passedCount>
    <ses:failedCount>4</ses:failedCount>
-</ses:recorderSession>
\ No newline at end of file
+</ses:recorderSession>

Added: beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateURL.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateURL.xml?rev=355290&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateURL.xml (added)
+++ beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidateURL.xml Thu Dec  8 16:07:17 2005
@@ -0,0 +1,1492 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<recorderSession xmlns="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+<sessionName>ValidateURL</sessionName>
+<tester>rich</tester>
+<startDate>08 Dec 2005, 04:33:54.546 PM MST</startDate>
+<description>Test to verify that the @Jpf.ValidateURL annotation works correctly. </description>
+<tests>
+<test>
+<testNumber>1</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/validation/validateURL/Controller.jpf</uri>
+<method>GET</method>
+<parameters>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>12914CA181385287442AC9549C8F6B53</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.7,ja;q=0.3</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=12914CA181385287442AC9549C8F6B53</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<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/validateURL/index.jsp">
+    </head>
+    <body>
+        <h3>/validation/validateURL/Controller.jpf</h3>
+
+        This test verifies that the @Jpf.ValidateURL annotation works correctly.
+        <br/>
+        <br/>
+
+        <form action="/coreWeb/validation/validateURL/validateURL.do" method="post">
+            URL: <input type="text" name="{actionForm.URL}" size="50">
+                <span style="color:red"></span>
+            <br/>
+            <input type="submit" name="actionOverride:validateURL" value="validateURL">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowAllSchemes" value="validateURLAllowAllSchemes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowTwoSlashes" value="validateURLAllowTwoSlashes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLDisallowFragments" value="validateURLDisallowFragments">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowOnlySpecialSauceScheme" value="validateURLAllowOnlySpecialSauceScheme">
+            <br/>
+        </form>
+    </body>
+
+</html>]]>
+</responseBody>
+</response>
+</test>
+<test>
+<testNumber>2</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/validation/validateURL/validateURL.do</uri>
+<method>POST</method>
+<parameters>
+<parameter>
+<name>actionOverride:validateURL</name>
+<value>validateURL</value>
+</parameter>
+<parameter>
+<name>{actionForm.URL}</name>
+<value>aaa</value>
+</parameter>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>12914CA181385287442AC9549C8F6B53</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.7,ja;q=0.3</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>content-length</name>
+<value>65</value>
+</header>
+<header>
+<name>content-type</name>
+<value>application/x-www-form-urlencoded</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=12914CA181385287442AC9549C8F6B53</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>referer</name>
+<value>http://localhost:8080/coreWeb/validation/validateURL/Controller.jpf</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<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/validateURL/index.jsp">
+    </head>
+    <body>
+        <h3>/validation/validateURL/Controller.jpf</h3>
+
+        This test verifies that the @Jpf.ValidateURL annotation works correctly.
+        <br/>
+        <br/>
+
+        <form action="/coreWeb/validation/validateURL/validateURL.do" method="post">
+            URL: <input type="text" name="{actionForm.URL}" value="aaa" size="50">
+                <span style="color:red">This is not a valid URL.
+</span>
+            <br/>
+            <input type="submit" name="actionOverride:validateURL" value="validateURL">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowAllSchemes" value="validateURLAllowAllSchemes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowTwoSlashes" value="validateURLAllowTwoSlashes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLDisallowFragments" value="validateURLDisallowFragments">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowOnlySpecialSauceScheme" value="validateURLAllowOnlySpecialSauceScheme">
+            <br/>
+        </form>
+    </body>
+
+</html>]]>
+</responseBody>
+</response>
+</test>
+<test>
+<testNumber>3</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/validation/validateURL/validateURL.do</uri>
+<method>POST</method>
+<parameters>
+<parameter>
+<name>actionOverride:validateURL</name>
+<value>validateURL</value>
+</parameter>
+<parameter>
+<name>{actionForm.URL}</name>
+<value>http://www.foo.com/foo</value>
+</parameter>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>12914CA181385287442AC9549C8F6B53</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.7,ja;q=0.3</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>content-length</name>
+<value>92</value>
+</header>
+<header>
+<name>content-type</name>
+<value>application/x-www-form-urlencoded</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=12914CA181385287442AC9549C8F6B53</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>referer</name>
+<value>http://localhost:8080/coreWeb/validation/validateURL/validateURL.do</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<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/validateURL/index.jsp">
+    </head>
+    <body>
+        <h3>/validation/validateURL/Controller.jpf</h3>
+
+        This test verifies that the @Jpf.ValidateURL annotation works correctly.
+        <br/>
+        <br/>
+
+        <form action="/coreWeb/validation/validateURL/validateURL.do" method="post">
+            URL: <input type="text" name="{actionForm.URL}" value="http://www.foo.com/foo" size="50">
+                <span style="color:red"></span>
+            <br/>
+            <input type="submit" name="actionOverride:validateURL" value="validateURL">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowAllSchemes" value="validateURLAllowAllSchemes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowTwoSlashes" value="validateURLAllowTwoSlashes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLDisallowFragments" value="validateURLDisallowFragments">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowOnlySpecialSauceScheme" value="validateURLAllowOnlySpecialSauceScheme">
+            <br/>
+        </form>
+    </body>
+
+</html>]]>
+</responseBody>
+</response>
+</test>
+<test>
+<testNumber>4</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/validation/validateURL/validateURL.do</uri>
+<method>POST</method>
+<parameters>
+<parameter>
+<name>actionOverride:validateURL</name>
+<value>validateURL</value>
+</parameter>
+<parameter>
+<name>{actionForm.URL}</name>
+<value>aaa://www.foo.com/foo</value>
+</parameter>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>12914CA181385287442AC9549C8F6B53</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.7,ja;q=0.3</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>content-length</name>
+<value>91</value>
+</header>
+<header>
+<name>content-type</name>
+<value>application/x-www-form-urlencoded</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=12914CA181385287442AC9549C8F6B53</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>referer</name>
+<value>http://localhost:8080/coreWeb/validation/validateURL/validateURL.do</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<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/validateURL/index.jsp">
+    </head>
+    <body>
+        <h3>/validation/validateURL/Controller.jpf</h3>
+
+        This test verifies that the @Jpf.ValidateURL annotation works correctly.
+        <br/>
+        <br/>
+
+        <form action="/coreWeb/validation/validateURL/validateURL.do" method="post">
+            URL: <input type="text" name="{actionForm.URL}" value="aaa://www.foo.com/foo" size="50">
+                <span style="color:red">This is not a valid URL.
+</span>
+            <br/>
+            <input type="submit" name="actionOverride:validateURL" value="validateURL">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowAllSchemes" value="validateURLAllowAllSchemes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowTwoSlashes" value="validateURLAllowTwoSlashes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLDisallowFragments" value="validateURLDisallowFragments">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowOnlySpecialSauceScheme" value="validateURLAllowOnlySpecialSauceScheme">
+            <br/>
+        </form>
+    </body>
+
+</html>]]>
+</responseBody>
+</response>
+</test>
+<test>
+<testNumber>5</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/validation/validateURL/validateURL.do</uri>
+<method>POST</method>
+<parameters>
+<parameter>
+<name>actionOverride:validateURLAllowAllSchemes</name>
+<value>validateURLAllowAllSchemes</value>
+</parameter>
+<parameter>
+<name>{actionForm.URL}</name>
+<value>aaa://www.foo.com/foo</value>
+</parameter>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>12914CA181385287442AC9549C8F6B53</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.7,ja;q=0.3</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>content-length</name>
+<value>121</value>
+</header>
+<header>
+<name>content-type</name>
+<value>application/x-www-form-urlencoded</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=12914CA181385287442AC9549C8F6B53</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>referer</name>
+<value>http://localhost:8080/coreWeb/validation/validateURL/validateURL.do</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<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/validateURL/index.jsp">
+    </head>
+    <body>
+        <h3>/validation/validateURL/Controller.jpf</h3>
+
+        This test verifies that the @Jpf.ValidateURL annotation works correctly.
+        <br/>
+        <br/>
+
+        <form action="/coreWeb/validation/validateURL/validateURL.do" method="post">
+            URL: <input type="text" name="{actionForm.URL}" value="aaa://www.foo.com/foo" size="50">
+                <span style="color:red"></span>
+            <br/>
+            <input type="submit" name="actionOverride:validateURL" value="validateURL">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowAllSchemes" value="validateURLAllowAllSchemes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowTwoSlashes" value="validateURLAllowTwoSlashes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLDisallowFragments" value="validateURLDisallowFragments">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowOnlySpecialSauceScheme" value="validateURLAllowOnlySpecialSauceScheme">
+            <br/>
+        </form>
+    </body>
+
+</html>]]>
+</responseBody>
+</response>
+</test>
+<test>
+<testNumber>6</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/validation/validateURL/validateURL.do</uri>
+<method>POST</method>
+<parameters>
+<parameter>
+<name>actionOverride:validateURL</name>
+<value>validateURL</value>
+</parameter>
+<parameter>
+<name>{actionForm.URL}</name>
+<value>http://www.foo.com//foo</value>
+</parameter>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>12914CA181385287442AC9549C8F6B53</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.7,ja;q=0.3</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>content-length</name>
+<value>95</value>
+</header>
+<header>
+<name>content-type</name>
+<value>application/x-www-form-urlencoded</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=12914CA181385287442AC9549C8F6B53</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>referer</name>
+<value>http://localhost:8080/coreWeb/validation/validateURL/validateURL.do</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<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/validateURL/index.jsp">
+    </head>
+    <body>
+        <h3>/validation/validateURL/Controller.jpf</h3>
+
+        This test verifies that the @Jpf.ValidateURL annotation works correctly.
+        <br/>
+        <br/>
+
+        <form action="/coreWeb/validation/validateURL/validateURL.do" method="post">
+            URL: <input type="text" name="{actionForm.URL}" value="http://www.foo.com//foo" size="50">
+                <span style="color:red">This is not a valid URL.
+</span>
+            <br/>
+            <input type="submit" name="actionOverride:validateURL" value="validateURL">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowAllSchemes" value="validateURLAllowAllSchemes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowTwoSlashes" value="validateURLAllowTwoSlashes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLDisallowFragments" value="validateURLDisallowFragments">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowOnlySpecialSauceScheme" value="validateURLAllowOnlySpecialSauceScheme">
+            <br/>
+        </form>
+    </body>
+
+</html>]]>
+</responseBody>
+</response>
+</test>
+<test>
+<testNumber>7</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/validation/validateURL/validateURL.do</uri>
+<method>POST</method>
+<parameters>
+<parameter>
+<name>actionOverride:validateURLAllowTwoSlashes</name>
+<value>validateURLAllowTwoSlashes</value>
+</parameter>
+<parameter>
+<name>{actionForm.URL}</name>
+<value>http://www.foo.com//foo</value>
+</parameter>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>12914CA181385287442AC9549C8F6B53</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.7,ja;q=0.3</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>content-length</name>
+<value>125</value>
+</header>
+<header>
+<name>content-type</name>
+<value>application/x-www-form-urlencoded</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=12914CA181385287442AC9549C8F6B53</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>referer</name>
+<value>http://localhost:8080/coreWeb/validation/validateURL/validateURL.do</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<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/validateURL/index.jsp">
+    </head>
+    <body>
+        <h3>/validation/validateURL/Controller.jpf</h3>
+
+        This test verifies that the @Jpf.ValidateURL annotation works correctly.
+        <br/>
+        <br/>
+
+        <form action="/coreWeb/validation/validateURL/validateURL.do" method="post">
+            URL: <input type="text" name="{actionForm.URL}" value="http://www.foo.com//foo" size="50">
+                <span style="color:red"></span>
+            <br/>
+            <input type="submit" name="actionOverride:validateURL" value="validateURL">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowAllSchemes" value="validateURLAllowAllSchemes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowTwoSlashes" value="validateURLAllowTwoSlashes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLDisallowFragments" value="validateURLDisallowFragments">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowOnlySpecialSauceScheme" value="validateURLAllowOnlySpecialSauceScheme">
+            <br/>
+        </form>
+    </body>
+
+</html>]]>
+</responseBody>
+</response>
+</test>
+<test>
+<testNumber>8</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/validation/validateURL/validateURL.do</uri>
+<method>POST</method>
+<parameters>
+<parameter>
+<name>actionOverride:validateURL</name>
+<value>validateURL</value>
+</parameter>
+<parameter>
+<name>{actionForm.URL}</name>
+<value>http://www.foo.com/foo#bar</value>
+</parameter>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>12914CA181385287442AC9549C8F6B53</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.7,ja;q=0.3</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>content-length</name>
+<value>98</value>
+</header>
+<header>
+<name>content-type</name>
+<value>application/x-www-form-urlencoded</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=12914CA181385287442AC9549C8F6B53</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>referer</name>
+<value>http://localhost:8080/coreWeb/validation/validateURL/validateURL.do</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<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/validateURL/index.jsp">
+    </head>
+    <body>
+        <h3>/validation/validateURL/Controller.jpf</h3>
+
+        This test verifies that the @Jpf.ValidateURL annotation works correctly.
+        <br/>
+        <br/>
+
+        <form action="/coreWeb/validation/validateURL/validateURL.do" method="post">
+            URL: <input type="text" name="{actionForm.URL}" value="http://www.foo.com/foo#bar" size="50">
+                <span style="color:red"></span>
+            <br/>
+            <input type="submit" name="actionOverride:validateURL" value="validateURL">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowAllSchemes" value="validateURLAllowAllSchemes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowTwoSlashes" value="validateURLAllowTwoSlashes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLDisallowFragments" value="validateURLDisallowFragments">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowOnlySpecialSauceScheme" value="validateURLAllowOnlySpecialSauceScheme">
+            <br/>
+        </form>
+    </body>
+
+</html>]]>
+</responseBody>
+</response>
+</test>
+<test>
+<testNumber>9</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/validation/validateURL/validateURL.do</uri>
+<method>POST</method>
+<parameters>
+<parameter>
+<name>actionOverride:validateURLDisallowFragments</name>
+<value>validateURLDisallowFragments</value>
+</parameter>
+<parameter>
+<name>{actionForm.URL}</name>
+<value>http://www.foo.com/foo#bar</value>
+</parameter>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>12914CA181385287442AC9549C8F6B53</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.7,ja;q=0.3</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>content-length</name>
+<value>132</value>
+</header>
+<header>
+<name>content-type</name>
+<value>application/x-www-form-urlencoded</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=12914CA181385287442AC9549C8F6B53</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>referer</name>
+<value>http://localhost:8080/coreWeb/validation/validateURL/validateURL.do</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<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/validateURL/index.jsp">
+    </head>
+    <body>
+        <h3>/validation/validateURL/Controller.jpf</h3>
+
+        This test verifies that the @Jpf.ValidateURL annotation works correctly.
+        <br/>
+        <br/>
+
+        <form action="/coreWeb/validation/validateURL/validateURL.do" method="post">
+            URL: <input type="text" name="{actionForm.URL}" value="http://www.foo.com/foo#bar" size="50">
+                <span style="color:red">fragments disallowed
+</span>
+            <br/>
+            <input type="submit" name="actionOverride:validateURL" value="validateURL">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowAllSchemes" value="validateURLAllowAllSchemes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowTwoSlashes" value="validateURLAllowTwoSlashes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLDisallowFragments" value="validateURLDisallowFragments">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowOnlySpecialSauceScheme" value="validateURLAllowOnlySpecialSauceScheme">
+            <br/>
+        </form>
+    </body>
+
+</html>]]>
+</responseBody>
+</response>
+</test>
+<test>
+<testNumber>10</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/validation/validateURL/validateURL.do</uri>
+<method>POST</method>
+<parameters>
+<parameter>
+<name>actionOverride:validateURL</name>
+<value>validateURL</value>
+</parameter>
+<parameter>
+<name>{actionForm.URL}</name>
+<value>special://www.foo.com/foo</value>
+</parameter>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>12914CA181385287442AC9549C8F6B53</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.7,ja;q=0.3</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>content-length</name>
+<value>95</value>
+</header>
+<header>
+<name>content-type</name>
+<value>application/x-www-form-urlencoded</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=12914CA181385287442AC9549C8F6B53</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>referer</name>
+<value>http://localhost:8080/coreWeb/validation/validateURL/validateURL.do</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<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/validateURL/index.jsp">
+    </head>
+    <body>
+        <h3>/validation/validateURL/Controller.jpf</h3>
+
+        This test verifies that the @Jpf.ValidateURL annotation works correctly.
+        <br/>
+        <br/>
+
+        <form action="/coreWeb/validation/validateURL/validateURL.do" method="post">
+            URL: <input type="text" name="{actionForm.URL}" value="special://www.foo.com/foo" size="50">
+                <span style="color:red">This is not a valid URL.
+</span>
+            <br/>
+            <input type="submit" name="actionOverride:validateURL" value="validateURL">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowAllSchemes" value="validateURLAllowAllSchemes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowTwoSlashes" value="validateURLAllowTwoSlashes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLDisallowFragments" value="validateURLDisallowFragments">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowOnlySpecialSauceScheme" value="validateURLAllowOnlySpecialSauceScheme">
+            <br/>
+        </form>
+    </body>
+
+</html>]]>
+</responseBody>
+</response>
+</test>
+<test>
+<testNumber>11</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/validation/validateURL/validateURL.do</uri>
+<method>POST</method>
+<parameters>
+<parameter>
+<name>actionOverride:validateURLAllowOnlySpecialSauceScheme</name>
+<value>validateURLAllowOnlySpecialSauceScheme</value>
+</parameter>
+<parameter>
+<name>{actionForm.URL}</name>
+<value>special://www.foo.com/foo</value>
+</parameter>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>12914CA181385287442AC9549C8F6B53</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.7,ja;q=0.3</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>content-length</name>
+<value>149</value>
+</header>
+<header>
+<name>content-type</name>
+<value>application/x-www-form-urlencoded</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=12914CA181385287442AC9549C8F6B53</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>referer</name>
+<value>http://localhost:8080/coreWeb/validation/validateURL/validateURL.do</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<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/validateURL/index.jsp">
+    </head>
+    <body>
+        <h3>/validation/validateURL/Controller.jpf</h3>
+
+        This test verifies that the @Jpf.ValidateURL annotation works correctly.
+        <br/>
+        <br/>
+
+        <form action="/coreWeb/validation/validateURL/validateURL.do" method="post">
+            URL: <input type="text" name="{actionForm.URL}" value="special://www.foo.com/foo" size="50">
+                <span style="color:red"></span>
+            <br/>
+            <input type="submit" name="actionOverride:validateURL" value="validateURL">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowAllSchemes" value="validateURLAllowAllSchemes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowTwoSlashes" value="validateURLAllowTwoSlashes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLDisallowFragments" value="validateURLDisallowFragments">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowOnlySpecialSauceScheme" value="validateURLAllowOnlySpecialSauceScheme">
+            <br/>
+        </form>
+    </body>
+
+</html>]]>
+</responseBody>
+</response>
+</test>
+<test>
+<testNumber>12</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/validation/validateURL/validateURL.do</uri>
+<method>POST</method>
+<parameters>
+<parameter>
+<name>actionOverride:validateURLAllowOnlySpecialSauceScheme</name>
+<value>validateURLAllowOnlySpecialSauceScheme</value>
+</parameter>
+<parameter>
+<name>{actionForm.URL}</name>
+<value>sauce://www.foo.com/foo</value>
+</parameter>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>12914CA181385287442AC9549C8F6B53</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.7,ja;q=0.3</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>content-length</name>
+<value>147</value>
+</header>
+<header>
+<name>content-type</name>
+<value>application/x-www-form-urlencoded</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=12914CA181385287442AC9549C8F6B53</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>referer</name>
+<value>http://localhost:8080/coreWeb/validation/validateURL/validateURL.do</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<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/validateURL/index.jsp">
+    </head>
+    <body>
+        <h3>/validation/validateURL/Controller.jpf</h3>
+
+        This test verifies that the @Jpf.ValidateURL annotation works correctly.
+        <br/>
+        <br/>
+
+        <form action="/coreWeb/validation/validateURL/validateURL.do" method="post">
+            URL: <input type="text" name="{actionForm.URL}" value="sauce://www.foo.com/foo" size="50">
+                <span style="color:red"></span>
+            <br/>
+            <input type="submit" name="actionOverride:validateURL" value="validateURL">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowAllSchemes" value="validateURLAllowAllSchemes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowTwoSlashes" value="validateURLAllowTwoSlashes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLDisallowFragments" value="validateURLDisallowFragments">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowOnlySpecialSauceScheme" value="validateURLAllowOnlySpecialSauceScheme">
+            <br/>
+        </form>
+    </body>
+
+</html>]]>
+</responseBody>
+</response>
+</test>
+<test>
+<testNumber>13</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/validation/validateURL/validateURL.do</uri>
+<method>POST</method>
+<parameters>
+<parameter>
+<name>actionOverride:validateURLAllowOnlySpecialSauceScheme</name>
+<value>validateURLAllowOnlySpecialSauceScheme</value>
+</parameter>
+<parameter>
+<name>{actionForm.URL}</name>
+<value>http://www.foo.com/foo</value>
+</parameter>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>12914CA181385287442AC9549C8F6B53</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.7,ja;q=0.3</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>content-length</name>
+<value>146</value>
+</header>
+<header>
+<name>content-type</name>
+<value>application/x-www-form-urlencoded</value>
+</header>
+<header>
+<name>cookie</name>
+<value>JSESSIONID=12914CA181385287442AC9549C8F6B53</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>referer</name>
+<value>http://localhost:8080/coreWeb/validation/validateURL/validateURL.do</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20051111 Firefox/1.5</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<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/validateURL/index.jsp">
+    </head>
+    <body>
+        <h3>/validation/validateURL/Controller.jpf</h3>
+
+        This test verifies that the @Jpf.ValidateURL annotation works correctly.
+        <br/>
+        <br/>
+
+        <form action="/coreWeb/validation/validateURL/validateURL.do" method="post">
+            URL: <input type="text" name="{actionForm.URL}" value="http://www.foo.com/foo" size="50">
+                <span style="color:red">only the schemes 'special' and 'sauce' are allowed
+</span>
+            <br/>
+            <input type="submit" name="actionOverride:validateURL" value="validateURL">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowAllSchemes" value="validateURLAllowAllSchemes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowTwoSlashes" value="validateURLAllowTwoSlashes">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLDisallowFragments" value="validateURLDisallowFragments">
+            <br/>
+            <input type="submit" name="actionOverride:validateURLAllowOnlySpecialSauceScheme" value="validateURLAllowOnlySpecialSauceScheme">
+            <br/>
+        </form>
+    </body>
+
+</html>]]>
+</responseBody>
+</response>
+</test>
+</tests>
+<endDate>08 Dec 2005, 04:35:38.696 PM MST</endDate>
+<testCount>13</testCount>
+</recorderSession>

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

Modified: beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidationDefaultMessages.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidationDefaultMessages.xml?rev=355290&r1=355289&r2=355290&view=diff
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidationDefaultMessages.xml (original)
+++ beehive/trunk/netui/test/webapps/drt/testRecorder/tests/ValidationDefaultMessages.xml Thu Dec  8 16:07:17 2005
@@ -413,7 +413,7 @@
                     <td>creditcard:</td>
                     <td>
                     <input type="text" name="{actionForm.creditcard}" value="x">
-                        This field is an invalid credit card number.
+                        This field is not a valid credit card number.
 
                     </td>
                 </tr>
@@ -421,7 +421,7 @@
                     <td>email:</td>
                     <td>
                     <input type="text" name="{actionForm.email}" value="x.">
-                        This field is an invalid e-mail address.
+                        This field is not a valid e-mail address.
 
                     </td>
                 </tr>
@@ -443,4 +443,4 @@
    <ses:testCount>2</ses:testCount>
    <ses:passedCount>0</ses:passedCount>
    <ses:failedCount>2</ses:failedCount>
-</ses:recorderSession>
\ No newline at end of file
+</ses:recorderSession>

Added: beehive/trunk/netui/test/webapps/drt/web/validation/validateURL/Controller.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/web/validation/validateURL/Controller.java?rev=355290&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/web/validation/validateURL/Controller.java (added)
+++ beehive/trunk/netui/test/webapps/drt/web/validation/validateURL/Controller.java Thu Dec  8 16:07:17 2005
@@ -0,0 +1,137 @@
+/*
+ * 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 validation.validateURL;
+
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.Forward;
+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")
+        },
+        validatableProperties={
+            @Jpf.ValidatableProperty(
+                propertyName="URL",
+                displayName="This",
+                validateURL=@Jpf.ValidateURL()
+            )
+        },
+        validationErrorForward=@Jpf.Forward(name="failure", path="index.jsp")
+    )
+    public Forward validateURL(MyForm form)
+    {
+        return new Forward("index");
+    }
+
+    @Jpf.Action(
+        forwards={
+            @Jpf.Forward(name="index", path="index.jsp")
+        },
+        validatableProperties={
+            @Jpf.ValidatableProperty(
+                propertyName="URL",
+                displayName="This",
+                validateURL=@Jpf.ValidateURL(allowAllSchemes=true)
+            )
+        },
+        validationErrorForward=@Jpf.Forward(name="failure", path="index.jsp")
+    )
+    public Forward validateURLAllowAllSchemes(MyForm form)
+    {
+        return new Forward("index");
+    }
+
+    @Jpf.Action(
+        forwards={
+            @Jpf.Forward(name="index", path="index.jsp")
+        },
+        validatableProperties={
+            @Jpf.ValidatableProperty(
+                propertyName="URL",
+                displayName="This",
+                validateURL=@Jpf.ValidateURL(allowTwoSlashes=true)
+            )
+        },
+        validationErrorForward=@Jpf.Forward(name="failure", path="index.jsp")
+    )
+    public Forward validateURLAllowTwoSlashes(MyForm form)
+    {
+        return new Forward("index");
+    }
+
+    @Jpf.Action(
+        forwards={
+            @Jpf.Forward(name="index", path="index.jsp")
+        },
+        validatableProperties={
+            @Jpf.ValidatableProperty(
+                propertyName="URL",
+                validateURL=@Jpf.ValidateURL(disallowFragments=true, message="fragments disallowed")
+            )
+        },
+        validationErrorForward=@Jpf.Forward(name="failure", path="index.jsp")
+    )
+    public Forward validateURLDisallowFragments(MyForm form)
+    {
+        return new Forward("index");
+    }
+
+
+    @Jpf.Action(
+        forwards={
+            @Jpf.Forward(name="index", path="index.jsp")
+        },
+        validatableProperties={
+            @Jpf.ValidatableProperty(
+                propertyName="URL",
+                validateURL=@Jpf.ValidateURL(
+                    schemes={ "special", "sauce" },
+                    message="only the schemes 'special' and 'sauce' are allowed"
+                )
+            )
+        },
+        validationErrorForward=@Jpf.Forward(name="failure", path="index.jsp")
+    )
+    public Forward validateURLAllowOnlySpecialSauceScheme(MyForm form)
+    {
+        return new Forward("index");
+    }
+
+    public static class MyForm implements java.io.Serializable
+    {
+        private String _url;
+
+        public String getURL()
+        {
+            return _url;
+        }
+
+        public void setURL(String url)
+        {
+            _url = url;
+        }
+    }
+}

Propchange: beehive/trunk/netui/test/webapps/drt/web/validation/validateURL/Controller.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/netui/test/webapps/drt/web/validation/validateURL/index.jsp
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/web/validation/validateURL/index.jsp?rev=355290&view=auto
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/web/validation/validateURL/index.jsp (added)
+++ beehive/trunk/netui/test/webapps/drt/web/validation/validateURL/index.jsp Thu Dec  8 16:07:17 2005
@@ -0,0 +1,37 @@
+<%@ 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 the @Jpf.ValidateURL annotation works correctly.
+        <br/>
+        <br/>
+
+        <netui:form action="validateURL">
+            URL: <netui:textBox size="50" dataSource="actionForm.URL"/>
+                <span style="color:red"><netui:error key="URL"/></span>
+            <br/>
+            <netui:button action="validateURL" value="validateURL"/>
+            <br/>
+            <netui:button action="validateURLAllowAllSchemes" value="validateURLAllowAllSchemes"/>
+            <br/>
+            <netui:button action="validateURLAllowTwoSlashes" value="validateURLAllowTwoSlashes"/>
+            <br/>
+            <netui:button action="validateURLDisallowFragments" value="validateURLDisallowFragments"/>
+            <br/>
+            <netui:button action="validateURLAllowOnlySpecialSauceScheme" value="validateURLAllowOnlySpecialSauceScheme"/>
+            <br/>
+        </netui:form>
+    </netui:body>
+</netui:html>
+
+  
+

Propchange: beehive/trunk/netui/test/webapps/drt/web/validation/validateURL/index.jsp
------------------------------------------------------------------------------
    svn:eol-style = native