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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]