Updated Branches: refs/heads/wicket-6.x 7db55f5a8 -> 2ae366b2e
WICKET-5369 Can't set a cookie using CookieUtils during an ajax request due to java.lang.ClassCastException: org.apache.wicket.ajax.AbstractAjaxResponse$AjaxResponse cannot be cast to org.apache.wicket.request.http.WebResponse Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/2ae366b2 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/2ae366b2 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/2ae366b2 Branch: refs/heads/wicket-6.x Commit: 2ae366b2eb90d53f1a6e06c3c09ba0d509bfe9d7 Parents: 7db55f5 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Thu Sep 26 17:12:46 2013 +0200 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Thu Sep 26 17:13:52 2013 +0200 ---------------------------------------------------------------------- .../wicket/ajax/AbstractAjaxResponse.java | 89 +++++++++++++++++++- .../protocol/ws/api/WebSocketResponse.java | 84 +++++++++++++++++- 2 files changed, 168 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/2ae366b2/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxResponse.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxResponse.java b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxResponse.java index 86cf240..64d5d23 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxResponse.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxResponse.java @@ -24,6 +24,8 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import javax.servlet.http.Cookie; + import org.apache.wicket.Component; import org.apache.wicket.Page; import org.apache.wicket.markup.head.HeaderItem; @@ -48,6 +50,7 @@ import org.apache.wicket.util.lang.Classes; import org.apache.wicket.util.lang.Generics; import org.apache.wicket.util.string.AppendingStringBuffer; import org.apache.wicket.util.string.Strings; +import org.apache.wicket.util.time.Time; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -123,7 +126,7 @@ public abstract class AbstractAjaxResponse { this.page = page; - Response response = page.getResponse(); + WebResponse response = (WebResponse) page.getResponse(); encodingBodyResponse = new AjaxResponse(response); encodingHeaderResponse = new AjaxResponse(response); } @@ -592,13 +595,13 @@ public abstract class AbstractAjaxResponse * * @author Igor Vaynberg (ivaynberg) */ - protected static final class AjaxResponse extends Response + protected static final class AjaxResponse extends WebResponse { private final AppendingStringBuffer buffer = new AppendingStringBuffer(256); private boolean escaped = false; - private final Response originalResponse; + private final WebResponse originalResponse; /** * Constructor. @@ -606,7 +609,7 @@ public abstract class AbstractAjaxResponse * @param originalResponse * the original request cycle response */ - private AjaxResponse(Response originalResponse) + private AjaxResponse(WebResponse originalResponse) { this.originalResponse = originalResponse; } @@ -682,6 +685,84 @@ public abstract class AbstractAjaxResponse { return originalResponse.getContainerResponse(); } + + @Override + public void addCookie(Cookie cookie) + { + originalResponse.addCookie(cookie); + } + + @Override + public void clearCookie(Cookie cookie) + { + originalResponse.clearCookie(cookie); + } + + @Override + public void setHeader(String name, String value) + { + originalResponse.setHeader(name, value); + } + + @Override + public void addHeader(String name, String value) + { + originalResponse.addHeader(name, value); + } + + @Override + public void setDateHeader(String name, Time date) + { + originalResponse.setDateHeader(name, date); + } + + @Override + public void setContentLength(long length) + { + originalResponse.setContentLength(length); + } + + @Override + public void setContentType(String mimeType) + { + originalResponse.setContentType(mimeType); + } + + @Override + public void setStatus(int sc) + { + originalResponse.setStatus(sc); + } + + @Override + public void sendError(int sc, String msg) + { + originalResponse.sendError(sc, msg); + } + + @Override + public String encodeRedirectURL(CharSequence url) + { + return originalResponse.encodeRedirectURL(url); + } + + @Override + public void sendRedirect(String url) + { + originalResponse.sendRedirect(url); + } + + @Override + public boolean isRedirect() + { + return originalResponse.isRedirect(); + } + + @Override + public void flush() + { + originalResponse.flush(); + } } /** http://git-wip-us.apache.org/repos/asf/wicket/blob/2ae366b2/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketResponse.java ---------------------------------------------------------------------- diff --git a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketResponse.java b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketResponse.java index 4d43f97..7faa195 100644 --- a/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketResponse.java +++ b/wicket-experimental/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/WebSocketResponse.java @@ -19,7 +19,11 @@ package org.apache.wicket.protocol.ws.api; import java.io.ByteArrayOutputStream; import java.io.IOException; +import javax.servlet.http.Cookie; + import org.apache.wicket.request.Response; +import org.apache.wicket.request.http.WebResponse; +import org.apache.wicket.util.time.Time; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -32,7 +36,7 @@ import org.slf4j.LoggerFactory; * * @since 6.0 */ -public class WebSocketResponse extends Response +public class WebSocketResponse extends WebResponse { private static final Logger LOG = LoggerFactory.getLogger(WebSocketResponse.class); @@ -133,4 +137,82 @@ public class WebSocketResponse extends Response { return connection; } + + @Override + public void addCookie(Cookie cookie) + { + throw new UnsupportedOperationException(); + } + + @Override + public void clearCookie(Cookie cookie) + { + throw new UnsupportedOperationException(); + } + + @Override + public void setHeader(String name, String value) + { + throw new UnsupportedOperationException(); + } + + @Override + public void addHeader(String name, String value) + { + throw new UnsupportedOperationException(); + } + + @Override + public void setDateHeader(String name, Time date) + { + throw new UnsupportedOperationException(); + } + + @Override + public void setContentLength(long length) + { + throw new UnsupportedOperationException(); + } + + @Override + public void setContentType(String mimeType) + { + throw new UnsupportedOperationException(); + } + + @Override + public void setStatus(int sc) + { + throw new UnsupportedOperationException(); + } + + @Override + public void sendError(int sc, String msg) + { + throw new UnsupportedOperationException(); + } + + @Override + public String encodeRedirectURL(CharSequence url) + { + throw new UnsupportedOperationException(); + } + + @Override + public void sendRedirect(String url) + { + throw new UnsupportedOperationException(); + } + + @Override + public boolean isRedirect() + { + return false; + } + + @Override + public void flush() + { + throw new UnsupportedOperationException(); + } }
