You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jd...@apache.org on 2009/04/15 20:37:09 UTC
svn commit: r765297 -
/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java
Author: jdonnerstag
Date: Wed Apr 15 18:37:09 2009
New Revision: 765297
URL: http://svn.apache.org/viewvc?rev=765297&view=rev
Log:
eliminate warnings
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java?rev=765297&r1=765296&r2=765297&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java (original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java Wed Apr 15 18:37:09 2009
@@ -58,11 +58,54 @@
public class HybridUrlCodingStrategy extends AbstractRequestTargetUrlCodingStrategy
{
/** bookmarkable page class. */
- protected final WeakReference/* <Class> */pageClassRef;
+ protected final WeakReference<Class<? extends Page>> pageClassRef;
private final boolean redirectOnBookmarkableRequest;
/**
+ * Meta data key to store PageParameters in page instance. This is used to save the
+ * PageParameters that were used to create the page instance so that later they can be used when
+ * generating page URL
+ */
+ public static final PageParametersMetaDataKey PAGE_PARAMETERS_META_DATA_KEY = new PageParametersMetaDataKey();
+
+ private static class PageParametersMetaDataKey extends MetaDataKey<PageParameters>
+ {
+ private static final long serialVersionUID = 1L;
+ }
+
+ // used to store number of trailing slashes in page url (prior the PageInfo) part. This is
+ // necessary to maintain the exact number of slashes after page redirect, so that we don't break
+ // things that rely on URL depth (other mounted URLs)
+ private static final OriginalUrlTrailingSlashesCountMetaDataKey ORIGINAL_TRAILING_SLASHES_COUNT_METADATA_KEY = new OriginalUrlTrailingSlashesCountMetaDataKey();
+
+ private static class OriginalUrlTrailingSlashesCountMetaDataKey extends MetaDataKey<Integer>
+ {
+ private static final long serialVersionUID = 1L;
+ }
+
+ /**
+ * Sets the initial page parameters for page instance. Use this only if you know what you are
+ * doing.
+ *
+ * @param page
+ * @param pageParameters
+ */
+ public static void setInitialPageParameters(final Page page, final PageParameters pageParameters)
+ {
+ page.setMetaData(PAGE_PARAMETERS_META_DATA_KEY, pageParameters);
+ }
+
+ /**
+ * @param page
+ * @return initial page parameters
+ */
+ public static PageParameters getInitialPagePageParameters(final Page page)
+ {
+ return page.getMetaData(PAGE_PARAMETERS_META_DATA_KEY);
+ }
+
+ /**
* Construct.
*
* @param mountPath
@@ -71,8 +114,8 @@
* whether after hitting the page with URL in bookmarkable form it should be
* redirected to hybrid URL - needed for ajax to work properly after page refresh
*/
- public HybridUrlCodingStrategy(String mountPath, Class pageClass,
- boolean redirectOnBookmarkableRequest)
+ public HybridUrlCodingStrategy(final String mountPath, final Class<? extends Page> pageClass,
+ final boolean redirectOnBookmarkableRequest)
{
super(mountPath);
@@ -81,7 +124,7 @@
throw new IllegalArgumentException("mountPath can not end with a '/': " + mountPath);
}
- pageClassRef = new WeakReference(pageClass);
+ pageClassRef = new WeakReference<Class<? extends Page>>(pageClass);
this.redirectOnBookmarkableRequest = redirectOnBookmarkableRequest;
}
@@ -91,18 +134,17 @@
* @param mountPath
* @param pageClass
*/
- public HybridUrlCodingStrategy(String mountPath, Class pageClass)
+ public HybridUrlCodingStrategy(final String mountPath, final Class<? extends Page> pageClass)
{
this(mountPath, pageClass, true);
}
/**
- * Returns the amount of trailing slashes in the given string
*
* @param seq
- * @return
+ * @return Returns the amount of trailing slashes in the given string
*/
- private int getTrailingSlashesCount(CharSequence seq)
+ private int getTrailingSlashesCount(final CharSequence seq)
{
int count = 0;
for (int i = seq.length() - 1; i >= 0; --i)
@@ -123,7 +165,7 @@
* Returns whether after hitting bookmarkable url the request should be redirected to a hybrid
* URL. This is recommended for pages with Ajax.
*
- * @return
+ * @return true if redirect on bookmarkable request
*/
protected boolean isRedirectOnBookmarkableRequest()
{
@@ -133,7 +175,7 @@
/**
* Returns whether to redirect when there is pageMap specified in bookmarkable URL
*
- * @return
+ * @return true if always redirect when page map is specified
*/
protected boolean alwaysRedirectWhenPageMapIsSpecified()
{
@@ -146,7 +188,7 @@
/**
* @see org.apache.wicket.request.target.coding.IRequestTargetUrlCodingStrategy#decode(org.apache.wicket.request.RequestParameters)
*/
- public IRequestTarget decode(RequestParameters requestParameters)
+ public IRequestTarget decode(final RequestParameters requestParameters)
{
String parametersFragment = requestParameters.getPath().substring(getMountPath().length());
@@ -181,7 +223,7 @@
int originalUrlTrailingSlashesCount = getTrailingSlashesCount(extraction.getUrlAfterExtraction());
boolean redirect = isRedirectOnBookmarkableRequest();
- if (Strings.isEmpty(pageMapName) != true && alwaysRedirectWhenPageMapIsSpecified())
+ if ((Strings.isEmpty(pageMapName) != true) && alwaysRedirectWhenPageMapIsSpecified())
{
redirect = true;
}
@@ -190,14 +232,14 @@
{
// stateless listener interface
WebRequestCodingStrategy.addInterfaceParameters(interfaceParameter, requestParameters);
- return new BookmarkableListenerInterfaceRequestTarget(pageMapName,
- (Class)pageClassRef.get(), parameters, requestParameters.getComponentPath(),
+ return new BookmarkableListenerInterfaceRequestTarget(pageMapName, pageClassRef.get(),
+ parameters, requestParameters.getComponentPath(),
requestParameters.getInterfaceName(), requestParameters.getVersionNumber());
}
else if (pageId == null)
{
// bookmarkable page request
- return new HybridBookmarkablePageRequestTarget(pageMapName, (Class)pageClassRef.get(),
+ return new HybridBookmarkablePageRequestTarget(pageMapName, pageClassRef.get(),
parameters, originalUrlTrailingSlashesCount, redirect);
}
else
@@ -218,7 +260,7 @@
}
// check if the found page match the required class
- if (page != null && page.getClass().equals(pageClassRef.get()))
+ if ((page != null) && page.getClass().equals(pageClassRef.get()))
{
requestParameters.setInterfaceName(IRedirectListener.INTERFACE.getName());
RequestCycle.get().getRequest().setPage(page);
@@ -230,15 +272,13 @@
// create new instance, but only if there is no callback to a non-existing page
if (requestParameters.getInterface() != null)
{
- handleExpiredPage(pageMapName, (Class)pageClassRef.get(),
+ handleExpiredPage(pageMapName, pageClassRef.get(),
originalUrlTrailingSlashesCount, redirect);
}
- return new HybridBookmarkablePageRequestTarget(pageMapName,
- (Class)pageClassRef.get(), parameters, originalUrlTrailingSlashesCount,
- redirect);
+ return new HybridBookmarkablePageRequestTarget(pageMapName, pageClassRef.get(),
+ parameters, originalUrlTrailingSlashesCount, redirect);
}
}
-
}
/**
@@ -260,8 +300,9 @@
* whether or not a redirect should be issued
* @return request target used to handle this situation
*/
- protected IRequestTarget handleExpiredPage(String pageMapName, Class pageClass,
- int trailingSlashesCount, boolean redirect)
+ protected IRequestTarget handleExpiredPage(final String pageMapName,
+ final Class<? extends Page> pageClass, final int trailingSlashesCount,
+ final boolean redirect)
{
throw new PageExpiredException(
"Request cannot be processed. The target page does not exist anymore.");
@@ -272,9 +313,9 @@
* or null if the number can't be determined.
*
* @param requestTarget
- * @return
+ * @return the number of trailing slashes
*/
- private Integer getOriginalOriginalTrailingSlashesCount(IRequestTarget requestTarget)
+ private Integer getOriginalOriginalTrailingSlashesCount(final IRequestTarget requestTarget)
{
if (requestTarget instanceof ListenerInterfaceRequestTarget)
{
@@ -289,9 +330,9 @@
* Extracts the PageParameters from given request target
*
* @param requestTarget
- * @return
+ * @return page parameters
*/
- private PageParameters getPageParameters(IRequestTarget requestTarget)
+ private PageParameters getPageParameters(final IRequestTarget requestTarget)
{
if (requestTarget instanceof BookmarkablePageRequestTarget)
{
@@ -314,9 +355,9 @@
* Extracts the PageInfo from given request target
*
* @param requestTarget
- * @return
+ * @return page info
*/
- private PageInfo getPageInfo(IRequestTarget requestTarget)
+ private PageInfo getPageInfo(final IRequestTarget requestTarget)
{
if (requestTarget instanceof BookmarkablePageRequestTarget)
{
@@ -344,57 +385,12 @@
}
/**
- * Sets the initial page parameters for page instance. Use this only if you know what you are
- * doing.
- *
- * @param page
- * @param pageParameters
- */
- public static void setInitialPageParameters(Page page, PageParameters pageParameters)
- {
- page.setMetaData(PAGE_PARAMETERS_META_DATA_KEY, pageParameters);
- }
-
- /**
- * @param page
- * @return
- */
- public static PageParameters getInitialPagePageParameters(Page page)
- {
- return page.getMetaData(PAGE_PARAMETERS_META_DATA_KEY);
- }
-
- /**
- * Meta data key to store PageParameters in page instance. This is used to save the
- * PageParameters that were used to create the page instance so that later they can be used when
- * generating page URL
- */
- public static final PageParametersMetaDataKey PAGE_PARAMETERS_META_DATA_KEY = new PageParametersMetaDataKey();
-
- private static class PageParametersMetaDataKey extends MetaDataKey<PageParameters>
- {
- private static final long serialVersionUID = 1L;
- };
-
- // used to store number of trailing slashes in page url (prior the PageInfo)
- // part. This is necessary to maintain
- // the exact number of slashes after page redirect, so that we don't break
- // things that rely on URL depth
- // (other mounted URLs)
- private static final OriginalUrlTrailingSlashesCountMetaDataKey ORIGINAL_TRAILING_SLASHES_COUNT_METADATA_KEY = new OriginalUrlTrailingSlashesCountMetaDataKey();
-
- private static class OriginalUrlTrailingSlashesCountMetaDataKey extends MetaDataKey<Integer>
- {
- private static final long serialVersionUID = 1L;
- }
-
- /**
* Fix the amount of trailing slashes in the specified buffer.
*
* @param buffer
* @param desiredCount
*/
- private void fixTrailingSlashes(AppendingStringBuffer buffer, int desiredCount)
+ private void fixTrailingSlashes(final AppendingStringBuffer buffer, final int desiredCount)
{
int current = getTrailingSlashesCount(buffer);
if (current > desiredCount)
@@ -415,7 +411,7 @@
/**
* @see org.apache.wicket.request.target.coding.IRequestTargetUrlCodingStrategy#encode(org.apache.wicket.IRequestTarget)
*/
- public CharSequence encode(IRequestTarget requestTarget)
+ public CharSequence encode(final IRequestTarget requestTarget)
{
if (matches(requestTarget) == false)
{
@@ -447,7 +443,7 @@
/**
* @see org.apache.wicket.request.target.coding.IRequestTargetUrlCodingStrategy#matches(org.apache.wicket.IRequestTarget)
*/
- public boolean matches(IRequestTarget requestTarget)
+ public boolean matches(final IRequestTarget requestTarget)
{
if (requestTarget instanceof BookmarkablePageRequestTarget)
{
@@ -464,52 +460,12 @@
}
/**
- * Class that encapsulates {@link PageInfo} instance and the URL part prior the PageInfo part
- *
- * @author Matej Knopp
- */
- protected static class PageInfoExtraction
- {
- private final String urlAfterExtraction;
-
- private final PageInfo pageInfo;
-
- /**
- * Construct.
- *
- * @param urlAfterExtraction
- * @param pageInfo
- */
- public PageInfoExtraction(String urlAfterExtraction, PageInfo pageInfo)
- {
- this.urlAfterExtraction = urlAfterExtraction;
- this.pageInfo = pageInfo;
- }
-
- /**
- * @return
- */
- public PageInfo getPageInfo()
- {
- return pageInfo;
- }
-
- /**
- * @return
- */
- public String getUrlAfterExtraction()
- {
- return urlAfterExtraction;
- }
- }
-
- /**
* Extracts the PageInfo string.
*
* @param url
- * @return
+ * @return extract page info
*/
- protected PageInfoExtraction extractPageInfo(String url)
+ protected PageInfoExtraction extractPageInfo(final String url)
{
int begin = url.lastIndexOf(getBeginSeparator());
PageInfo last = null;
@@ -517,7 +473,7 @@
while (begin != -1)
{
String substring = url.substring(begin);
- if (substring.length() > getBeginSeparator().length() + getEndSeparator().length() &&
+ if ((substring.length() > getBeginSeparator().length() + getEndSeparator().length()) &&
substring.startsWith(getBeginSeparator()) && substring.endsWith(getEndSeparator()))
{
String pageInfoString = substring.substring(getBeginSeparator().length(), //
@@ -535,6 +491,7 @@
}
begin = url.lastIndexOf(getBeginSeparator(), begin - 1);
}
+
if (last != null)
{
return new PageInfoExtraction(url.substring(0, url.length() - lastSubstring.length()),
@@ -546,11 +503,17 @@
}
}
+ /**
+ * @return begin separator
+ */
protected String getBeginSeparator()
{
return ".";
}
+ /**
+ * @return end separator
+ */
protected String getEndSeparator()
{
return "";
@@ -561,9 +524,9 @@
*
* @param url
* @param pageInfo
- * @return
+ * @return URL
*/
- protected String addPageInfo(String url, PageInfo pageInfo)
+ protected String addPageInfo(final String url, final PageInfo pageInfo)
{
if (pageInfo != null)
{
@@ -576,6 +539,61 @@
}
/**
+ * @see org.apache.wicket.request.target.coding.AbstractRequestTargetUrlCodingStrategy#matches(java.lang.String)
+ */
+ @Override
+ public boolean matches(final String path, final boolean caseSensitive)
+ {
+ 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 (Strings.startsWith(path, getMountPath(), caseSensitive))
+ {
+ /*
+ * We need to match /mount/point or /mount/point/with/extra/path, but not
+ * /mount/pointXXX
+ */
+ String remainder = path.substring(getMountPath().length());
+ if ((remainder.length() == 0) || remainder.startsWith("/"))
+ {
+ return true;
+ }
+ /*
+ * We also need to accept /mount/point(XXX)
+ */
+ if ((remainder.length() > getBeginSeparator().length() + getEndSeparator().length()) &&
+ remainder.startsWith(getBeginSeparator()) && remainder.endsWith(getEndSeparator()))
+ {
+ String substring = remainder.substring(getBeginSeparator().length(), //
+ remainder.length() - getEndSeparator().length());
+ PageInfo info = PageInfo.parsePageInfo(substring);
+ if (info != null)
+ {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ *
+ * @see java.lang.Object#toString()
+ */
+ @Override
+ public String toString()
+ {
+ return "HybridUrlCodingStrategy[page=" + pageClassRef.get() + "]";
+ }
+
+ /**
* Possible string representation of PageInfo:
* <ul>
* <li>pageId
@@ -601,10 +619,10 @@
* @param versionNumber
* @param pageMapName
*/
- public PageInfo(Integer pageId, Integer versionNumber, String pageMapName)
+ public PageInfo(final Integer pageId, final Integer versionNumber, final String pageMapName)
{
- if ((pageId == null && (versionNumber != null || pageMapName == null)) ||
- (versionNumber == null && (pageId != null || pageMapName == null)))
+ if (((pageId == null) && ((versionNumber != null) || (pageMapName == null))) ||
+ ((versionNumber == null) && ((pageId != null) || (pageMapName == null))))
{
throw new IllegalArgumentException(
"Either both pageId and versionNumber must be null or none of them.");
@@ -615,7 +633,7 @@
}
/**
- * @return
+ * @return page id
*/
public Integer getPageId()
{
@@ -623,7 +641,7 @@
}
/**
- * @return
+ * @return version number
*/
public Integer getVersionNumber()
{
@@ -631,13 +649,17 @@
}
/**
- * @return
+ * @return page map name
*/
public String getPageMapName()
{
return pageMapName;
}
+ /**
+ *
+ * @return page info separator
+ */
private static char getPageInfoSeparator()
{
return '.';
@@ -660,7 +682,7 @@
// we don't need to encode the pageMapName when the pageId is unique
// per session
- if (pageMapName != null && pageId != null && Application.exists() &&
+ if ((pageMapName != null) && (pageId != null) && Application.exists() &&
Application.get().getSessionSettings().isPageIdUniquePerSession())
{
pageMapName = null;
@@ -672,37 +694,37 @@
final boolean pmContainsLetter = !pmEmpty && !isNumber(pageMapName);
- if (pageId != null && pmEmpty && versionNumber.intValue() == 0)
+ if ((pageId != null) && pmEmpty && (versionNumber.intValue() == 0))
{
// pageId
buffer.append(pageId);
}
- else if (pageId != null && pmEmpty && versionNumber.intValue() != 0)
+ else if ((pageId != null) && pmEmpty && (versionNumber.intValue() != 0))
{
// pageId.version
buffer.append(pageId);
buffer.append(getPageInfoSeparator());
buffer.append(versionNumber);
}
- else if (pageId == null && pmContainsLetter)
+ else if ((pageId == null) && pmContainsLetter)
{
// pageMap (must start with letter)
buffer.append(pageMapName);
}
- else if (pageId == null && !pmEmpty && !pmContainsLetter)
+ else if ((pageId == null) && !pmEmpty && !pmContainsLetter)
{
// .pageMap
buffer.append(getPageInfoSeparator());
buffer.append(pageMapName);
}
- else if (pmContainsLetter && pageId != null && versionNumber.intValue() == 0)
+ else if (pmContainsLetter && (pageId != null) && (versionNumber.intValue() == 0))
{
// pageMap.pageId (pageMap must start with a letter)
buffer.append(pageMapName);
buffer.append(getPageInfoSeparator());
buffer.append(pageId);
}
- else if (!pmEmpty && pageId != null)
+ else if (!pmEmpty && (pageId != null))
{
// pageMap.pageId.pageVersion
buffer.append(pageMapName);
@@ -719,11 +741,11 @@
* Method that rigidly checks if the string consists of digits only.
*
* @param string
- * @return
+ * @return true if is a number
*/
- private static boolean isNumber(String string)
+ private static boolean isNumber(final String string)
{
- if (string == null || string.length() == 0)
+ if ((string == null) || (string.length() == 0))
{
return false;
}
@@ -748,11 +770,11 @@
* </ul>
*
* @param src
- * @return
+ * @return page info
*/
- public static PageInfo parsePageInfo(String src)
+ public static PageInfo parsePageInfo(final String src)
{
- if (src == null || src.length() == 0)
+ if ((src == null) || (src.length() == 0))
{
return null;
}
@@ -770,42 +792,42 @@
for (int j = 0; j < segments[i].length(); ++j)
{
char c = segments[i].charAt(j);
- if (!Character.isLetterOrDigit(c) && c != '-' && c != '_')
+ if (!Character.isLetterOrDigit(c) && (c != '-') && (c != '_'))
{
return null;
}
}
}
- if (segments.length == 1 && isNumber(segments[0]))
+ if ((segments.length == 1) && isNumber(segments[0]))
{
// pageId
return new PageInfo(Integer.valueOf(segments[0]), new Integer(0), null);
}
- else if (segments.length == 2 && isNumber(segments[0]) && isNumber(segments[1]))
+ else if ((segments.length == 2) && isNumber(segments[0]) && isNumber(segments[1]))
{
// pageId:pageVersion
return new PageInfo(Integer.valueOf(segments[0]), Integer.valueOf(segments[1]),
null);
}
- else if (segments.length == 1 && !isNumber(segments[0]))
+ else if ((segments.length == 1) && !isNumber(segments[0]))
{
// pageMap (starts with letter)
return new PageInfo(null, null, segments[0]);
}
- else if (segments.length == 2 && segments[0].length() == 0)
+ else if ((segments.length == 2) && (segments[0].length() == 0))
{
// .pageMap
return new PageInfo(null, null, segments[1]);
}
- else if (segments.length == 2 && !isNumber(segments[0]) && isNumber(segments[1]))
+ else if ((segments.length == 2) && !isNumber(segments[0]) && isNumber(segments[1]))
{
// pageMap.pageId (pageMap starts with letter)
return new PageInfo(Integer.valueOf(segments[1]), new Integer(0), segments[0]);
}
else if (segments.length == 3)
{
- if (segments[2].length() == 0 && isNumber(segments[1]))
+ if ((segments[2].length() == 0) && isNumber(segments[1]))
{
// we don't encode it like this, but we still should be able
// to parse it
@@ -845,16 +867,22 @@
* @param originalUrlTrailingSlashesCount
* @param redirect
*/
- public HybridBookmarkablePageRequestTarget(String pageMapName, Class pageClass,
- PageParameters pageParameters, int originalUrlTrailingSlashesCount, boolean redirect)
+ public HybridBookmarkablePageRequestTarget(final String pageMapName,
+ final Class<? extends Page> pageClass, final PageParameters pageParameters,
+ final int originalUrlTrailingSlashesCount, final boolean redirect)
{
super(pageMapName, pageClass, pageParameters);
this.originalUrlTrailingSlashesCount = originalUrlTrailingSlashesCount;
this.redirect = redirect;
}
+ /**
+ * @see org.apache.wicket.request.target.component.BookmarkablePageRequestTarget#newPage(java.lang.Class,
+ * org.apache.wicket.RequestCycle)
+ */
@Override
- protected Page newPage(Class pageClass, RequestCycle requestCycle)
+ protected <C extends Page> Page newPage(final Class<C> pageClass,
+ final RequestCycle requestCycle)
{
Page page = super.newPage(pageClass, requestCycle);
page.setMetaData(PAGE_PARAMETERS_META_DATA_KEY, new PageParameters(getPageParameters()));
@@ -863,11 +891,14 @@
return page;
}
+ /**
+ * @see org.apache.wicket.request.target.component.BookmarkablePageRequestTarget#respond(org.apache.wicket.RequestCycle)
+ */
@Override
- public void respond(RequestCycle requestCycle)
+ public void respond(final RequestCycle requestCycle)
{
Page page = getPage(requestCycle);
- if (page.isPageStateless() == false && redirect)
+ if ((page.isPageStateless() == false) && redirect)
{
requestCycle.redirectTo(page);
}
@@ -876,57 +907,45 @@
super.respond(requestCycle);
}
}
- };
+ }
/**
- * @see org.apache.wicket.request.target.coding.AbstractRequestTargetUrlCodingStrategy#matches(java.lang.String)
+ * Class that encapsulates {@link PageInfo} instance and the URL part prior the PageInfo part
+ *
+ * @author Matej Knopp
*/
- @Override
- public boolean matches(String path, boolean caseSensitive)
+ protected static class PageInfoExtraction
{
- RequestCycle rc = RequestCycle.get();
+ private final String urlAfterExtraction;
- // 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())
+ private final PageInfo pageInfo;
+
+ /**
+ * Construct.
+ *
+ * @param urlAfterExtraction
+ * @param pageInfo
+ */
+ public PageInfoExtraction(final String urlAfterExtraction, final PageInfo pageInfo)
{
- // HybridUrlCodingStrategy doesn't make sense for ajax request
- return false;
+ this.urlAfterExtraction = urlAfterExtraction;
+ this.pageInfo = pageInfo;
}
- if (Strings.startsWith(path, getMountPath(), caseSensitive))
+ /**
+ * @return page info
+ */
+ public PageInfo getPageInfo()
{
- /*
- * We need to match /mount/point or /mount/point/with/extra/path, but not
- * /mount/pointXXX
- */
- String remainder = path.substring(getMountPath().length());
- if (remainder.length() == 0 || remainder.startsWith("/"))
- {
- return true;
- }
- /*
- * We also need to accept /mount/point(XXX)
- */
- if (remainder.length() > getBeginSeparator().length() + getEndSeparator().length() &&
- remainder.startsWith(getBeginSeparator()) && remainder.endsWith(getEndSeparator()))
- {
- String substring = remainder.substring(getBeginSeparator().length(), //
- remainder.length() - getEndSeparator().length());
- PageInfo info = PageInfo.parsePageInfo(substring);
- if (info != null)
- {
- return true;
- }
- }
+ return pageInfo;
}
- return false;
- }
- @Override
- public String toString()
- {
- return "HybridUrlCodingStrategy[page=" + pageClassRef.get() + "]";
+ /**
+ * @return url after extraction
+ */
+ public String getUrlAfterExtraction()
+ {
+ return urlAfterExtraction;
+ }
}
-
}