You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ni...@apache.org on 2005/09/15 07:48:47 UTC

svn commit: r289160 - in /jakarta/commons/proper/validator/trunk: conf/share/ src/share/org/apache/commons/validator/ src/test/org/apache/commons/validator/

Author: niallp
Date: Wed Sep 14 22:48:33 2005
New Revision: 289160

URL: http://svn.apache.org/viewcvs?rev=289160&view=rev
Log:
Bug #32522 Enable variables <var> to come from Resource Bundles.

In commons-validator this just means adding "resource" and "bundle" attributes to the DTD along with corresponding properties in org.apache.commons.validator.Var. Its up to down-stream systems, such as Struts to use these attributes to retrieve the values from the appropriate resource.

Added:
    jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/VarTest.java   (with props)
    jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/validator-var-test.xml   (with props)
Modified:
    jakarta/commons/proper/validator/trunk/conf/share/validator_1_2_0.dtd
    jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/Var.java
    jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/digester-rules.xml
    jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/ValidatorTestSuite.java

Modified: jakarta/commons/proper/validator/trunk/conf/share/validator_1_2_0.dtd
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/validator/trunk/conf/share/validator_1_2_0.dtd?rev=289160&r1=289159&r2=289160&view=diff
==============================================================================
--- jakarta/commons/proper/validator/trunk/conf/share/validator_1_2_0.dtd (original)
+++ jakarta/commons/proper/validator/trunk/conf/share/validator_1_2_0.dtd Wed Sep 14 22:48:33 2005
@@ -202,8 +202,15 @@
      one of its validators, such as the minimum and maximum values in a
      range validation. These parameters may also be referenced by one of the
      arg? elements using a shell syntax: ${var:var-name}.
+
+     N.B. resource ='true' indicates that the var-value is a resource key,
+          with the option to specify the bundle name. Validator doesn't do
+          anything itself with these values. Down-stream systems need
+          to resolve resource values.
 -->
 <!ELEMENT var (var-name, var-value, var-jstype?)>
+<!ATTLIST var resource CDATA #IMPLIED>
+<!ATTLIST var bundle CDATA #IMPLIED>
 
 
 

Modified: jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/Var.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/Var.java?rev=289160&r1=289159&r2=289160&view=diff
==============================================================================
--- jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/Var.java (original)
+++ jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/Var.java Wed Sep 14 22:48:33 2005
@@ -54,7 +54,7 @@
     private String name = null;
 
     /**
-     * The name of the value.
+     * The key or value the variable.
      */
     private String value = null;
 
@@ -64,6 +64,16 @@
     private String jsType = null;
 
     /**
+     * Whether the variable is a resource [false]
+     */
+    private boolean resource = false;
+
+    /**
+     * The bundle for a variable (when resource = 'true').
+     */
+    private String bundle = null;
+
+    /**
      * Default Constructor.
      */
     public Var() {
@@ -116,6 +126,42 @@
     }
 
     /**
+     * Tests whether or not the value is a resource key or literal value.
+     * @return <code>true</code> if value is a resource key.
+     * @since Validator 1.2.0
+     */
+    public boolean isResource() {
+        return this.resource;
+    }
+
+    /**
+     * Sets whether or not the value is a resource.
+     * @param resource If true indicates the value is a resource.
+     * @since Validator 1.2.0
+     */
+    public void setResource(boolean resource) {
+        this.resource = resource;
+    }
+
+    /**
+     * Returns the resource bundle name.
+     * @return The bundle name.
+     * @since Validator 1.2.0
+     */
+    public String getBundle() {
+        return this.bundle;
+    }
+
+    /**
+     * Sets the resource bundle name.
+     * @param bundle The new bundle name.
+     * @since Validator 1.2.0
+     */
+    public void setBundle(String bundle) {
+        this.bundle = bundle;
+    }
+
+    /**
      * Gets the JavaScript type of the variable.
      * @return The Javascript type of the variable.
      */
@@ -155,6 +201,12 @@
         results.append(name);
         results.append("  value=");
         results.append(value);
+        results.append("  resource=");
+        results.append(resource);
+        if (resource) {
+            results.append("  bundle=");
+            results.append(bundle);
+        }
         results.append("  jsType=");
         results.append(jsType);
         results.append("\n");

Modified: jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/digester-rules.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/digester-rules.xml?rev=289160&r1=289159&r2=289160&view=diff
==============================================================================
--- jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/digester-rules.xml (original)
+++ jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/digester-rules.xml Wed Sep 14 22:48:33 2005
@@ -53,10 +53,18 @@
 				<set-next-rule methodname="addField" paramtype="org.apache.commons.validator.Field" />
 				
 				<pattern value="var">
-					<call-method-rule methodname="addVar" paramcount="3" />
-					<call-param-rule pattern="var-name" paramnumber="0" />
-					<call-param-rule pattern="var-value" paramnumber="1" />
-					<call-param-rule pattern="var-jstype" paramnumber="2" />
+					<object-create-rule classname="org.apache.commons.validator.Var" />
+					<set-properties-rule/>
+					<pattern value="var-name">
+						<call-method-rule methodname="setName" paramcount="0" />
+					</pattern>
+					<pattern value="var-value">
+						<call-method-rule methodname="setValue" paramcount="0" />
+					</pattern>
+					<pattern value="var-jstype">
+						<call-method-rule methodname="setJsType" paramcount="0" />
+					</pattern>
+					<set-next-rule methodname="addVar" paramtype="org.apache.commons.validator.Var" />
 				</pattern>
 				
 				<pattern value="msg">

Modified: jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/ValidatorTestSuite.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/ValidatorTestSuite.java?rev=289160&r1=289159&r2=289160&view=diff
==============================================================================
--- jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/ValidatorTestSuite.java (original)
+++ jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/ValidatorTestSuite.java Wed Sep 14 22:48:33 2005
@@ -63,6 +63,7 @@
        suite.addTestSuite(FlagsTest.class);
        suite.addTestSuite(ExceptionTest.class);
        suite.addTest(UrlTest.suite());
+       suite.addTest(VarTest.suite());
 
        return suite;
     }

Added: jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/VarTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/VarTest.java?rev=289160&view=auto
==============================================================================
--- jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/VarTest.java (added)
+++ jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/VarTest.java Wed Sep 14 22:48:33 2005
@@ -0,0 +1,130 @@
+/*
+ * $Id$
+ * $Rev$
+ * $Date$
+ *
+ * ====================================================================
+ * Copyright 2001-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.
+ */
+
+
+package org.apache.commons.validator;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import java.util.Locale;
+import java.io.IOException;
+import org.xml.sax.SAXException;
+
+/**                                                       
+ * Test that the new Var attributes and the
+ * digester rule changes work.
+ */
+public class VarTest extends TestCommon {
+
+   /**
+    * The key used to retrieve the set of validation
+    * rules from the xml file.
+    */
+   protected static String FORM_KEY = "testForm";
+
+   /**
+    * The key used to retrieve the validator action.
+    */
+   protected static String ACTION = "byte";
+
+
+
+   public VarTest(String name) {
+       super(name);
+   }
+
+   /**
+    * Start the tests.
+    *
+    * @param theArgs the arguments. Not used
+    */
+   public static void main(String[] theArgs) {
+       junit.awtui.TestRunner.main(new String[] {VarTest.class.getName()});
+   }
+
+   /**
+    * @return a test suite (<code>TestSuite</code>) that includes all methods
+    *         starting with "test"
+    */
+   public static Test suite() {
+       // All methods starting with "test" will be executed in the test suite.
+       return new TestSuite(VarTest.class);
+   }
+
+   /**
+    * Load <code>ValidatorResources</code> from
+    * validator-multipletest.xml.
+    */
+   protected void setUp() throws IOException, SAXException {
+      // Load resources
+      loadResources("validator-var-test.xml");
+   }
+
+   protected void tearDown() {
+   }
+
+   /**
+    * With nothing provided, we should fail both because both are required.
+    */
+   public void testVars() throws ValidatorException {
+
+       Form form = resources.getForm(Locale.getDefault(), FORM_KEY);
+
+       // Get field 1
+       Field field1 = form.getField("field-1");
+       assertNotNull("field-1 is null.", field1);
+       assertEquals("field-1 property is wrong", "field-1", field1.getProperty());
+
+       // Get var-1-1
+       Var var11 = field1.getVar("var-1-1");
+       assertNotNull("var-1-1 is null.", var11);
+       assertEquals("var-1-1 name is wrong", "var-1-1", var11.getName());
+       assertEquals("var-1-1 value is wrong", "value-1-1", var11.getValue());
+       assertEquals("var-1-1 jstype is wrong", "jstype-1-1", var11.getJsType());
+       assertFalse("var-1-1 resource is true", var11.isResource());
+       assertNull("var-1-1 bundle is not null.", var11.getBundle());
+
+       // Get field 2
+       Field field2 = form.getField("field-2");
+       assertNotNull("field-2 is null.", field2);
+       assertEquals("field-2 property is wrong", "field-2", field2.getProperty());
+
+       // Get var-2-1
+       Var var21 = field2.getVar("var-2-1");
+       assertNotNull("var-2-1 is null.", var21);
+       assertEquals("var-2-1 name is wrong", "var-2-1", var21.getName());
+       assertEquals("var-2-1 value is wrong", "value-2-1", var21.getValue());
+       assertEquals("var-2-1 jstype is wrong", "jstype-2-1", var21.getJsType());
+       assertTrue("var-2-1 resource is false", var21.isResource());
+       assertEquals("var-2-1 bundle is wrong", "bundle-2-1", var21.getBundle());
+
+       // Get var-2-2
+       Var var22 = field2.getVar("var-2-2");
+       assertNotNull("var-2-2 is null.", var22);
+       assertEquals("var-2-2 name is wrong", "var-2-2", var22.getName());
+       assertEquals("var-2-2 value is wrong", "value-2-2", var22.getValue());
+       assertNull("var-2-2 jstype is not null", var22.getJsType());
+       assertFalse("var-2-2 resource is true", var22.isResource());
+       assertEquals("var-2-2 bundle is wrong", "bundle-2-2", var22.getBundle());
+
+   }
+
+}                                                         
\ No newline at end of file

Propchange: jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/VarTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/VarTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Added: jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/validator-var-test.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/validator-var-test.xml?rev=289160&view=auto
==============================================================================
--- jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/validator-var-test.xml (added)
+++ jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/validator-var-test.xml Wed Sep 14 22:48:33 2005
@@ -0,0 +1,36 @@
+<!DOCTYPE form-validation PUBLIC
+     "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.2.0//EN"
+     "http://jakarta.apache.org/commons/dtds/validator_1_2_0.dtd">
+     
+<form-validation>
+   <global>
+      <validator name="byte"
+                 classname="org.apache.commons.validator.TestValidator"
+                 method="validateByte"
+                 methodParams="java.lang.Object,org.apache.commons.validator.Field"
+                 msg=""/>
+   </global>
+
+   <formset>
+      <form name="testForm">
+         <field property="field-1" depends="byte">
+             <var>
+                 <var-name>var-1-1</var-name>
+                 <var-value>value-1-1</var-value>
+                 <var-jstype>jstype-1-1</var-jstype>
+             </var>
+         </field>
+         <field property="field-2" depends="byte">
+             <var resource="true" bundle="bundle-2-1">
+                 <var-name>var-2-1</var-name>
+                 <var-value>value-2-1</var-value>
+                 <var-jstype>jstype-2-1</var-jstype>
+             </var>
+             <var resource="false" bundle="bundle-2-2">
+                 <var-name>var-2-2</var-name>
+                 <var-value>value-2-2</var-value>
+             </var>
+         </field>
+      </form>
+   </formset>   
+</form-validation>

Propchange: jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/validator-var-test.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/validator-var-test.xml
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org