Author: jcompagner Date: Sat Oct 4 14:44:29 2008 New Revision: 701717 URL: http://svn.apache.org/viewvc?rev=701717&view=rev Log: from 1.3: when the request is an ajax request and the processRequest == false (onlyActivePage should be processed) then a page expired shouldnt be thrown, just a empty ajax request target should be set
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycleProcessor.java Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycleProcessor.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycleProcessor.java?rev=701717&r1=701716&r2=701717&view=diff ============================================================================== --- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycleProcessor.java (original) +++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/WebRequestCycleProcessor.java Sat Oct 4 14:44:29 2008 @@ -24,6 +24,7 @@ import org.apache.wicket.IPageMap; import org.apache.wicket.IRequestTarget; import org.apache.wicket.Page; +import org.apache.wicket.Request; import org.apache.wicket.RequestCycle; import org.apache.wicket.Session; import org.apache.wicket.AccessStackPageMap.Access; @@ -58,10 +59,10 @@ * org.apache.wicket.request.RequestParameters) */ public IRequestTarget resolve(final RequestCycle requestCycle, - final RequestParameters requestParameters) + final RequestParameters requestParameters) { IRequestCodingStrategy requestCodingStrategy = requestCycle.getProcessor() - .getRequestCodingStrategy(); + .getRequestCodingStrategy(); final String path = requestParameters.getPath(); IRequestTarget target = null; @@ -88,7 +89,7 @@ Session session = Session.get(); IPageMap pageMap = session.pageMapForName(requestParameters.getPageMapName(), - false); + false); if (pageMap == null) { // requested pagemap no longer exists - ignore this @@ -101,11 +102,10 @@ if (accessStackPageMap.getAccessStack().size() > 0) { final Access access = (Access)accessStackPageMap.getAccessStack() - .peek(); + .peek(); - final int pageId = Integer - .parseInt(Strings.firstPathComponent(requestParameters - .getComponentPath(), Component.PATH_SEPARATOR)); + final int pageId = Integer.parseInt(Strings.firstPathComponent( + requestParameters.getComponentPath(), Component.PATH_SEPARATOR)); if (pageId != access.getId()) { @@ -117,7 +117,7 @@ { final int version = requestParameters.getVersionNumber(); if (version != Page.LATEST_VERSION && - version != access.getVersion()) + version != access.getVersion()) { // version is no longer the active version - // ignore this request @@ -145,7 +145,16 @@ } else { - throw new PageExpiredException("Request cannot be processed"); + Request request = requestCycle.getRequest(); + if (request instanceof WebRequest && ((WebRequest)request).isAjax()) + { + // if processRequest is false in an ajax request just have an empty ajax target + target = EmptyAjaxRequestTarget.getInstance(); + } + else + { + throw new PageExpiredException("Request cannot be processed"); + } } } // See whether this request points to a shared resource @@ -179,10 +188,10 @@ // If the target is still null and there was a component path // then the Page could not be located in the session throw new PageExpiredException( - "Cannot find the rendered page in session [pagemap=" + - requestParameters.getPageMapName() + ",componentPath=" + - requestParameters.getComponentPath() + ",versionNumber=" + - requestParameters.getVersionNumber() + "]"); + "Cannot find the rendered page in session [pagemap=" + + requestParameters.getPageMapName() + ",componentPath=" + + requestParameters.getComponentPath() + ",versionNumber=" + + requestParameters.getVersionNumber() + "]"); } } else @@ -190,28 +199,25 @@ // a target was found, but not by looking up a mount. check whether // this is allowed if (Application.get().getSecuritySettings().getEnforceMounts() && - requestCodingStrategy.pathForTarget(target) != null) + requestCodingStrategy.pathForTarget(target) != null) { String msg = "Direct access not allowed for mounted targets"; // the target was mounted, but we got here via another path // : deny the request log.error(msg + " [request=" + requestCycle.getRequest() + ",target=" + target + - ",session=" + Session.get() + "]"); + ",session=" + Session.get() + "]"); throw new AbortWithWebErrorCodeException(HttpServletResponse.SC_FORBIDDEN, msg); } } - // (WICKET-1356) in case no target was found, return null here. RequestCycle will deal with it - // possible letting wicket filter to pass the request down the filter chain + // (WICKET-1356) in case no target was found, return null here. RequestCycle will deal with + // it + // possible letting wicket filter to pass the request down the filter chain /* - if (target == null) - { - // if we get here, we have no recognized Wicket target, and thus - // regard this as a external (non-wicket) resource request on - // this server - return resolveExternalResource(requestCycle); - } - */ + * if (target == null) { // if we get here, we have no recognized Wicket target, and thus // + * regard this as a external (non-wicket) resource request on // this server return + * resolveExternalResource(requestCycle); } + */ return target; }