You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by kn...@apache.org on 2010/02/25 18:35:40 UTC

svn commit: r916364 - in /wicket/trunk/wicket/src/main/java/org/apache/wicket: markup/transformer/AbstractTransformerBehavior.java protocol/http/BufferedWebResponse.java

Author: knopp
Date: Thu Feb 25 17:35:40 2010
New Revision: 916364

URL: http://svn.apache.org/viewvc?rev=916364&view=rev
Log:
use proper buffered web response

Modified:
    wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/transformer/AbstractTransformerBehavior.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/BufferedWebResponse.java

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/transformer/AbstractTransformerBehavior.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/transformer/AbstractTransformerBehavior.java?rev=916364&r1=916363&r2=916364&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/transformer/AbstractTransformerBehavior.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/transformer/AbstractTransformerBehavior.java Thu Feb 25 17:35:40 2010
@@ -22,7 +22,8 @@
 import org.apache.wicket.behavior.AbstractBehavior;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.ng.request.cycle.RequestCycle;
-import org.apache.wicket.response.StringResponse;
+import org.apache.wicket.protocol.http.BufferedWebResponse;
+import org.apache.wicket.protocol.http.WebResponse;
 
 /**
  * A IBehavior which can be added to any component. It allows to post-process (transform) the markup
@@ -36,7 +37,7 @@
 {
 	private static final long serialVersionUID = 1L;
 
-	private Response webResponse;
+	private WebResponse webResponse;
 
 	/**
 	 * Construct.
@@ -49,11 +50,20 @@
 	 * Create a new response object which is used to store the markup generated by the child
 	 * objects.
 	 * 
+	 * @param originalResponse
+	 * 
 	 * @return Response object. Must not be null
 	 */
-	protected Response newResponse()
+	protected BufferedWebResponse newResponse(final Response originalResponse)
 	{
-		return new StringResponse();
+		return new BufferedWebResponse()
+		{
+			@Override
+			public String encodeURL(CharSequence url)
+			{
+				return originalResponse.encodeURL(url);
+			}
+		};
 	}
 
 	/**
@@ -77,10 +87,10 @@
 		final RequestCycle requestCycle = RequestCycle.get();
 
 		// Temporarily replace the web response with a String response
-		webResponse = requestCycle.getResponse();
+		webResponse = (WebResponse)requestCycle.getResponse();
 
 		// Create a new response object
-		final Response response = newResponse();
+		final BufferedWebResponse response = newResponse(webResponse);
 		if (response == null)
 		{
 			throw new IllegalStateException("newResponse() must not return null");
@@ -100,11 +110,12 @@
 
 		try
 		{
-			Response response = requestCycle.getResponse();
+			BufferedWebResponse response = (BufferedWebResponse)requestCycle.getResponse();
 
 			// Transform the data
-			CharSequence output = transform(component, response.toString());
-			webResponse.write(output);
+			CharSequence output = transform(component, response.getText());
+			response.setText(output);
+			response.writeTo(webResponse);
 		}
 		catch (Exception ex)
 		{

Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/BufferedWebResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/BufferedWebResponse.java?rev=916364&r1=916363&r2=916364&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/BufferedWebResponse.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/BufferedWebResponse.java Thu Feb 25 17:35:40 2010
@@ -333,6 +333,45 @@
 		charSequenceAction.append(sequence);
 	}
 
+	/**
+	 * Returns the text already written to this response.
+	 * 
+	 * @return text
+	 */
+	public CharSequence getText()
+	{
+		if (dataAction != null)
+		{
+			throw new IllegalStateException("write(byte[]) has already been called.");
+		}
+		if (charSequenceAction != null)
+		{
+			return charSequenceAction.builder;
+		}
+		else
+		{
+			return null;
+		}
+	}
+
+	/**
+	 * Replaces the text in this response
+	 * 
+	 * @param text
+	 */
+	public void setText(CharSequence text)
+	{
+		if (dataAction != null)
+		{
+			throw new IllegalStateException("write(byte[]) has already been called.");
+		}
+		if (charSequenceAction != null)
+		{
+			charSequenceAction.builder.setLength(0);
+		}
+		write(text);
+	}
+
 	@Override
 	public void write(byte[] array)
 	{