You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by kn...@apache.org on 2007/11/01 10:15:32 UTC
svn commit: r590943 -
/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java
Author: knopp
Date: Thu Nov 1 02:15:32 2007
New Revision: 590943
URL: http://svn.apache.org/viewvc?rev=590943&view=rev
Log:
WICKET-1101
Modified:
wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java
Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java?rev=590943&r1=590942&r2=590943&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java Thu Nov 1 02:15:32 2007
@@ -26,6 +26,7 @@
import org.apache.wicket.PageParameters;
import org.apache.wicket.RequestCycle;
import org.apache.wicket.Session;
+import org.apache.wicket.protocol.http.WebRequest;
import org.apache.wicket.protocol.http.request.WebRequestCodingStrategy;
import org.apache.wicket.request.RequestParameters;
import org.apache.wicket.request.target.component.BookmarkableListenerInterfaceRequestTarget;
@@ -70,7 +71,7 @@
* redirected to hybrid URL - needed for ajax to work properly after page refresh
*/
public HybridUrlCodingStrategy(String mountPath, Class pageClass,
- boolean redirectOnBookmarkableRequest)
+ boolean redirectOnBookmarkableRequest)
{
super(mountPath);
pageClassRef = new WeakReference(pageClass);
@@ -132,7 +133,7 @@
// returns true if the pageId is unique, so we can get rid of the
// pageMap name in the url this way
return Application.exists() &&
- Application.get().getSessionSettings().isPageIdUniquePerSession();
+ Application.get().getSessionSettings().isPageIdUniquePerSession();
}
/**
@@ -152,7 +153,7 @@
// decode parameters
PageParameters parameters = new PageParameters(decodeParameters(extraction
- .getUrlAfterExtraction(), requestParameters.getParameters()));
+ .getUrlAfterExtraction(), requestParameters.getParameters()));
if (requestParameters.getPageMapName() == null)
{
@@ -167,12 +168,12 @@
// bookmarkable page, or a request to a stateless page (in which case a
// wicket:interface parameter should be available
final String interfaceParameter = (String)parameters
- .remove(WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME);
+ .remove(WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME);
// we need to remember the amount of trailing slashes after the redirect
// (otherwise we'll break relative urls)
int originalUrlTrailingSlashesCount = getTrailingSlashesCount(extraction
- .getUrlAfterExtraction());
+ .getUrlAfterExtraction());
boolean redirect = isRedirectOnBookmarkableRequest();
if (Strings.isEmpty(pageMapName) != true && alwaysRedirectWhenPageMapIsSpecified())
@@ -185,14 +186,14 @@
// stateless listener interface
WebRequestCodingStrategy.addInterfaceParameters(interfaceParameter, requestParameters);
return new BookmarkableListenerInterfaceRequestTarget(pageMapName, (Class)pageClassRef
- .get(), parameters, requestParameters.getComponentPath(), requestParameters
- .getInterfaceName(), requestParameters.getVersionNumber());
+ .get(), parameters, requestParameters.getComponentPath(), requestParameters
+ .getInterfaceName(), requestParameters.getVersionNumber());
}
else if (pageId == null)
{
// bookmarkable page request
return new HybridBookmarkablePageRequestTarget(pageMapName, (Class)pageClassRef.get(),
- parameters, originalUrlTrailingSlashesCount, redirect);
+ parameters, originalUrlTrailingSlashesCount, redirect);
}
else
// hybrid url
@@ -200,15 +201,15 @@
Page page;
if (Strings.isEmpty(pageMapName) && Application.exists() &&
- Application.get().getSessionSettings().isPageIdUniquePerSession())
+ Application.get().getSessionSettings().isPageIdUniquePerSession())
{
page = Session.get().getPage(pageId.intValue(),
- pageVersion != null ? pageVersion.intValue() : 0);
+ pageVersion != null ? pageVersion.intValue() : 0);
}
else
{
page = Session.get().getPage(pageMapName, "" + pageId,
- pageVersion != null ? pageVersion.intValue() : 0);
+ pageVersion != null ? pageVersion.intValue() : 0);
}
// check if the found page match the required class
@@ -223,7 +224,7 @@
// we didn't find the page, act as bookmarkable page request -
// create new instance
return new HybridBookmarkablePageRequestTarget(pageMapName, (Class)pageClassRef
- .get(), parameters, originalUrlTrailingSlashesCount, redirect);
+ .get(), parameters, originalUrlTrailingSlashesCount, redirect);
}
}
@@ -297,7 +298,7 @@
ListenerInterfaceRequestTarget target = (ListenerInterfaceRequestTarget)requestTarget;
Page page = target.getPage();
return new PageInfo(new Integer(page.getNumericId()), new Integer(page
- .getCurrentVersionNumber()), page.getPageMapName());
+ .getCurrentVersionNumber()), page.getPageMapName());
}
else
{
@@ -431,7 +432,7 @@
{
ListenerInterfaceRequestTarget target = (ListenerInterfaceRequestTarget)requestTarget;
return target.getPage().getClass().equals(pageClassRef.get()) &&
- target.getRequestListenerInterface().equals(IRedirectListener.INTERFACE);
+ target.getRequestListenerInterface().equals(IRedirectListener.INTERFACE);
}
return false;
}
@@ -491,11 +492,11 @@
{
lastSubstring = url.substring(begin);
if (lastSubstring.length() > getBeginSeparator().length() + getEndSeparator().length() &&
- lastSubstring.startsWith(getBeginSeparator()) &&
- lastSubstring.endsWith(getEndSeparator()))
+ lastSubstring.startsWith(getBeginSeparator()) &&
+ lastSubstring.endsWith(getEndSeparator()))
{
String pageInfoString = lastSubstring.substring(getBeginSeparator().length(), //
- lastSubstring.length() - getEndSeparator().length());
+ lastSubstring.length() - getEndSeparator().length());
PageInfo info = PageInfo.parsePageInfo(pageInfoString);
last = info;
}
@@ -562,10 +563,10 @@
public PageInfo(Integer pageId, Integer versionNumber, String pageMapName)
{
if ((pageId == null && (versionNumber != null || pageMapName == null)) ||
- (versionNumber == null && (pageId != null || pageMapName == null)))
+ (versionNumber == null && (pageId != null || pageMapName == null)))
{
throw new IllegalArgumentException(
- "Either both pageId and versionNumber must be null or none of them.");
+ "Either both pageId and versionNumber must be null or none of them.");
}
this.pageId = pageId;
this.versionNumber = versionNumber;
@@ -618,7 +619,7 @@
// we don't need to encode the pageMapName when the pageId is unique
// per session
if (pageMapName != null && pageId != null && Application.exists() &&
- Application.get().getSessionSettings().isPageIdUniquePerSession())
+ Application.get().getSessionSettings().isPageIdUniquePerSession())
{
pageMapName = null;
}
@@ -730,7 +731,7 @@
{
// pageId:pageVersion
return new PageInfo(Integer.valueOf(segments[0]), Integer.valueOf(segments[1]),
- null);
+ null);
}
else if (segments.length == 1 && !isNumber(segments[0]))
{
@@ -760,7 +761,7 @@
{
// pageMapName.pageId.pageVersion
return new PageInfo(Integer.valueOf(segments[1]), Integer.valueOf(segments[2]),
- segments[0]);
+ segments[0]);
}
}
@@ -790,7 +791,7 @@
* @param redirect
*/
public HybridBookmarkablePageRequestTarget(String pageMapName, Class pageClass,
- PageParameters pageParameters, int originalUrlTrailingSlashesCount, boolean redirect)
+ PageParameters pageParameters, int originalUrlTrailingSlashesCount, boolean redirect)
{
super(pageMapName, pageClass, pageParameters);
this.originalUrlTrailingSlashesCount = originalUrlTrailingSlashesCount;
@@ -802,22 +803,20 @@
Page page = super.newPage(pageClass, requestCycle);
page.setMetaData(PAGE_PARAMETERS_META_DATA_KEY, getPageParameters());
page.setMetaData(ORIGINAL_TRAILING_SLASHES_COUNT_METADATA_KEY, new Integer(
- originalUrlTrailingSlashesCount));
+ originalUrlTrailingSlashesCount));
return page;
}
public void respond(RequestCycle requestCycle)
{
+ Page page = getPage(requestCycle);
+ if (page.isPageStateless() == false && redirect)
{
- Page page = getPage(requestCycle);
- if (page.isPageStateless() == false && redirect)
- {
- requestCycle.redirectTo(page);
- }
- else
- {
- super.respond(requestCycle);
- }
+ requestCycle.redirectTo(page);
+ }
+ else
+ {
+ super.respond(requestCycle);
}
}
};
@@ -827,6 +826,16 @@
*/
public boolean matches(String path)
{
+ RequestCycle rc = RequestCycle.get();
+
+ // the null check is necessary, as this method is first time called from WicketFilter when
+ // no RequestCycle exists yet
+ if (rc != null && ((WebRequest)rc.getRequest()).isAjax())
+ {
+ // HybridUrlCodingStrategy doesn't make sense for ajax request
+ return false;
+ }
+
if (path.startsWith(getMountPath()))
{
/*
@@ -842,11 +851,10 @@
* We also need to accept /mount/point(XXX)
*/
if (remainder.length() > getBeginSeparator().length() + getEndSeparator().length() &&
- remainder.startsWith(getBeginSeparator()) &&
- remainder.endsWith(getEndSeparator()))
+ remainder.startsWith(getBeginSeparator()) && remainder.endsWith(getEndSeparator()))
{
String substring = remainder.substring(getBeginSeparator().length(), //
- remainder.length() - getEndSeparator().length());
+ remainder.length() - getEndSeparator().length());
PageInfo info = PageInfo.parsePageInfo(substring);
if (info != null)
{