You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2011/07/27 20:01:08 UTC

svn commit: r1151571 - in /tapestry/tapestry5/trunk/tapestry-core/src: main/java/org/apache/tapestry5/internal/services/ajax/ main/java/org/apache/tapestry5/services/ajax/ test/app1/ test/java/org/apache/tapestry5/integration/app1/ test/java/org/apache...

Author: hlship
Date: Wed Jul 27 18:01:06 2011
New Revision: 1151571

URL: http://svn.apache.org/viewvc?rev=1151571&view=rev
Log:
TAP5-1476: Rename methods on AjaxResponseRenderer
Add a test for AjaxResponseRenderer.addCallback()
Fix a bug in AjaxResponseRenderer.addCallback() where the filter did not invoke the next renderer, which prevent most of the content from being constructed

Added:
    tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/MultiZoneUpdateDemo.js
Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/AjaxResponseRendererImpl.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/MultiZoneUpdateEventResultProcessor.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/AjaxResponseRenderer.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/JavaScriptCallback.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/app1/MultiZoneUpdateDemo.tml
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/ZoneTests.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiZoneUpdateDemo.java

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/AjaxResponseRendererImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/AjaxResponseRendererImpl.java?rev=1151571&r1=1151570&r2=1151571&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/AjaxResponseRendererImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/AjaxResponseRendererImpl.java Wed Jul 27 18:01:06 2011
@@ -32,7 +32,7 @@ public class AjaxResponseRendererImpl im
         this.javaScriptSupport = javaScriptSupport;
     }
 
-    public void render(String clientId, Object renderer)
+    public void addRender(String clientId, Object renderer)
     {
         assert InternalUtils.isNonBlank(clientId);
         assert renderer != null;
@@ -43,20 +43,23 @@ public class AjaxResponseRendererImpl im
         queue.addPartialMarkupRendererFilter(new SingleZonePartialRendererFilter(clientId, command, queue, ajaxFormUpdateController));
     }
 
-    public void render(ClientBodyElement zone)
+    public void addRender(ClientBodyElement zone)
     {
         assert zone != null;
 
-        render(zone.getClientId(), zone.getBody());
+        addRender(zone.getClientId(), zone.getBody());
     }
 
-    public void callback(final JavaScriptCallback callback)
+    public void addCallback(final JavaScriptCallback callback)
     {
         queue.forcePartialRenderInitialized();
         queue.addPartialMarkupRendererFilter(new PartialMarkupRendererFilter()
         {
             public void renderMarkup(MarkupWriter writer, JSONObject reply, PartialMarkupRenderer renderer)
             {
+                // We set things up so that the support object is invoked pretty late.
+                renderer.renderMarkup(writer, reply);
+
                 callback.run(javaScriptSupport);
             }
         });

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/MultiZoneUpdateEventResultProcessor.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/MultiZoneUpdateEventResultProcessor.java?rev=1151571&r1=1151570&r2=1151571&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/MultiZoneUpdateEventResultProcessor.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/MultiZoneUpdateEventResultProcessor.java Wed Jul 27 18:01:06 2011
@@ -63,7 +63,7 @@ public class MultiZoneUpdateEventResultP
 
             RenderCommand zoneRenderCommand = toRenderer(zoneId, provided);
 
-            ajaxResponseRenderer.render(zoneId, zoneRenderCommand);
+            ajaxResponseRenderer.addRender(zoneId, zoneRenderCommand);
         }
     }
 

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/AjaxResponseRenderer.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/AjaxResponseRenderer.java?rev=1151571&r1=1151570&r2=1151571&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/AjaxResponseRenderer.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/AjaxResponseRenderer.java Wed Jul 27 18:01:06 2011
@@ -36,19 +36,19 @@ public interface AjaxResponseRenderer
      * @param renderer a {@link org.apache.tapestry5.Block}, {@link org.apache.tapestry5.runtime.Component} or other object that can be
      *                 {@linkplain org.apache.tapestry5.ioc.services.TypeCoercer coerced} to  {@link org.apache.tapestry5.runtime.RenderCommand}.
      */
-    void render(String clientId, Object renderer);
+    void addRender(String clientId, Object renderer);
 
     /**
      * Queues an update to the zone, using the zone's body as the new content.
      *
      * @param zone the element that contains both a client id and a body (this is primarily used to represent a {@link org.apache.tapestry5.corelib.components.Zone} component).
      */
-    void render(ClientBodyElement zone);
+    void addRender(ClientBodyElement zone);
 
     /**
      * Queues a callback to execute during the partial markup render.
      *
      * @param callback object to be invoked
      */
-    void callback(JavaScriptCallback callback);
+    void addCallback(JavaScriptCallback callback);
 }
\ No newline at end of file

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/JavaScriptCallback.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/JavaScriptCallback.java?rev=1151571&r1=1151570&r2=1151571&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/JavaScriptCallback.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/JavaScriptCallback.java Wed Jul 27 18:01:06 2011
@@ -17,7 +17,7 @@ package org.apache.tapestry5.services.aj
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
 
 /**
- * A callback used with {@link AjaxResponseRenderer#callback(JavaScriptCallback)}.
+ * A callback used with {@link AjaxResponseRenderer#addCallback(JavaScriptCallback)}.
  *
  * @since 5.3
  */

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/app1/MultiZoneUpdateDemo.tml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/app1/MultiZoneUpdateDemo.tml?rev=1151571&r1=1151570&r2=1151571&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/app1/MultiZoneUpdateDemo.tml (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/app1/MultiZoneUpdateDemo.tml Wed Jul 27 18:01:06 2011
@@ -5,6 +5,8 @@
 
   <span id="now">${now}</span>
 
+  <span id="message"/>
+
   <div class="t-data-grid" style="{width: 100%;}">
 
     <table class="t-data-grid">

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/ZoneTests.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/ZoneTests.java?rev=1151571&r1=1151570&r2=1151571&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/ZoneTests.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/ZoneTests.java Wed Jul 27 18:01:06 2011
@@ -112,6 +112,8 @@ public class ZoneTests extends TapestryC
 
         assertText("wilma", "Wilma Flintstone");
 
+        assertText("message", "");
+
         click("update");
 
         waitForElementToAppear("fredName");
@@ -120,6 +122,8 @@ public class ZoneTests extends TapestryC
         assertText("dino", "His dog, Dino.");
         assertText("wilma", "His Wife, Wilma.");
 
+        assertText("message", "Updated");
+
         // Ideally, we'd add checks that the JavaScript for the Palette in the
         // Barney Zone was
         // updated.

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiZoneUpdateDemo.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiZoneUpdateDemo.java?rev=1151571&r1=1151570&r2=1151571&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiZoneUpdateDemo.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiZoneUpdateDemo.java Wed Jul 27 18:01:06 2011
@@ -14,15 +14,20 @@
 
 package org.apache.tapestry5.integration.app1.pages;
 
+import org.apache.tapestry5.Asset;
 import org.apache.tapestry5.Block;
 import org.apache.tapestry5.ValueEncoder;
 import org.apache.tapestry5.ajax.MultiZoneUpdate;
 import org.apache.tapestry5.annotations.InjectComponent;
+import org.apache.tapestry5.annotations.Path;
 import org.apache.tapestry5.annotations.Property;
 import org.apache.tapestry5.corelib.components.Zone;
 import org.apache.tapestry5.internal.services.StringValueEncoder;
 import org.apache.tapestry5.ioc.annotations.Inject;
+import org.apache.tapestry5.json.JSONObject;
 import org.apache.tapestry5.services.ajax.AjaxResponseRenderer;
+import org.apache.tapestry5.services.ajax.JavaScriptCallback;
+import org.apache.tapestry5.services.javascript.JavaScriptSupport;
 
 import java.util.Date;
 
@@ -40,6 +45,10 @@ public class MultiZoneUpdateDemo
     @Inject
     private AjaxResponseRenderer ajaxResponseRenderer;
 
+    @Inject
+    @Path("MultiZoneUpdateDemo.js")
+    private Asset library;
+
     public Date getNow()
     {
         return new Date();
@@ -50,7 +59,17 @@ public class MultiZoneUpdateDemo
         wilmaMessage = "His Wife, Wilma.";
 
         // Do one the new way
-        ajaxResponseRenderer.render("fred", fredBlock);
+        ajaxResponseRenderer.addRender("fred", fredBlock);
+
+        ajaxResponseRenderer.addCallback(new JavaScriptCallback()
+        {
+            public void run(JavaScriptSupport javascriptSupport)
+            {
+                javascriptSupport.importJavaScriptLibrary(library);
+                javascriptSupport.addInitializerCall("writeMessageTo", new JSONObject("id", "message", "message",
+                        "Updated"));
+            }
+        });
 
         // Do the rest the old way, to test backwards compatibility
 

Added: tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/MultiZoneUpdateDemo.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/MultiZoneUpdateDemo.js?rev=1151571&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/MultiZoneUpdateDemo.js (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/MultiZoneUpdateDemo.js Wed Jul 27 18:01:06 2011
@@ -0,0 +1,5 @@
+T5.extendInitializers({
+    writeMessageTo : function(spec) {
+        $(spec.id).update(spec.message);
+    }
+})
\ No newline at end of file