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