You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2011/09/14 13:40:01 UTC
svn commit: r1170547 - in /wicket/trunk:
wicket-core/src/main/java/org/apache/wicket/ajax/
wicket-core/src/main/java/org/apache/wicket/mock/
wicket-core/src/main/java/org/apache/wicket/protocol/http/
wicket-core/src/main/java/org/apache/wicket/protocol...
Author: mgrigorov
Date: Wed Sep 14 11:40:01 2011
New Revision: 1170547
URL: http://svn.apache.org/viewvc?rev=1170547&view=rev
Log:
WICKET-4052 Add org.apache.wicket.request.Response.write(byte[], int, int) to make it easier to write buffered data to the web response
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/mock/MockWebResponse.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/BufferedWebResponse.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/HeaderBufferingWebResponse.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/response/ByteArrayResponse.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/response/NullResponse.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/response/StringResponse.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/BaseRequestHandlerStackTest.java
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/Response.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=1170547&r1=1170546&r2=1170547&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 Wed Sep 14 11:40:01 2011
@@ -226,6 +226,12 @@ public class AjaxRequestTarget implement
}
@Override
+ public void write(byte[] array, int offset, int length)
+ {
+ throw new UnsupportedOperationException("Cannot write binary data.");
+ }
+
+ @Override
public Object getContainerResponse()
{
return originalResponse.getContainerResponse();
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/mock/MockWebResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/mock/MockWebResponse.java?rev=1170547&r1=1170546&r2=1170547&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/mock/MockWebResponse.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/mock/MockWebResponse.java Wed Sep 14 11:40:01 2011
@@ -296,6 +296,21 @@ public class MockWebResponse extends Web
}
}
+ @Override
+ public void write(byte[] array, int offset, int length)
+ {
+ if (textResponse != null)
+ {
+ throw new IllegalStateException("Text response has already been initiated.");
+ }
+ if (binaryResponse == null)
+ {
+ binaryResponse = new ByteArrayOutputStream();
+ }
+
+ binaryResponse.write(array, offset, length);
+ }
+
/**
* @return binary response
*/
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=1170547&r1=1170546&r2=1170547&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 Wed Sep 14 11:40:01 2011
@@ -190,6 +190,18 @@ public class BufferedWebResponse extends
}
}
+ public void append(byte data[], int offset, int length)
+ {
+ try
+ {
+ stream.write(data, offset, length);
+ }
+ catch (Exception e)
+ {
+ throw new WicketRuntimeException(e);
+ }
+ }
+
@Override
protected void invoke(WebResponse response)
{
@@ -518,6 +530,22 @@ public class BufferedWebResponse extends
}
@Override
+ public void write(byte[] array, int offset, int length)
+ {
+ if (charSequenceAction != null)
+ {
+ throw new IllegalStateException(
+ "Can't call write(byte[]) after write(CharSequence) has been called.");
+ }
+ if (dataAction == null)
+ {
+ dataAction = new WriteDataAction();
+ actions.add(dataAction);
+ }
+ dataAction.append(array, offset, length);
+ }
+
+ @Override
public void sendRedirect(String url)
{
actions.add(new SendRedirectAction(url));
@@ -630,5 +658,4 @@ public class BufferedWebResponse extends
{
return originalResponse.getContainerResponse();
}
-
}
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/HeaderBufferingWebResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/HeaderBufferingWebResponse.java?rev=1170547&r1=1170546&r2=1170547&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/HeaderBufferingWebResponse.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/HeaderBufferingWebResponse.java Wed Sep 14 11:40:01 2011
@@ -181,6 +181,14 @@ class HeaderBufferingWebResponse extends
originalResponse.write(array);
}
+
+ @Override
+ public void write(byte[] array, int offset, int length)
+ {
+ writeBuffered();
+ originalResponse.write(array, offset, length);
+ }
+
@Override
public void reset()
{
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java?rev=1170547&r1=1170546&r2=1170547&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java Wed Sep 14 11:40:01 2011
@@ -128,6 +128,20 @@ public class ServletWebResponse extends
}
@Override
+ public void write(byte[] array, int offset, int length)
+ {
+ try
+ {
+ httpServletResponse.getOutputStream().write(array, offset, length);
+ }
+ catch (IOException e)
+ {
+ throw new ResponseIOException(e);
+ }
+ }
+
+
+ @Override
public void setStatus(int sc)
{
httpServletResponse.setStatus(sc);
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/response/ByteArrayResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/response/ByteArrayResponse.java?rev=1170547&r1=1170546&r2=1170547&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/response/ByteArrayResponse.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/response/ByteArrayResponse.java Wed Sep 14 11:40:01 2011
@@ -104,6 +104,20 @@ public class ByteArrayResponse extends R
}
@Override
+ public void write(byte[] array, int offset, int length)
+ {
+ try
+ {
+ bytes.write(array, offset, length);
+ }
+ catch (Exception e)
+ {
+ throw new WicketRuntimeException("Cannot write into internal byte stream", e);
+ }
+
+ }
+
+ @Override
public String encodeURL(CharSequence url)
{
if (original != null)
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/response/NullResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/response/NullResponse.java?rev=1170547&r1=1170546&r2=1170547&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/response/NullResponse.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/response/NullResponse.java Wed Sep 14 11:40:01 2011
@@ -59,6 +59,11 @@ public class NullResponse extends Respon
}
@Override
+ public void write(byte[] array, int offset, int length)
+ {
+ }
+
+ @Override
public String encodeURL(CharSequence url)
{
return url != null ? url.toString() : null;
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/response/StringResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/response/StringResponse.java?rev=1170547&r1=1170546&r2=1170547&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/response/StringResponse.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/response/StringResponse.java Wed Sep 14 11:40:01 2011
@@ -76,9 +76,6 @@ public class StringResponse extends Resp
return out;
}
- /**
- * @see org.apache.wicket.request.Response#getOutputStream()
- */
@Override
public void write(byte[] array)
{
@@ -86,6 +83,12 @@ public class StringResponse extends Resp
}
@Override
+ public void write(byte[] array, int offset, int length)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
public String encodeURL(CharSequence url)
{
return url != null ? url.toString() : null;
Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/BaseRequestHandlerStackTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/BaseRequestHandlerStackTest.java?rev=1170547&r1=1170546&r2=1170547&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/BaseRequestHandlerStackTest.java (original)
+++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/cycle/BaseRequestHandlerStackTest.java Wed Sep 14 11:40:01 2011
@@ -38,6 +38,11 @@ public abstract class BaseRequestHandler
}
@Override
+ public void write(byte[] array, int offset, int length)
+ {
+ }
+
+ @Override
public void write(CharSequence sequence)
{
}
Modified: wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/Response.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/Response.java?rev=1170547&r1=1170546&r2=1170547&view=diff
==============================================================================
--- wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/Response.java (original)
+++ wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/Response.java Wed Sep 14 11:40:01 2011
@@ -40,12 +40,36 @@ public abstract class Response
* Writes the buffer to output.
*
* @param array
+ * the data.
* @throws IllegalStateException
* if {@link #write(CharSequence)} has already been called on this instance
*/
public abstract void write(byte[] array);
/**
+ * Writes the buffer to output.
+ *
+ * @param array
+ * the data.
+ * @param offset
+ * the start offset in the data.
+ * @param length
+ * the number of bytes to write.
+ *
+ * @throws IllegalStateException
+ * if {@link #write(CharSequence)} has already been called on this instance
+ * @since 1.5.1
+ */
+ // TODO Wicket 1.6: make it abstract like other methods in this class
+ public void write(byte[] array, int offset, int length)
+ {
+ // default impl to be able to introduce it in 1.5.x series
+ byte[] towrite = new byte[length];
+ System.arraycopy(array, offset, towrite, 0, length);
+ write(towrite);
+ }
+
+ /**
* Closes the response
*/
public void close()