support setResponsePage and other redirects

Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/7f89fede
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/7f89fede
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/7f89fede

Branch: refs/heads/sandbox/atmosphere
Commit: 7f89fedeb293d2c14af7250d2d8e069037801b94
Parents: 4e015bb
Author: Emond Papegaaij <[email protected]>
Authored: Tue Apr 10 07:44:08 2012 +0200
Committer: Emond Papegaaij <[email protected]>
Committed: Thu Apr 19 11:07:55 2012 +0200

----------------------------------------------------------------------
 .../atmosphere/AtmosphereRequestHandler.java       |    2 +-
 .../wicket/atmosphere/AtmosphereWebResponse.java   |    8 ++++++--
 2 files changed, 7 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/7f89fede/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereRequestHandler.java
----------------------------------------------------------------------
diff --git 
a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereRequestHandler.java
 
b/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereRequestHandler.java
index c36f0b7..45a3d50 100644
--- 
a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereRequestHandler.java
+++ 
b/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereRequestHandler.java
@@ -34,8 +34,8 @@ public class AtmosphereRequestHandler implements 
IRequestHandler
        {
                Page page = 
(Page)Application.get().getMapperContext().getPageInstance(pageKey.getPageId());
                AjaxRequestTarget target = 
WebApplication.get().newAjaxRequestTarget(page);
-               executeHandlers(target, page);
                requestCycle.scheduleRequestHandlerAfterCurrent(target);
+               executeHandlers(target, page);
        }
 
        private void executeHandlers(AjaxRequestTarget target, Page page)

http://git-wip-us.apache.org/repos/asf/wicket/blob/7f89fede/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereWebResponse.java
----------------------------------------------------------------------
diff --git 
a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereWebResponse.java
 
b/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereWebResponse.java
index 34dc127..19e9b3e 100644
--- 
a/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereWebResponse.java
+++ 
b/wicket-atmosphere/src/main/java/org/apache/wicket/atmosphere/AtmosphereWebResponse.java
@@ -11,6 +11,7 @@ public class AtmosphereWebResponse extends WebResponse
 {
        private AtmosphereResponse response;
        private final AppendingStringBuffer out;
+       private boolean redirect;
 
        public AtmosphereWebResponse(AtmosphereResponse response)
        {
@@ -81,7 +82,9 @@ public class AtmosphereWebResponse extends WebResponse
        @Override
        public void sendRedirect(String url)
        {
-               throw new UnsupportedOperationException();
+               out.clear();
+               out.append("<ajax-response><redirect><![CDATA[" + url + 
"]]></redirect></ajax-response>");
+               redirect = true;
        }
 
        @Override
@@ -128,7 +131,8 @@ public class AtmosphereWebResponse extends WebResponse
        @Override
        public void write(CharSequence sequence)
        {
-               out.append(sequence);
+               if (!redirect)
+                       out.append(sequence);
        }
 
        /**

Reply via email to