formatted

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

Branch: refs/heads/5299-ajax-strategy
Commit: 1c8dc6f77027a3b3bcc68e24b427daa7effd2aa2
Parents: 29b9422
Author: svenmeier <s...@meiers.net>
Authored: Thu Aug 8 11:43:23 2013 +0200
Committer: svenmeier <s...@meiers.net>
Committed: Thu Aug 8 11:43:23 2013 +0200

----------------------------------------------------------------------
 .../request/handler/render/WebPageRenderer.java | 135 +++++++++----------
 1 file changed, 62 insertions(+), 73 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/1c8dc6f7/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
 
b/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
index c3899ec..ad39922 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
@@ -107,7 +107,7 @@ public class WebPageRenderer extends PageRenderer
                }
 
                // keep the original response
-               final WebResponse originalResponse = (WebResponse) 
requestCycle.getResponse();
+               final WebResponse originalResponse = 
(WebResponse)requestCycle.getResponse();
 
                // buffered web response for page
                BufferedWebResponse response = new 
BufferedWebResponse(originalResponse);
@@ -123,10 +123,11 @@ public class WebPageRenderer extends PageRenderer
                        if (scheduled == null && 
requestCycle.getRequestHandlerScheduledAfterCurrent() != null)
                        {
                                // This is a special case.
-                               // During page render another request handler 
got scheduled and will want to overwrite
-                               // the response, so we need to let it.
-                               // Just preserve the meta data headers
-                               originalResponse.reset(); // clear the initial 
actions because they are already copied into the new response's actions
+                               // During page render another request handler 
got scheduled and will want to
+                               // overwrite the response, so we need to let it.
+                               // Just preserve the meta data headers. Clear 
the initial actions because they are
+                               // already copied into the new response's 
actions
+                               originalResponse.reset();
                                response.writeMetaData(originalResponse);
                                return null;
                        }
@@ -191,15 +192,18 @@ public class WebPageRenderer extends PageRenderer
 
                boolean isAjax = isAjax(requestCycle);
 
-               boolean shouldPreserveClientUrl = 
((WebRequest)requestCycle.getRequest()).shouldPreserveClientUrl();
+               boolean shouldPreserveClientUrl = 
((WebRequest)requestCycle.getRequest())
+                       .shouldPreserveClientUrl();
 
                if (bufferedResponse != null)
                {
-                       logger.warn("The Buffered response should be handled by 
BufferedResponseRequestHandler");
+                       logger
+                               .warn("The Buffered response should be handled 
by BufferedResponseRequestHandler");
                        // if there is saved response for this URL render it
                        
bufferedResponse.writeTo((WebResponse)requestCycle.getResponse());
                }
-               else {
+               else
+               {
                        RedirectPolicy redirectPolicy = getRedirectPolicy();
 
                        boolean onePassRender = isOnePassRender();
@@ -210,7 +214,9 @@ public class WebPageRenderer extends PageRenderer
                        boolean isNewPageInstance = 
getPageProvider().isNewPageInstance();
                        boolean isPageStateless = getPage().isPageStateless();
 
-                       if (shouldRenderPageAndWriteResponse(isAjax, 
onePassRender, isRedirectToRender, redirectPolicy, shouldPreserveClientUrl, 
targetEqualsCurrentUrl, isNewPageInstance, isPageStateless)) //
+                       if (shouldRenderPageAndWriteResponse(isAjax, 
onePassRender, isRedirectToRender,
+                               redirectPolicy, shouldPreserveClientUrl, 
targetEqualsCurrentUrl, isNewPageInstance,
+                               isPageStateless)) //
                        {
                                BufferedWebResponse response = 
renderPage(currentUrl, requestCycle);
                                if (response != null)
@@ -218,30 +224,36 @@ public class WebPageRenderer extends PageRenderer
                                        
response.writeTo((WebResponse)requestCycle.getResponse());
                                }
                        }
-                       else {
+                       else
+                       {
                                boolean sessionTemporary = isSessionTemporary();
-                               if (shouldRedirectToTargetUrl(isAjax, 
redirectPolicy, isRedirectToRender, targetEqualsCurrentUrl, isNewPageInstance, 
isPageStateless, sessionTemporary))
+                               if (shouldRedirectToTargetUrl(isAjax, 
redirectPolicy, isRedirectToRender,
+                                       targetEqualsCurrentUrl, 
isNewPageInstance, isPageStateless, sessionTemporary))
                                {
                                        redirectTo(targetUrl, requestCycle);
 
-                                       // note: if we had session here we 
would render the page to buffer and then redirect to
-                                       // URL generated *after* page has been 
rendered (the statelessness may change during
-                                       // render). this would save one 
redirect because now we have to render to URL generated
-                                       // *before* page is rendered, render 
the page, get URL after render and if the URL is
-                                       // different (meaning page is not 
stateless), save the buffer and redirect again (which
-                                       // is pretty much what the next step 
does)
+                                       // note: if we had session here we 
would render the page to buffer and then
+                                       // redirect to URL generated *after* 
page has been rendered (the statelessness
+                                       // may change during render). this 
would save one redirect because now we have
+                                       // to render to URL generated *before* 
page is rendered, render the page, get
+                                       // URL after render and if the URL is 
different (meaning page is not stateless),
+                                       // save the buffer and redirect again 
(which is pretty much what the next step
+                                       // does)
                                }
                                else
                                {
                                        if (redirectToBuffer == false && 
logger.isDebugEnabled())
                                        {
-                                               String details = 
String.format("redirect strategy: '%s', isAjax: '%s', redirect policy: '%s', " +
-                                                               "current url: 
'%s', target url: '%s', is new: '%s', is stateless: '%s', is temporary: '%s'",
+                                               String details = String
+                                                       .format(
+                                                               "redirect 
strategy: '%s', isAjax: '%s', redirect policy: '%s', "
+                                                                       + 
"current url: '%s', target url: '%s', is new: '%s', is stateless: '%s', is 
temporary: '%s'",
                                                                
Application.get().getRequestCycleSettings().getRenderStrategy(),
                                                                isAjax, 
redirectPolicy, currentUrl, targetUrl, isNewPageInstance,
-                                                                               
isPageStateless, sessionTemporary);
-                                               logger.debug("Falling back to 
Redirect_To_Buffer render strategy because none of the conditions " +
-                                                               "matched. 
Details: " + details);
+                                                               
isPageStateless, sessionTemporary);
+                                               logger
+                                                       .debug("Falling back to 
Redirect_To_Buffer render strategy because none of the conditions "
+                                                               + "matched. 
Details: " + details);
                                        }
 
                                        // force creation of possible stateful 
page to get the final target url
@@ -286,30 +298,17 @@ public class WebPageRenderer extends PageRenderer
                }
        }
 
-       // if
-       //              render policy is always-redirect
-       //      or
-       //              it's redirect-to-render
-       //      or
-       //              its ajax and the targetUrl matches current url
-       //      or
-       //              targetUrl DONT matches current url and
-       //                              is new page instance
-       //                      or
-       //                              session is temporary and page is 
stateless
-       // just redirect
-
-       protected boolean shouldRedirectToTargetUrl(boolean ajax, 
RedirectPolicy redirectPolicy, boolean redirectToRender, boolean 
targetEqualsCurrentUrl, boolean newPageInstance, boolean pageStateless,boolean 
sessionTemporary) {
+       /**
+        * Should the client be redirected to target url.
+        */
+       protected boolean shouldRedirectToTargetUrl(boolean ajax, 
RedirectPolicy redirectPolicy,
+               boolean redirectToRender, boolean targetEqualsCurrentUrl, 
boolean newPageInstance,
+               boolean pageStateless, boolean sessionTemporary)
+       {
                return alwaysRedirect(redirectPolicy) //
-                                               ||
-                                               redirectToRender //
-                                               ||
-                                               (ajax && targetEqualsCurrentUrl)
-                                               ||
-                                               (!targetEqualsCurrentUrl //
-                                                       &&
-                                                       (newPageInstance || 
(sessionTemporary && pageStateless))
-                                               );
+                       || redirectToRender //
+                       || (ajax && targetEqualsCurrentUrl) || 
(!targetEqualsCurrentUrl //
+                       && (newPageInstance || (sessionTemporary && 
pageStateless)));
                // if target URL is different and session is temporary and page 
is stateless
                // this is special case when page is stateless but there is no 
session so we can't
                // render it to buffer
@@ -318,46 +317,36 @@ public class WebPageRenderer extends PageRenderer
                // can redirect to the url which will instantiate the instance 
of us
        }
 
-       // if
-       //              the policy is never to redirect
-       //      or
-       //              its NOT ajax and
-       //                              one pass render mode is on and NOT 
forced to redirect
-       //                      or
-       //                              the targetUrl matches current url and 
page is NOT stateless and NOT a new instance
-       //      or
-       //              the targetUrl matches current url and it's 
redirect-to-render
-       //      or
-       //      the request determines that the current url should be preserved
-       //      just render the page
-       protected boolean shouldRenderPageAndWriteResponse(boolean ajax, 
boolean onePassRender, boolean redirectToRender, RedirectPolicy redirectPolicy, 
boolean shouldPreserveClientUrl, boolean targetEqualsCurrentUrl, boolean 
newPageInstance, boolean pageStateless) {
+       /**
+        * Should the page be rendered immediately.
+        */
+       protected boolean shouldRenderPageAndWriteResponse(boolean ajax, 
boolean onePassRender,
+               boolean redirectToRender, RedirectPolicy redirectPolicy, 
boolean shouldPreserveClientUrl,
+               boolean targetEqualsCurrentUrl, boolean newPageInstance, 
boolean pageStateless)
+       {
                return neverRedirect(redirectPolicy)
-                       ||
-                       (!ajax &&
-                               (
-                                       (onePassRender && 
notForcedRedirect(redirectPolicy))
-                                       ||
-                                       (targetEqualsCurrentUrl && 
notNewAndNotStatelessPage(newPageInstance, pageStateless)))
-                               )
-                       ||
-                       (targetEqualsCurrentUrl && redirectToRender)
-                       ||
-                       shouldPreserveClientUrl;
+                       || (!ajax && ((onePassRender && 
notForcedRedirect(redirectPolicy)) || (targetEqualsCurrentUrl && 
notNewAndNotStatelessPage(
+                               newPageInstance, pageStateless)))) || 
(targetEqualsCurrentUrl && redirectToRender)
+                       || shouldPreserveClientUrl;
        }
 
-       private static boolean notNewAndNotStatelessPage(boolean 
newPageInstance, boolean pageStateless) {
+       private static boolean notNewAndNotStatelessPage(boolean 
newPageInstance, boolean pageStateless)
+       {
                return !newPageInstance && !pageStateless;
        }
 
-       private static boolean neverRedirect(RedirectPolicy redirectPolicy) {
+       private static boolean neverRedirect(RedirectPolicy redirectPolicy)
+       {
                return redirectPolicy == RedirectPolicy.NEVER_REDIRECT;
        }
 
-       private static boolean alwaysRedirect(RedirectPolicy redirectPolicy) {
+       private static boolean alwaysRedirect(RedirectPolicy redirectPolicy)
+       {
                return redirectPolicy == RedirectPolicy.ALWAYS_REDIRECT;
        }
 
-       private static boolean notForcedRedirect(RedirectPolicy redirectPolicy) 
{
+       private static boolean notForcedRedirect(RedirectPolicy redirectPolicy)
+       {
                return !alwaysRedirect(redirectPolicy);
        }
 

Reply via email to