You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2014/01/10 13:49:26 UTC
[02/10] Merge branch 'master' into sandbox/WICKET-4686
http://git-wip-us.apache.org/repos/asf/wicket/blob/7e032d21/wicket-core/src/main/java/org/apache/wicket/core/request/handler/PageProvider.java
----------------------------------------------------------------------
diff --cc wicket-core/src/main/java/org/apache/wicket/core/request/handler/PageProvider.java
index 4e0c08d,2c015a4..0be5d76
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/PageProvider.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/PageProvider.java
@@@ -259,6 -259,6 +259,12 @@@ public class PageProvider implements IP
if (pageId != null)
{
page = getStoredPage(pageId);
++
++ if (page == null)
++ {
++ // WICKET-4594 - ignore the parsed parameters for stateful pages
++ pageParameters = null;
++ }
}
if (page == null)
http://git-wip-us.apache.org/repos/asf/wicket/blob/7e032d21/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
----------------------------------------------------------------------
diff --cc wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
index bd920de,bbe2e1c..94a4b7a
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
@@@ -138,12 -135,6 +140,12 @@@ public abstract class AbstractBookmarka
}
}
- private final List<MountPathSegment> pathSegments;
++ protected final List<MountPathSegment> pathSegments;
+
+ protected final String[] mountSegments;
+
+ protected final IPageParametersEncoder pageParametersEncoder;
+
/**
* Construct.
*/
@@@ -256,6 -250,12 +271,12 @@@
if (listenerInterface != null)
{
- if (pageInfo.getPageId() != null)
- {
- // WICKET-4594 - ignore the parsed parameters for stateful pages
- pageParameters = null;
- }
++// if (pageInfo.getPageId() != null)
++// {
++// // WICKET-4594 - ignore the parsed parameters for stateful pages
++// pageParameters = null;
++// }
+
PageAndComponentProvider provider = new PageAndComponentProvider(pageInfo.getPageId(),
pageClass, pageParameters, renderCount, componentInfo.getComponentPath());
http://git-wip-us.apache.org/repos/asf/wicket/blob/7e032d21/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractComponentMapper.java
----------------------------------------------------------------------
diff --cc wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractComponentMapper.java
index f3e3770,f3e3770..00b72a1
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractComponentMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractComponentMapper.java
@@@ -83,21 -83,21 +83,16 @@@ public abstract class AbstractComponent
*/
protected PageComponentInfo getPageComponentInfo(final Url url)
{
-- if (url == null)
-- {
-- throw new IllegalStateException("Argument 'url' may not be null.");
-- }
-- else
++ Args.notNull(url, "url");
++
++ for (QueryParameter queryParameter : url.getQueryParameters())
{
-- for (QueryParameter queryParameter : url.getQueryParameters())
++ if (Strings.isEmpty(queryParameter.getValue()))
{
-- if (Strings.isEmpty(queryParameter.getValue()))
++ PageComponentInfo pageComponentInfo = PageComponentInfo.parse(queryParameter.getName());
++ if (pageComponentInfo != null)
{
-- PageComponentInfo pageComponentInfo = PageComponentInfo.parse(queryParameter.getName());
-- if (pageComponentInfo != null)
-- {
-- return pageComponentInfo;
-- }
++ return pageComponentInfo;
}
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/7e032d21/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/7e032d21/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
----------------------------------------------------------------------
diff --cc wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
index 37aada6,c6d3d2a..83e0374
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
@@@ -16,7 -16,9 +16,6 @@@
*/
package org.apache.wicket.core.request.mapper;
- import org.apache.wicket.Application;
-import java.util.ArrayList;
-import java.util.List;
-
import org.apache.wicket.RequestListenerInterface;
import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
import org.apache.wicket.request.IRequestHandler;
@@@ -63,8 -66,78 +63,8 @@@ import org.apache.wicket.util.string.St
*/
public class MountedMapper extends AbstractBookmarkableMapper
{
- private final IPageParametersEncoder pageParametersEncoder;
-
- private static class MountPathSegment
- {
- private int segmentIndex;
- private String fixedPart;
- private int minParameters;
- private int optionalParameters;
-
- public MountPathSegment(int segmentIndex)
- {
- this.segmentIndex = segmentIndex;
- }
-
- public void setFixedPart(String fixedPart)
- {
- this.fixedPart = fixedPart;
- }
-
- public void addRequiredParameter()
- {
- minParameters++;
- }
-
- public void addOptionalParameter()
- {
- optionalParameters++;
- }
-
- public int getSegmentIndex()
- {
- return segmentIndex;
- }
-
- public String getFixedPart()
- {
- return fixedPart;
- }
-
- public int getMinParameters()
- {
- return minParameters;
- }
-
- public int getOptionalParameters()
- {
- return optionalParameters;
- }
-
- public int getMaxParameters()
- {
- return getOptionalParameters() + getMinParameters();
- }
-
- public int getFixedPartSize()
- {
- return getFixedPart() == null ? 0 : 1;
- }
-
- @Override
- public String toString()
- {
- return "(" + getSegmentIndex() + ") " + getMinParameters() + "-" + getMaxParameters() +
- " " + (getFixedPart() == null ? "(end)" : getFixedPart());
- }
- }
-
- private final List<MountPathSegment> pathSegments;
- private final String[] mountSegments;
-
/** bookmarkable page class. */
- private final ClassProvider<? extends IRequestablePage> pageClassProvider;
+ private final IProvider<Class<? extends IRequestablePage>> pageClassProvider;
/**
* Construct.
@@@ -110,16 -183,54 +110,16 @@@
* @param pageParametersEncoder
*/
public MountedMapper(String mountPath,
- ClassProvider<? extends IRequestablePage> pageClassProvider,
+ IProvider<Class<? extends IRequestablePage>> pageClassProvider,
IPageParametersEncoder pageParametersEncoder)
{
- Args.notEmpty(mountPath, "mountPath");
+ super(mountPath, pageParametersEncoder);
+
Args.notNull(pageClassProvider, "pageClassProvider");
- Args.notNull(pageParametersEncoder, "pageParametersEncoder");
- this.pageParametersEncoder = pageParametersEncoder;
this.pageClassProvider = pageClassProvider;
- mountSegments = getMountSegments(mountPath);
- pathSegments = getPathSegments(mountSegments);
}
- private List<MountPathSegment> getPathSegments(String[] segments)
- {
- List<MountPathSegment> ret = new ArrayList<MountPathSegment>();
- int segmentIndex = 0;
- MountPathSegment curPathSegment = new MountPathSegment(segmentIndex);
- ret.add(curPathSegment);
- for (String curSegment : segments)
- {
- if (isFixedSegment(curSegment))
- {
- curPathSegment.setFixedPart(curSegment);
- curPathSegment = new MountPathSegment(segmentIndex + 1);
- ret.add(curPathSegment);
- }
- else if (getPlaceholder(curSegment) != null)
- {
- curPathSegment.addRequiredParameter();
- }
- else
- {
- curPathSegment.addOptionalParameter();
- }
- segmentIndex++;
- }
- return ret;
- }
-
- private boolean isFixedSegment(String segment)
- {
- return getOptionalPlaceholder(segment) == null && getPlaceholder(segment) == null;
- }
-
- /**
- * @see AbstractBookmarkableMapper#parseRequest(org.apache.wicket.request.Request)
- */
@Override
protected UrlInfo parseRequest(Request request)
{
@@@ -221,7 -410,37 +216,38 @@@
encodePageComponentInfo(url, info.getPageComponentInfo());
PageParameters copy = new PageParameters(info.getPageParameters());
- setPlaceholders(copy, url);
++// setPlaceholders(copy, url);
+
+ int dropped = 0;
+ for (int i = 0; i < mountSegments.length; ++i)
+ {
+ String placeholder = getPlaceholder(mountSegments[i]);
+ String optionalPlaceholder = getOptionalPlaceholder(mountSegments[i]);
+ if (placeholder != null)
+ {
+ if (!copy.getNamedKeys().contains(placeholder))
+ {
+ // no value for placeholder - cannot mount
+ return null;
+ }
+ url.getSegments().set(i - dropped, copy.get(placeholder).toString(""));
+ copy.remove(placeholder);
+ }
+ else if (optionalPlaceholder != null)
+ {
+ if (copy.getNamedKeys().contains(optionalPlaceholder))
+ {
+ url.getSegments().set(i - dropped, copy.get(optionalPlaceholder).toString(""));
+ copy.remove(optionalPlaceholder);
+ }
+ else
+ {
+ url.getSegments().remove(i - dropped);
+ dropped++;
+ }
+ }
+ }
+
return encodePageParameters(url, copy, pageParametersEncoder);
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/7e032d21/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PackageMapper.java
----------------------------------------------------------------------
diff --cc wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PackageMapper.java
index 2e5d3fe,63e5914..2cc3e46
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PackageMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PackageMapper.java
@@@ -214,9 -213,15 +214,9 @@@ public class PackageMapper extends Abst
@Override
protected boolean pageMustHaveBeenCreatedBookmarkable()
{
- return true;
+ return false;
}
- /**
- * @see org.apache.wicket.core.request.mapper.AbstractBookmarkableMapper#getCompatibilityScore(org.apache.wicket.request.Request)
- */
@Override
public int getCompatibilityScore(Request request)
{
http://git-wip-us.apache.org/repos/asf/wicket/blob/7e032d21/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/7e032d21/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java
----------------------------------------------------------------------
diff --cc wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java
index 9aafdac,0c6332d..8ebca1d
--- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java
@@@ -110,10 -108,10 +118,10 @@@ public class PackageMapperTest extends
@Test
public void decode1()
{
- Url url = Url.parse(PAGE_CLASS_NAME);
+ Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME);
IRequestHandler handler = encoder.mapRequest(getRequest(url));
- assertTrue(handler instanceof RenderPageRequestHandler);
+ assertThat(handler, instanceOf(RenderPageRequestHandler.class));
IRequestablePage page = ((RenderPageRequestHandler)handler).getPage();
assertEquals(PAGE_CLASS_NAME, page.getClass().getSimpleName());
assertEquals(0, page.getPageParameters().getIndexedCount());
@@@ -126,10 -124,10 +134,10 @@@
@Test
public void decode2()
{
- Url url = Url.parse(PAGE_CLASS_NAME + "/indexed1?a=b&b=c");
+ Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME + "/indexed1?a=b&b=c");
IRequestHandler handler = encoder.mapRequest(getRequest(url));
- assertTrue(handler instanceof RenderPageRequestHandler);
+ assertThat(handler, instanceOf(RenderPageRequestHandler.class));
IRequestablePage page = ((RenderPageRequestHandler)handler).getPage();
assertEquals(PAGE_CLASS_NAME, page.getClass().getSimpleName());
@@@ -148,10 -146,10 +156,10 @@@
@Test
public void decode3()
{
- Url url = Url.parse(PAGE_CLASS_NAME + "?15");
+ Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME + "?15");
IRequestHandler handler = encoder.mapRequest(getRequest(url));
- assertTrue(handler instanceof RenderPageRequestHandler);
+ assertThat(handler, instanceOf(RenderPageRequestHandler.class));
IRequestablePage page = ((RenderPageRequestHandler)handler).getPage();
checkPage(page, 15);
}
@@@ -162,10 -160,10 +170,10 @@@
@Test
public void decode4()
{
- Url url = Url.parse(PAGE_CLASS_NAME + "/i1/i2?15&a=b&b=c");
+ Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME + "/i1/i2?15&a=b&b=c");
IRequestHandler handler = encoder.mapRequest(getRequest(url));
- assertTrue(handler instanceof RenderPageRequestHandler);
+ assertThat(handler, instanceOf(RenderPageRequestHandler.class));
IRequestablePage page = ((RenderPageRequestHandler)handler).getPage();
checkPage(page, 15);
@@@ -181,10 -179,10 +189,10 @@@
@Test
public void decode5()
{
- Url url = Url.parse(PAGE_CLASS_NAME + "?15-ILinkListener-foo-bar");
+ Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME + "?15-ILinkListener-foo-bar");
IRequestHandler handler = encoder.mapRequest(getRequest(url));
- assertTrue(handler instanceof ListenerInterfaceRequestHandler);
+ assertThat(handler, instanceOf(ListenerInterfaceRequestHandler.class));
ListenerInterfaceRequestHandler h = (ListenerInterfaceRequestHandler)handler;
@@@ -202,10 -200,10 +210,10 @@@
@Test
public void decode6()
{
- Url url = Url.parse(PAGE_CLASS_NAME + "/i1/i2?15-ILinkListener-foo-bar&a=b&b=c");
+ Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME + "/i1/i2?15-ILinkListener-foo-bar&a=b&b=c");
IRequestHandler handler = encoder.mapRequest(getRequest(url));
- assertTrue(handler instanceof ListenerInterfaceRequestHandler);
+ assertThat(handler, instanceOf(ListenerInterfaceRequestHandler.class));
ListenerInterfaceRequestHandler h = (ListenerInterfaceRequestHandler)handler;
IRequestablePage page = h.getPage();
@@@ -226,10 -224,10 +234,10 @@@
@Test
public void decode7()
{
- Url url = Url.parse(PAGE_CLASS_NAME + "?15-ILinkListener.4-foo-bar");
+ Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME + "?15-ILinkListener.4-foo-bar");
IRequestHandler handler = encoder.mapRequest(getRequest(url));
- assertTrue(handler instanceof ListenerInterfaceRequestHandler);
+ assertThat(handler, instanceOf(ListenerInterfaceRequestHandler.class));
ListenerInterfaceRequestHandler h = (ListenerInterfaceRequestHandler)handler;
@@@ -405,10 -376,7 +413,7 @@@
IRequestHandler handler = new RenderPageRequestHandler(provider);
Url url = encoder.mapHandler(handler);
- // never allow bookmarkable render url for page that has not been created by bookmarkable
- // URL
-
- assertNull(url);
- assertEquals(Url.parse("MockPage/i1/i2?15&a=b&b=c"), url);
++ assertEquals(MOUNT_PATH + '/' + PAGE_CLASS_NAME + "/i1/i2?15&a=b&b=c", url.toString());
}
/**
@@@ -548,10 -497,10 +555,10 @@@
@Test
public void decodeInnerClass()
{
- Url url = Url.parse("PackageMapperTest$OuterPage$InnerPage");
+ Url url = Url.parse(MOUNT_PATH + '/' + "PackageMapperTest$OuterPage$InnerPage");
IRequestHandler handler = innerClassEncoder.mapRequest(getRequest(url));
- assertTrue(handler instanceof RenderPageRequestHandler);
+ assertThat(handler, instanceOf(RenderPageRequestHandler.class));
IRequestablePage page = ((RenderPageRequestHandler)handler).getPage();
assertEquals("InnerPage", page.getClass().getSimpleName());
assertEquals(0, page.getPageParameters().getIndexedCount());
@@@ -583,10 -532,10 +590,10 @@@
@Test
public void decodeAlias()
{
- Url url = Url.parse(ALIAS + "?15");
+ Url url = Url.parse(MOUNT_PATH + '/' + ALIAS + "?15");
IRequestHandler handler = aliasEncoder.mapRequest(getRequest(url));
- assertTrue(handler instanceof RenderPageRequestHandler);
+ assertThat(handler, instanceOf(RenderPageRequestHandler.class));
IRequestablePage page = ((RenderPageRequestHandler)handler).getPage();
checkPage(page, 15);
assertEquals(PAGE_CLASS_NAME, page.getClass().getSimpleName());