You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by se...@apache.org on 2007/05/17 07:55:43 UTC

svn commit: r538811 - in /jakarta/turbine/core/branches/TURBINE_2_3_BRANCH: src/java/org/apache/turbine/services/intake/model/ src/test/org/apache/turbine/services/intake/ xdocs/

Author: seade
Date: Wed May 16 22:55:42 2007
New Revision: 538811

URL: http://svn.apache.org/viewvc?view=rev&rev=538811
Log:
isSet() is a little different to what I had interpreted it to be - I have altered the Javadoc slightly to reflect this.  I have reverted my earlier change since it was causing required fields to be invalid when initially created.  The getSafeEmptyValue() concept contained a problem that was causing NPEs - this was only apparent when the previously mentioned change was reverted.  Added more test cases.

Modified:
    jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/services/intake/model/Field.java
    jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/services/intake/model/Group.java
    jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/services/intake/IntakeServiceTest.java
    jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/xdocs/changes.xml

Modified: jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/services/intake/model/Field.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/services/intake/model/Field.java?view=diff&rev=538811&r1=538810&r2=538811
==============================================================================
--- jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/services/intake/model/Field.java (original)
+++ jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/services/intake/model/Field.java Wed May 16 22:55:42 2007
@@ -351,7 +351,7 @@
             {
                 log.debug(name + ": Found our Key in the request, setting Value");
             }
-            if (StringUtils.isNotEmpty(pp.getString(getKey())))
+            if (pp.getString(getKey()) != null)
             {
                 setFlag = true;
             }
@@ -555,8 +555,10 @@
     }
 
     /**
-     * Flag set to true, if the test value has been set to
-     * anything other than an empty value.
+     * Flag set to true, if the test value has been set by the parser (even to
+     * an empty value, so don't used this to determine if the field contains a
+     * non-empty value).  Validation will only be executed for fields that have
+     * been set in this manner.
      *
      * @return a <code>boolean</code> value
      */
@@ -912,7 +914,7 @@
             throw new IntakeException(
                     "Attempted to assign an invalid input.");
         }
-        if (isSet())
+        if (isSet() && null != getTestValue())
         {
             valArray[0] = getTestValue();
             if (isDebugEnabled)

Modified: jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/services/intake/model/Group.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/services/intake/model/Group.java?view=diff&rev=538811&r1=538810&r2=538811
==============================================================================
--- jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/services/intake/model/Group.java (original)
+++ jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/java/org/apache/turbine/services/intake/model/Group.java Wed May 16 22:55:42 2007
@@ -187,8 +187,7 @@
         }
         for (int i = fieldsArray.length - 1; i >= 0; i--)
         {
-            if ((fieldsArray[i].isSet() || fieldsArray[i].isRequired())
-                    && !fieldsArray[i].isValidated())
+            if (fieldsArray[i].isSet() && !fieldsArray[i].isValidated())
             {
                 fieldsArray[i].validate();
             }

Modified: jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/services/intake/IntakeServiceTest.java
URL: http://svn.apache.org/viewvc/jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/services/intake/IntakeServiceTest.java?view=diff&rev=538811&r1=538810&r2=538811
==============================================================================
--- jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/services/intake/IntakeServiceTest.java (original)
+++ jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/src/test/org/apache/turbine/services/intake/IntakeServiceTest.java Wed May 16 22:55:42 2007
@@ -112,9 +112,8 @@
     }
 
     /**
-     * This test attempts to verify that an intake field returns false for
-     * isSet() when an empty field is submitted (IMHO this was a bug prior to
-     * revision 538232 (i.e. release 2.3.3).
+     * This test verifies that an intake field returns true for isSet() even
+     * when an empty field is submitted.
      *
      * @throws IntakeException
      */
@@ -132,23 +131,22 @@
         Field intRF = requiredFalseTestGroup.get("IntRF");
         Field dateRF = requiredFalseTestGroup.get("DateRF");
 
-        assertFalse("StringRF should not be set", stringRF.isSet());
+        assertTrue("StringRF should be set", stringRF.isSet());
         assertTrue("StringRF should be valid", stringRF.isValid());
         assertNull(stringRF.getValue());
-        assertFalse("IntegerRF should not be set", integerRF.isSet());
+        assertTrue("IntegerRF should be set", integerRF.isSet());
         assertTrue("IntegerRF should be valid", integerRF.isValid());
         assertNull(integerRF.getValue());
-        assertFalse("IntRF should not be set", intRF.isSet());
+        assertTrue("IntRF should be set", intRF.isSet());
         assertTrue("IntRF should be valid", intRF.isValid());
         assertNull(intRF.getValue()); // zero?
-        assertFalse("DateRF should not be set", dateRF.isSet());
+        assertTrue("DateRF should be set", dateRF.isSet());
         assertTrue("DateRF should be valid", dateRF.isValid());
         assertNull(dateRF.getValue());
     }
 
     /**
-     * This test attempts to verify that with the isSet() fix applied to Field
-     * (see testRequiredFalse()) an empty field will still clear existing
+     * This test verify that an empty field can be used to clear existing
      * values.
      *
      * @throws IntakeException
@@ -245,13 +243,55 @@
     public void testRequiredTrue() throws IntakeException
     {
         ParameterParser pp = new DefaultParameterParser();
-        pp.add("rft_0stringrf", "");
+        pp.add("rtt_0stringrt", "");
         requiredTrueTestGroup.init(Group.NEW, pp);
 
         Field stringRT = requiredTrueTestGroup.get("StringRT");
 
-        assertFalse("StringRT should not be set", stringRT.isSet());
+        assertTrue("StringRT should be set", stringRT.isSet());
         assertFalse("StringRT should not be valid", stringRT.isValid());
+        assertEquals("", stringRT.getValue());
+    }
+
+    /**
+     * This test verifies that a newly created group is not initiated in an
+     * error state.
+     *
+     * @throws IntakeException
+     */
+    public void testInitialErrorState() throws IntakeException
+    {
+        ParameterParser pp = new DefaultParameterParser();
+        requiredFalseTestGroup.init(Group.NEW, pp);
+
+        Field stringRF = requiredFalseTestGroup.get("StringRF");
+        Field integerRF = requiredFalseTestGroup.get("IntegerRF");
+        Field intRF = requiredFalseTestGroup.get("IntRF");
+        Field dateRF = requiredFalseTestGroup.get("DateRF");
+
+        assertFalse("StringRF should not be set", stringRF.isSet());
+        assertTrue("StringRF should be valid", stringRF.isValid());
+        assertEquals("StringRF should have no messages.", "", stringRF.getMessage());
+        assertNull(stringRF.getValue());
+        assertFalse("IntegerRF should not be set", integerRF.isSet());
+        assertTrue("IntegerRF should be valid", integerRF.isValid());
+        assertEquals("IntegerRF should have no messages", "", integerRF.getMessage());
+        assertNull(integerRF.getValue());
+        assertFalse("IntRF should not be set", intRF.isSet());
+        assertTrue("IntRF should be valid", intRF.isValid());
+        assertEquals("IntRF should have no messages", "", intRF.getMessage());
+        assertNull(intRF.getValue());
+        assertFalse("DateRF should not be set", dateRF.isSet());
+        assertTrue("DateRF should be valid", dateRF.isValid());
+        assertEquals("DateRF should have no messages", "", dateRF.getMessage());
+        assertNull(dateRF.getValue());
+
+        requiredTrueTestGroup.init(Group.NEW, pp);
+        Field stringRT = requiredTrueTestGroup.get("StringRT");
+
+        assertFalse("StringRT should not be set", stringRT.isSet());
+        assertTrue("StringRT should be valid", stringRT.isValid());
+        assertEquals("StringRT should have no messages.", "", stringRT.getMessage());
         assertNull(stringRT.getValue());
     }
 

Modified: jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/xdocs/changes.xml?view=diff&rev=538811&r1=538810&r2=538811
==============================================================================
--- jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/xdocs/changes.xml (original)
+++ jakarta/turbine/core/branches/TURBINE_2_3_BRANCH/xdocs/changes.xml Wed May 16 22:55:42 2007
@@ -33,8 +33,9 @@
       validating multiValued fields.
     </action>
     <action type="fix" dev="seade">
-      isSet() was returning <code>true</code> for Intake Fields even when no
-      value was provided.  Fixed and test case added.
+      Fixed a NullPointerExceptions that can occur when Intake is used to
+      validate a primitive field.  Clarified the meaning of Field.isSet() in
+      Javadoc.
     </action>
     <action type="add" dev="tv">
       Added an extension of LDAPUser named ActiveDirectoryUser to simplify the



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