You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pe...@apache.org on 2011/04/18 07:36:28 UTC
svn commit: r1094227 - in /wicket/trunk/wicket-core/src:
main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
main/java/org/apache/wicket/protocol/http/BufferedWebResponse.java
test/java/org/apache/wicket/response/filter/ResponseFilterTest.java
Author: pedro
Date: Mon Apr 18 05:36:27 2011
New Revision: 1094227
URL: http://svn.apache.org/viewvc?rev=1094227&view=rev
Log:
Changing AjaxRequestTarget and BufferedWebResponse to don't discard the filtered AppendingStringBuffer response if the filter returns a new instance.
Issue: WICKET-3620
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/BufferedWebResponse.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/response/filter/ResponseFilterTest.java
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java?rev=1094227&r1=1094226&r2=1094227&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java Mon Apr 18 05:36:27 2011
@@ -600,8 +600,8 @@ public class AjaxRequestTarget implement
{
final StringResponse bodyResponse = new StringResponse();
contructResponseBody(bodyResponse, encoding);
- invokeResponseFilters(bodyResponse);
- response.write(bodyResponse.getBuffer());
+ CharSequence filteredResponse = invokeResponseFilters(bodyResponse);
+ response.write(filteredResponse);
}
finally
{
@@ -670,8 +670,9 @@ public class AjaxRequestTarget implement
*
* @param contentResponse
* the Ajax {@link Response} body
+ * @return filtered response
*/
- private void invokeResponseFilters(final StringResponse contentResponse)
+ private AppendingStringBuffer invokeResponseFilters(final StringResponse contentResponse)
{
AppendingStringBuffer responseBuffer = new AppendingStringBuffer(
contentResponse.getBuffer());
@@ -684,9 +685,10 @@ public class AjaxRequestTarget implement
{
for (IResponseFilter filter : responseFilters)
{
- filter.filter(responseBuffer);
+ responseBuffer = filter.filter(responseBuffer);
}
}
+ return responseBuffer;
}
/**
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/BufferedWebResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/BufferedWebResponse.java?rev=1094227&r1=1094226&r2=1094227&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/BufferedWebResponse.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/BufferedWebResponse.java Mon Apr 18 05:36:27 2011
@@ -142,10 +142,10 @@ public class BufferedWebResponse extends
{
for (IResponseFilter filter : responseFilters)
{
- filter.filter(responseBuffer);
+ responseBuffer = filter.filter(responseBuffer);
}
}
- response.write(builder);
+ response.write(responseBuffer);
}
@Override
Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/response/filter/ResponseFilterTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/response/filter/ResponseFilterTest.java?rev=1094227&r1=1094226&r2=1094227&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/response/filter/ResponseFilterTest.java (original)
+++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/response/filter/ResponseFilterTest.java Mon Apr 18 05:36:27 2011
@@ -21,7 +21,10 @@ import static org.junit.Assert.assertTru
import java.util.concurrent.atomic.AtomicInteger;
+import junit.framework.Assert;
+
import org.apache.wicket.MockPageWithLink;
+import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.protocol.http.WebApplication;
@@ -64,6 +67,7 @@ public class ResponseFilterTest
{
super.init();
getRequestCycleSettings().addResponseFilter(responseFilter);
+ getRequestCycleSettings().addResponseFilter(AppendCommentFilter.INSTANCE);
}
};
@@ -76,6 +80,46 @@ public class ResponseFilterTest
counter.set(0);
}
+ /**
+ * WICKET-3620
+ */
+ @Test
+ public void testFilterAddCommentFilter()
+ {
+ tester.startPage(DummyHomePage.class);
+ Assert.assertTrue(tester.getLastResponseAsString().contains(AppendCommentFilter.COMMENT));
+ }
+
+ /**
+ * WICKET-3620
+ */
+ @Test
+ public void testAddCommentFilterInAjaxResponse()
+ {
+ DummyHomePage testPage = new DummyHomePage();
+ testPage.getTestPageLink().add(new AjaxEventBehavior("event")
+ {
+ @Override
+ protected void onEvent(AjaxRequestTarget target)
+ {
+ }
+ });
+ tester.startPage(testPage);
+ tester.executeAjaxEvent(testPage.getTestPageLink(), "event");
+ Assert.assertTrue(tester.getLastResponseAsString().contains(AppendCommentFilter.COMMENT));
+ }
+
+ private static class AppendCommentFilter implements IResponseFilter
+ {
+ static final AppendCommentFilter INSTANCE = new AppendCommentFilter();
+ static final String COMMENT = "<!-- comment -->";
+
+ public AppendingStringBuffer filter(AppendingStringBuffer responseBuffer)
+ {
+ return new AppendingStringBuffer(responseBuffer).append(COMMENT);
+ }
+ }
+
@Test
public void normalRequest()
{