You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2006/10/07 04:25:54 UTC

svn commit: r453839 - in /tapestry/tapestry4/trunk/tapestry-framework/src: java/org/apache/tapestry/enhance/ java/org/apache/tapestry/form/validator/ java/org/apache/tapestry/pageload/ test/org/apache/tapestry/form/validator/

Author: jkuhnert
Date: Fri Oct  6 19:25:53 2006
New Revision: 453839

URL: http://svn.apache.org/viewvc?view=rev&rev=453839
Log:
Resolves TAPESTRY-1109. Form fields were being validated by the required validator even if they were disabled.

Also fixed small typo in comment for some of the other services.

Modified:
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/ParameterPropertyWorker.java
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/validator/Required.java
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/pageload/PageLoader.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/validator/BaseValidatorTestCase.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/validator/TestRequired.java

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/ParameterPropertyWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/ParameterPropertyWorker.java?view=diff&rev=453839&r1=453838&r2=453839
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/ParameterPropertyWorker.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/enhance/ParameterPropertyWorker.java Fri Oct  6 19:25:53 2006
@@ -197,7 +197,7 @@
         builder.addln("return;");
         builder.end();
 
-        // In the normal state, we update the binding firstm, and it's an error
+        // In the normal state, we update the binding first - and it's an error
         // if the parameter is not bound.
 
         addBindingReference(builder, "binding", parameterName);

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/validator/Required.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/validator/Required.java?view=diff&rev=453839&r1=453838&r2=453839
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/validator/Required.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/validator/Required.java Fri Oct  6 19:25:53 2006
@@ -53,6 +53,9 @@
     public void validate(IFormComponent field, ValidationMessages messages, Object object)
             throws ValidatorException
     {
+        if (field.isDisabled())
+            return;
+        
         if ((object == null)
                 || (String.class.isInstance(object) && (((String) object).length() == 0))
                 || (Collection.class.isInstance(object) && ((Collection) object).isEmpty())
@@ -75,6 +78,9 @@
     public void renderContribution(IMarkupWriter writer, IRequestCycle cycle,
             FormComponentContributorContext context, IFormComponent field)
     {
+        if(field.isDisabled())
+            return;
+        
         context.registerForFocus(ValidationConstants.REQUIRED_FIELD);
         
         JSONObject profile = context.getProfile();

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/pageload/PageLoader.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/pageload/PageLoader.java?view=diff&rev=453839&r1=453838&r2=453839
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/pageload/PageLoader.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/pageload/PageLoader.java Fri Oct  6 19:25:53 2006
@@ -167,10 +167,10 @@
         // Create the mechanisms for walking the component tree when it is
         // complete
         IComponentVisitor verifyRequiredParametersVisitor = new VerifyRequiredParametersVisitor();
-
+        
         _verifyRequiredParametersWalker = new ComponentTreeWalker(
                 new IComponentVisitor[] { verifyRequiredParametersVisitor });
-
+        
         _establishDefaultParameterValuesWalker = new ComponentTreeWalker(
                 new IComponentVisitor[] { _establishDefaultParameterValuesVisitor });
     }

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/validator/BaseValidatorTestCase.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/validator/BaseValidatorTestCase.java?view=diff&rev=453839&r1=453838&r2=453839
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/validator/BaseValidatorTestCase.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/validator/BaseValidatorTestCase.java Fri Oct  6 19:25:53 2006
@@ -32,6 +32,15 @@
  */
 public abstract class BaseValidatorTestCase extends BaseComponentTestCase
 {
+    protected IFormComponent newField(String displayName, boolean disabled)
+    {
+        IFormComponent field = newField(disabled);
+        
+        expect(field.getDisplayName()).andReturn(displayName);
+        
+        return field;
+    }
+    
     protected IFormComponent newField(String displayName)
     {
         IFormComponent field = newMock(IFormComponent.class);
@@ -51,7 +60,27 @@
         
         return field;
     }
-
+    
+    protected IFormComponent newField(String displayName, String clientId, boolean disabled)
+    {
+        IFormComponent field = newField(disabled);
+        
+        checkOrder(field, false);
+        
+        expect(field.getClientId()).andReturn(clientId).anyTimes();
+        expect(field.getDisplayName()).andReturn(displayName);
+        
+        return field;
+    }
+    
+    protected IFormComponent newField(boolean disabled)
+    {
+        IFormComponent field = newField();
+        expect(field.isDisabled()).andReturn(disabled);
+        
+        return field;
+    }
+    
     protected IFormComponent newField()
     {
         return newMock(IFormComponent.class);

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/validator/TestRequired.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/validator/TestRequired.java?view=diff&rev=453839&r1=453838&r2=453839
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/validator/TestRequired.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/validator/TestRequired.java Fri Oct  6 19:25:53 2006
@@ -39,9 +39,9 @@
 @Test
 public class TestRequired extends BaseValidatorTestCase
 {
-    public void testValidateNotNull() throws Exception
+    public void test_Validate_Not_Null() throws Exception
     {
-        IFormComponent field = newField();
+        IFormComponent field = newField(false);
         ValidationMessages messages = newMessages();
 
         replay();
@@ -51,9 +51,9 @@
         verify();
     }
 
-    public void testValidateNull() throws Exception
+    public void test_Validate_Null() throws Exception
     {
-        IFormComponent field = newField("Fred");
+        IFormComponent field = newField("Fred", false);
         ValidationMessages messages = newMessages(
                 null,
                 ValidationStrings.REQUIRED_FIELD,
@@ -77,9 +77,9 @@
         verify();
     }
 
-    public void testValidateEmptyString() throws Exception
+    public void test_Validate_Empty_String() throws Exception
     {
-        IFormComponent field = newField("Fred");
+        IFormComponent field = newField("Fred", false);
         ValidationMessages messages = newMessages(
                 null,
                 ValidationStrings.REQUIRED_FIELD,
@@ -103,9 +103,9 @@
         verify();
     }
 
-    public void testValidateEmptyCollection() throws Exception
+    public void test_Validate_Empty_Collection() throws Exception
     {
-        IFormComponent field = newField("Fred");
+        IFormComponent field = newField("Fred", false);
         ValidationMessages messages = newMessages(
                 null,
                 ValidationStrings.REQUIRED_FIELD,
@@ -129,9 +129,9 @@
         verify();
     }
 
-    public void testValidateNullCustomMessage() throws Exception
+    public void test_Validate_Null_Custom_Message() throws Exception
     {
-        IFormComponent field = newField("Fred");
+        IFormComponent field = newField("Fred", false);
         ValidationMessages messages = newMessages(
                 "custom",
                 ValidationStrings.REQUIRED_FIELD,
@@ -157,6 +157,17 @@
         verify();
     }
     
+    public void test_Validate_Disabled_Field() throws Exception
+    {
+        IFormComponent field = newField(true);
+        
+        replay();
+        
+        new Required().validate(field, null, null);
+        
+        verify();
+    }
+    
     public void test_Render_Contribution()
     {
         IMarkupWriter writer = newWriter();
@@ -165,7 +176,7 @@
         
         FormComponentContributorContext context = newMock(FormComponentContributorContext.class);
         
-        IFormComponent field = newField("Fred", "fred");
+        IFormComponent field = newField("Fred", "fred", false);
         
         context.registerForFocus(ValidationConstants.REQUIRED_FIELD);
         
@@ -187,6 +198,25 @@
         
         assertEquals("{\"required\":[\"fred\"],\"fred\":{\"required\":[\"Default\\\\Message for Fred.\"]}}",
                 json.toString());
+    }
+    
+    public void test_Render_Contribution_Disabled()
+    {
+        IMarkupWriter writer = newWriter();
+        IRequestCycle cycle = newCycle();
+        JSONObject json = new JSONObject();
+        
+        FormComponentContributorContext context = newMock(FormComponentContributorContext.class);
+        
+        IFormComponent field = newField(true);
+        
+        replay();
+        
+        new Required().renderContribution(writer, cycle, context, field);
+        
+        verify();
+        
+        assertEquals(json.toString(), "{}");
     }
     
     public void testIsRequired()