You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by jk...@apache.org on 2007/06/13 22:55:30 UTC

svn commit: r547028 - in /tapestry/tapestry4/trunk/tapestry-framework/src: java/org/apache/tapestry/components/ java/org/apache/tapestry/services/impl/ js/tapestry/ test/org/apache/tapestry/components/

Author: jkuhnert
Date: Wed Jun 13 13:55:29 2007
New Revision: 547028

URL: http://svn.apache.org/viewvc?view=rev&rev=547028
Log:
Fixes TAPESTRY-1569.  If component wasn't rendering a clientId when tag rendering was enabled. 

Added better check for DojoAjaxResponseBuilder exception detections while slowly debugging and eventually figuring out firebug has a big nasty bug ...bastards

Modified:
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/components/IfBean.java
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/DojoAjaxResponseBuilder.java
    tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/form.js
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/components/TestIfElse.java

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/components/IfBean.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/components/IfBean.java?view=diff&rev=547028&r1=547027&r2=547028
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/components/IfBean.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/components/IfBean.java Wed Jun 13 13:55:29 2007
@@ -18,13 +18,7 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.hivemind.ApplicationRuntimeException;
 import org.apache.hivemind.HiveMind;
-import org.apache.tapestry.IActionListener;
-import org.apache.tapestry.IBinding;
-import org.apache.tapestry.IForm;
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.Tapestry;
-import org.apache.tapestry.TapestryUtils;
+import org.apache.tapestry.*;
 import org.apache.tapestry.engine.NullWriter;
 import org.apache.tapestry.form.AbstractFormComponent;
 import org.apache.tapestry.services.DataSqueezer;
@@ -63,10 +57,12 @@
         
         // If the cycle is rewinding, but not this particular form,
         // then do nothing (don't even render the body).
+        
         if (cycleRewinding && form != null && !form.isRewinding())
             return;
         
         // get the condition. work with a hidden field if necessary
+        
         _conditionValue = evaluateCondition(cycle, form, cycleRewinding);
         _rendering = true;
         
@@ -90,9 +86,11 @@
                 if (render)
                 {
                     writer.begin(element);
+
                     renderInformalParameters(writer, cycle);
+                    renderIdAttribute(writer, cycle);
                 }
-                _log.debug("Condition was true so rendering body" + this);
+
                 renderBody(writer, cycle);
 
                 if (render)
@@ -153,9 +151,7 @@
         }
         catch (Exception ex)
         {
-            throw new ApplicationRuntimeException(Tapestry.format(
-                    "If.unable-to-convert-value",
-                    booleanValue), this, null, ex);
+            throw new ApplicationRuntimeException(Tapestry.format("If.unable-to-convert-value",booleanValue), this, null, ex);
         }
 
         form.addHiddenValue(name, externalValue);
@@ -171,9 +167,7 @@
         {
             Object valueObject = getDataSqueezer().unsqueeze(submittedValue);
             if (!(valueObject instanceof Boolean))
-                throw new ApplicationRuntimeException(Tapestry.format(
-                        "If.invalid-condition-type",
-                        submittedValue));
+                throw new ApplicationRuntimeException(Tapestry.format("If.invalid-condition-type", submittedValue));
 
             return ((Boolean) valueObject).booleanValue();
         }

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/DojoAjaxResponseBuilder.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/DojoAjaxResponseBuilder.java?view=diff&rev=547028&r1=547027&r2=547028
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/DojoAjaxResponseBuilder.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/DojoAjaxResponseBuilder.java Wed Jun 13 13:55:29 2007
@@ -177,6 +177,14 @@
     public void renderResponse(IRequestCycle cycle)
         throws IOException
     {
+        // if response was already started
+
+        if (_responseStarted)
+        {
+            cycle.renderPage(this);
+            return;
+        }
+        
         _localeManager.persistLocale();
         
         _contentType = new ContentType(CONTENT_TYPE + ";charset=" + cycle.getInfrastructure().getOutputEncoding());

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/form.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/form.js?view=diff&rev=547028&r1=547027&r2=547028
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/form.js (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/form.js Wed Jun 13 13:55:29 2007
@@ -229,6 +229,7 @@
 			dojo.raise("No valid form event found with argument: " + evt);
 			return;
 		}
+
         var id=evt.target.getAttribute("id");
 		if (!id) {
 			dojo.raise("Form had no id attribute.");
@@ -392,8 +393,8 @@
 			return;
 		}
 		var formId=form.getAttribute("id");
-		
-		if (!tapestry.form.validation.validateForm(form, this.forms[formId])) {
+
+        if (!tapestry.form.validation.validateForm(form, this.forms[formId])) {
 			dojo.log.debug("Form validation failed for form with id " + formId);
 			return;
 		}

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/components/TestIfElse.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/components/TestIfElse.java?view=diff&rev=547028&r1=547027&r2=547028
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/components/TestIfElse.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/components/TestIfElse.java Wed Jun 13 13:55:29 2007
@@ -14,18 +14,11 @@
 
 package org.apache.tapestry.components;
 
-import static org.easymock.EasyMock.expect;
-
-import org.apache.tapestry.BaseComponentTestCase;
-import org.apache.tapestry.IBinding;
-import org.apache.tapestry.IForm;
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IRender;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.TapestryUtils;
+import org.apache.tapestry.*;
 import org.apache.tapestry.services.DataSqueezer;
 import org.apache.tapestry.spec.IComponentSpecification;
 import org.apache.tapestry.util.io.DataSqueezerUtil;
+import static org.easymock.EasyMock.expect;
 import org.testng.annotations.Test;
 
 /**
@@ -60,9 +53,7 @@
         ElseBean reverse = (ElseBean) newInstance(ElseBean.class);
         
         expect(cycle.renderStackPush(conditional)).andReturn(conditional);
-        
         expect(cycle.isRewinding()).andReturn(false);
-        
         expect(cycle.getAttribute(TapestryUtils.FORM_ATTRIBUTE)).andReturn(null);
         
         trainResponseBuilder(cycle, writer);
@@ -72,11 +63,8 @@
         cycle.setAttribute(IfBean.IF_VALUE_ATTRIBUTE, Boolean.TRUE);
         
         expect(cycle.renderStackPop()).andReturn(conditional);
-        
         expect(cycle.renderStackPush(reverse)).andReturn(reverse);
-        
         expect(cycle.getAttribute(IfBean.IF_VALUE_ATTRIBUTE)).andReturn(Boolean.TRUE);
-        
         expect(cycle.renderStackPop()).andReturn(reverse);
         
         IRender body2 = newRender();
@@ -104,19 +92,14 @@
         ElseBean reverse = (ElseBean) newInstance(ElseBean.class);
         
         expect(cycle.renderStackPush(conditional)).andReturn(conditional);
-        
         expect(cycle.isRewinding()).andReturn(false);
-        
         expect(cycle.getAttribute(TapestryUtils.FORM_ATTRIBUTE)).andReturn(null);
         
         cycle.setAttribute(IfBean.IF_VALUE_ATTRIBUTE, Boolean.FALSE);
         
         expect(cycle.renderStackPop()).andReturn(conditional);
-        
         expect(cycle.renderStackPush(reverse)).andReturn(reverse);
-        
         expect(cycle.getAttribute(IfBean.IF_VALUE_ATTRIBUTE)).andReturn(Boolean.FALSE);
-        
         expect(cycle.isRewinding()).andReturn(false);
         
         trainResponseBuilder(cycle, writer);
@@ -352,23 +335,21 @@
         
         IRequestCycle cycle = newCycle();
 
-        IfBean conditional = newInstance(TestIfBean.class, 
-                new Object[] { 
-            "condition", Boolean.TRUE, 
-            "element", "div", 
-            "specification", spec,
-            "renderTag", Boolean.TRUE
-        });
+        IfBean conditional = newInstance(TestIfBean.class,
+                                         "condition", Boolean.TRUE,
+                                         "element", "div",
+                                         "specification", spec,
+                                         "renderTag", Boolean.TRUE,
+                                         "clientId", "testIf");
         
         expect(cycle.renderStackPush(conditional)).andReturn(conditional);
-        
         expect(cycle.isRewinding()).andReturn(false);
-        
         expect(cycle.getAttribute(TapestryUtils.FORM_ATTRIBUTE)).andReturn(null);
         
         IRender body = newRender(writer, cycle);
 
         writer.begin("div");
+        writer.attribute("id", "testIf");
         writer.attribute("informal", "informal-value");
 
         writer.end("div");