You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pe...@apache.org on 2013/01/09 20:45:20 UTC

git commit: WICKET-4932: testing recreateMountedPagesAfterExpiry at AbstractBookmarkableMapper

Updated Branches:
  refs/heads/sandbox/bookmarkable-callback-url [created] 7e5b2e317


WICKET-4932: testing recreateMountedPagesAfterExpiry at AbstractBookmarkableMapper


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

Branch: refs/heads/sandbox/bookmarkable-callback-url
Commit: 7e5b2e31789b0bdb51570d9531a1a109de454f8f
Parents: 66ebc4b
Author: Pedro Santos <pe...@apache.com>
Authored: Wed Jan 9 17:43:30 2013 -0200
Committer: Pedro Santos <pe...@apache.com>
Committed: Wed Jan 9 17:43:30 2013 -0200

----------------------------------------------------------------------
 ...ookmarkableListenerInterfaceRequestHandler.java |    8 ++
 .../request/mapper/AbstractBookmarkableMapper.java |   71 +++++++++---
 .../wicket/request/mapper/BookmarkableMapper.java  |   15 +++-
 .../wicket/request/mapper/MountedMapper.java       |   64 +++-------
 .../wicket/request/mapper/PackageMapper.java       |   30 ++++-
 .../mapper/AbstractBookmarkableMapperTest.java     |   92 +++++++++++++++
 .../wicket/request/mapper/AbstractMapperTest.java  |    4 +
 .../request/mapper/BookmarkableMapperTest.java     |   14 +-
 .../wicket/request/mapper/MountedMapperTest.java   |   44 +++-----
 .../wicket/request/mapper/PackageMapperTest.java   |   18 ++--
 .../wicket/request/mapper/TestMapperContext.java   |    7 +-
 11 files changed, 253 insertions(+), 114 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/main/java/org/apache/wicket/request/handler/BookmarkableListenerInterfaceRequestHandler.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/handler/BookmarkableListenerInterfaceRequestHandler.java b/wicket-core/src/main/java/org/apache/wicket/request/handler/BookmarkableListenerInterfaceRequestHandler.java
index 1767a88..651bc66 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/handler/BookmarkableListenerInterfaceRequestHandler.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/handler/BookmarkableListenerInterfaceRequestHandler.java
@@ -171,4 +171,12 @@ public class BookmarkableListenerInterfaceRequestHandler
 	{
 		return pageComponentProvider.getRenderCount();
 	}
+
+	public static BookmarkableListenerInterfaceRequestHandler wrap(
+		ListenerInterfaceRequestHandler handler)
+	{
+		return new BookmarkableListenerInterfaceRequestHandler(new PageAndComponentProvider(
+			handler.getPage(), handler.getComponent()), handler.getListenerInterface(),
+			handler.getBehaviorIndex());
+	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java b/wicket-core/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java
index 9042158..7ae520d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java
@@ -17,6 +17,8 @@
 package org.apache.wicket.request.mapper;
 
 import org.apache.wicket.RequestListenerInterface;
+import org.apache.wicket.protocol.http.PageExpiredException;
+import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.IRequestHandlerDelegate;
 import org.apache.wicket.request.IRequestMapper;
@@ -35,6 +37,7 @@ import org.apache.wicket.request.mapper.info.ComponentInfo;
 import org.apache.wicket.request.mapper.info.PageComponentInfo;
 import org.apache.wicket.request.mapper.info.PageInfo;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.settings.IPageSettings;
 import org.apache.wicket.util.lang.Args;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -47,6 +50,7 @@ import org.slf4j.LoggerFactory;
 public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
 {
 	private static Logger logger = LoggerFactory.getLogger(AbstractBookmarkableMapper.class);
+	private IPageSettings settings;
 
 	/**
 	 * Represents information stored in URL.
@@ -138,6 +142,17 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
 	 */
 	public AbstractBookmarkableMapper()
 	{
+		this(WebApplication.get().getPageSettings());
+	}
+
+	/**
+	 * Construct.
+	 * 
+	 * @param settings
+	 */
+	public AbstractBookmarkableMapper(IPageSettings settings)
+	{
+		this.settings = settings;
 	}
 
 	/**
@@ -207,7 +222,15 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
 		PageProvider provider = new PageProvider(pageInfo.getPageId(), pageClass, pageParameters,
 			renderCount);
 		provider.setPageSource(getContext());
-		return new RenderPageRequestHandler(provider);
+		if (provider.isNewPageInstance() && !settings.getRecreateMountedPagesAfterExpiry())
+		{
+			throw new PageExpiredException(String.format("Bookmarkable page id '%d' has expired.",
+				pageInfo.getPageId()));
+		}
+		else
+		{
+			return new RenderPageRequestHandler(provider);
+		}
 	}
 
 	/**
@@ -302,6 +325,7 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
 		return null;
 	}
 
+// TODO remove since we are duplicating an API here
 	protected boolean checkPageInstance(IRequestablePage page)
 	{
 		return page != null && checkPageClass(page.getClass());
@@ -382,30 +406,43 @@ public abstract class AbstractBookmarkableMapper extends AbstractComponentMapper
 		{
 			// listener interface URL with page class information
 			BookmarkableListenerInterfaceRequestHandler handler = (BookmarkableListenerInterfaceRequestHandler)requestHandler;
-			Class<? extends IRequestablePage> pageClass = handler.getPageClass();
-
-			if (!checkPageClass(pageClass))
+			if (checkPageClass(handler.getPageClass()))
 			{
-				return null;
+				return mapBookmarkableHandler(handler);
 			}
-
-			Integer renderCount = null;
-			if (handler.getListenerInterface().isIncludeRenderCount())
+		}
+		else if (requestHandler instanceof ListenerInterfaceRequestHandler &&
+			settings.getRecreateMountedPagesAfterExpiry())
+		{
+			ListenerInterfaceRequestHandler handler = (ListenerInterfaceRequestHandler)requestHandler;
+			if (checkPageClass(handler.getPageClass()))
 			{
-				renderCount = handler.getRenderCount();
+				return mapBookmarkableHandler(BookmarkableListenerInterfaceRequestHandler.wrap(handler));
 			}
+		}
+		return null;
+	}
 
-			PageInfo pageInfo = getPageInfo(handler);
-			ComponentInfo componentInfo = new ComponentInfo(renderCount,
-				requestListenerInterfaceToString(handler.getListenerInterface()),
-				handler.getComponentPath(), handler.getBehaviorIndex());
+	protected Url mapBookmarkableHandler(BookmarkableListenerInterfaceRequestHandler handler)
+	{
+		String componentPath = handler.getComponentPath();
+		RequestListenerInterface listenerInterface = handler.getListenerInterface();
 
-			UrlInfo urlInfo = new UrlInfo(new PageComponentInfo(pageInfo, componentInfo),
-				pageClass, handler.getPageParameters());
-			return buildUrl(urlInfo);
+		Integer renderCount = null;
+		if (listenerInterface.isIncludeRenderCount())
+		{
+			renderCount = handler.getRenderCount();
 		}
 
-		return null;
+		PageInfo pageInfo = getPageInfo(handler);
+		ComponentInfo componentInfo = new ComponentInfo(renderCount,
+			requestListenerInterfaceToString(listenerInterface), componentPath,
+			handler.getBehaviorIndex());
+		PageComponentInfo pageComponentInfo = new PageComponentInfo(pageInfo, componentInfo);
+		PageParameters parameters = new PageParameters(handler.getPageParameters());
+		UrlInfo urlInfo = new UrlInfo(pageComponentInfo, handler.getPageClass(),
+			parameters.mergeWith(handler.getPageParameters()));
+		return buildUrl(urlInfo);
 	}
 
 	protected final PageInfo getPageInfo(IPageRequestHandler handler)

http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/main/java/org/apache/wicket/request/mapper/BookmarkableMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/mapper/BookmarkableMapper.java b/wicket-core/src/main/java/org/apache/wicket/request/mapper/BookmarkableMapper.java
index 759f389..4ae4bf1 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/mapper/BookmarkableMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/mapper/BookmarkableMapper.java
@@ -24,6 +24,7 @@ import org.apache.wicket.request.mapper.info.PageComponentInfo;
 import org.apache.wicket.request.mapper.parameter.IPageParametersEncoder;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
+import org.apache.wicket.settings.IPageSettings;
 import org.apache.wicket.util.lang.Args;
 
 /**
@@ -53,9 +54,11 @@ public class BookmarkableMapper extends AbstractBookmarkableMapper
 	 * Construct.
 	 * 
 	 * @param pageParametersEncoder
+	 * @param settings
 	 */
-	public BookmarkableMapper(IPageParametersEncoder pageParametersEncoder)
+	public BookmarkableMapper(IPageParametersEncoder pageParametersEncoder, IPageSettings settings)
 	{
+		super(settings);
 		Args.notNull(pageParametersEncoder, "pageParametersEncoder");
 
 		this.pageParametersEncoder = pageParametersEncoder;
@@ -63,6 +66,16 @@ public class BookmarkableMapper extends AbstractBookmarkableMapper
 
 	/**
 	 * Construct.
+	 * 
+	 * @param pageParametersEncoder
+	 */
+	public BookmarkableMapper(IPageParametersEncoder pageParametersEncoder)
+	{
+		this(pageParametersEncoder, Application.get().getPageSettings());
+	}
+
+	/**
+	 * Construct.
 	 */
 	public BookmarkableMapper()
 	{

http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/main/java/org/apache/wicket/request/mapper/MountedMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/mapper/MountedMapper.java b/wicket-core/src/main/java/org/apache/wicket/request/mapper/MountedMapper.java
index 3d40023..6ff64f8 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/mapper/MountedMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/mapper/MountedMapper.java
@@ -20,18 +20,14 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.wicket.Application;
-import org.apache.wicket.RequestListenerInterface;
-import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.Request;
 import org.apache.wicket.request.Url;
 import org.apache.wicket.request.component.IRequestablePage;
-import org.apache.wicket.request.handler.ListenerInterfaceRequestHandler;
-import org.apache.wicket.request.mapper.info.ComponentInfo;
 import org.apache.wicket.request.mapper.info.PageComponentInfo;
-import org.apache.wicket.request.mapper.info.PageInfo;
 import org.apache.wicket.request.mapper.parameter.IPageParametersEncoder;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
+import org.apache.wicket.settings.IPageSettings;
 import org.apache.wicket.util.ClassProvider;
 import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.string.Strings;
@@ -186,6 +182,24 @@ public class MountedMapper extends AbstractBookmarkableMapper
 		ClassProvider<? extends IRequestablePage> pageClassProvider,
 		IPageParametersEncoder pageParametersEncoder)
 	{
+		this(mountPath, pageClassProvider, pageParametersEncoder, Application.get()
+			.getPageSettings());
+
+	}
+
+	/**
+	 * Construct.
+	 * 
+	 * @param mountPath
+	 * @param pageClassProvider
+	 * @param pageParametersEncoder
+	 * @param settings
+	 */
+	public MountedMapper(String mountPath,
+		ClassProvider<? extends IRequestablePage> pageClassProvider,
+		IPageParametersEncoder pageParametersEncoder, IPageSettings settings)
+	{
+		super(settings);
 		Args.notEmpty(mountPath, "mountPath");
 		Args.notNull(pageClassProvider, "pageClassProvider");
 		Args.notNull(pageParametersEncoder, "pageParametersEncoder");
@@ -360,46 +374,6 @@ public class MountedMapper extends AbstractBookmarkableMapper
 		return new PageParameters();
 	}
 
-	@Override
-	public Url mapHandler(IRequestHandler requestHandler)
-	{
-		Url url = super.mapHandler(requestHandler);
-
-		if (url == null && requestHandler instanceof ListenerInterfaceRequestHandler &&
-			getRecreateMountedPagesAfterExpiry())
-		{
-			ListenerInterfaceRequestHandler handler = (ListenerInterfaceRequestHandler)requestHandler;
-			IRequestablePage page = handler.getPage();
-			if (checkPageInstance(page))
-			{
-				String componentPath = handler.getComponentPath();
-				RequestListenerInterface listenerInterface = handler.getListenerInterface();
-
-				Integer renderCount = null;
-				if (listenerInterface.isIncludeRenderCount())
-				{
-					renderCount = page.getRenderCount();
-				}
-
-				PageInfo pageInfo = getPageInfo(handler);
-				ComponentInfo componentInfo = new ComponentInfo(renderCount,
-					requestListenerInterfaceToString(listenerInterface), componentPath,
-					handler.getBehaviorIndex());
-				PageComponentInfo pageComponentInfo = new PageComponentInfo(pageInfo, componentInfo);
-				PageParameters parameters = new PageParameters(page.getPageParameters());
-				UrlInfo urlInfo = new UrlInfo(pageComponentInfo, page.getClass(),
-					parameters.mergeWith(handler.getPageParameters()));
-				url = buildUrl(urlInfo);
-			}
-		}
-
-		return url;
-	}
-
-	boolean getRecreateMountedPagesAfterExpiry()
-	{
-		return Application.get().getPageSettings().getRecreateMountedPagesAfterExpiry();
-	}
 
 	/**
 	 * @see org.apache.wicket.request.mapper.AbstractBookmarkableMapper#buildUrl(org.apache.wicket.request.mapper.AbstractBookmarkableMapper.UrlInfo)

http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/main/java/org/apache/wicket/request/mapper/PackageMapper.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/mapper/PackageMapper.java b/wicket-core/src/main/java/org/apache/wicket/request/mapper/PackageMapper.java
index bfacbcb..5fed6d5 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/mapper/PackageMapper.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/mapper/PackageMapper.java
@@ -18,6 +18,7 @@ package org.apache.wicket.request.mapper;
 
 import java.lang.reflect.Modifier;
 
+import org.apache.wicket.Application;
 import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.request.Request;
 import org.apache.wicket.request.Url;
@@ -26,6 +27,7 @@ import org.apache.wicket.request.mapper.info.PageComponentInfo;
 import org.apache.wicket.request.mapper.parameter.IPageParametersEncoder;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
+import org.apache.wicket.settings.IPageSettings;
 import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.lang.PackageName;
 
@@ -88,6 +90,20 @@ public class PackageMapper extends AbstractBookmarkableMapper
 	public PackageMapper(final PackageName packageName,
 		final IPageParametersEncoder pageParametersEncoder)
 	{
+		this(packageName, pageParametersEncoder, Application.get().getPageSettings());
+	}
+
+	/**
+	 * Construct.
+	 * 
+	 * @param packageName
+	 * @param pageParametersEncoder
+	 * @param settigns
+	 */
+	public PackageMapper(final PackageName packageName,
+		final IPageParametersEncoder pageParametersEncoder, IPageSettings settigns)
+	{
+		super(settigns);
 		Args.notNull(packageName, "packageName");
 		Args.notNull(pageParametersEncoder, "pageParametersEncoder");
 
@@ -137,7 +153,7 @@ public class PackageMapper extends AbstractBookmarkableMapper
 
 			// load the page class
 			String className = url.getSegments().get(0);
-			
+
 			if (isValidClassName(className) == false)
 			{
 				return null;
@@ -161,13 +177,13 @@ public class PackageMapper extends AbstractBookmarkableMapper
 	}
 
 	/**
-	 * filter out invalid class names for package mapper. getting trash for class names
-	 * can e.g. happen when the home page is in the same package that is mounted by package mapper
-	 * but the request was previously mapped by e.g. {@link HomePageMapper}. We then get some 
-	 * strange url like '/example/..' and wicket tries to look up class name '..'.
+	 * filter out invalid class names for package mapper. getting trash for class names can e.g.
+	 * happen when the home page is in the same package that is mounted by package mapper but the
+	 * request was previously mapped by e.g. {@link HomePageMapper}. We then get some strange url
+	 * like '/example/..' and wicket tries to look up class name '..'.
 	 * <p/>
-	 *  @see <a href="https://issues.apache.org/jira/browse/WICKET-4303">WICKET-4303</a>
-	 *  <p/>
+	 * 
+	 * @see <a href="https://issues.apache.org/jira/browse/WICKET-4303">WICKET-4303</a> <p/>
 	 */
 	private boolean isValidClassName(String className)
 	{

http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapperTest.java
new file mode 100644
index 0000000..c2de418
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapperTest.java
@@ -0,0 +1,92 @@
+package org.apache.wicket.request.mapper;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.wicket.MockPage;
+import org.apache.wicket.WicketTestCase;
+import org.apache.wicket.protocol.http.PageExpiredException;
+import org.apache.wicket.request.IRequestHandler;
+import org.apache.wicket.request.Request;
+import org.apache.wicket.request.Url;
+import org.apache.wicket.request.component.IRequestablePage;
+import org.apache.wicket.request.mapper.info.PageInfo;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * @author pedrosans
+ */
+public class AbstractBookmarkableMapperTest extends WicketTestCase
+{
+
+	private static final int NOT_RENDERED_COUNT = 2;
+	private static final int EXPIRED_ID = 2;
+
+
+	/**
+	 * <a href="https://issues.apache.org/jira/browse/WICKET-4932">WICKET-4932</a>
+	 */
+	@Test(expected = PageExpiredException.class)
+	public void itFailsToProcessAnExpiredPageIfShouldNotRecreateMountedPagesAfterExpiry()
+	{
+		tester.getApplication().getPageSettings().setRecreateMountedPagesAfterExpiry(false);
+		AbstractBookmarkableMapperStub mapper = new AbstractBookmarkableMapperStub();
+		mapper.processHybrid(new PageInfo(EXPIRED_ID), MockPage.class, null, NOT_RENDERED_COUNT);
+		Assert.fail("it shouldn't process expired pages if the app was flagged to not recreated mounted pages after expiry");
+	}
+
+	/** */
+	public class AbstractBookmarkableMapperStub extends AbstractBookmarkableMapper
+	{
+
+		@Override
+		protected UrlInfo parseRequest(Request request)
+		{
+			return null;
+		}
+
+		@Override
+		protected Url buildUrl(UrlInfo info)
+		{
+			return null;
+		}
+
+		@Override
+		protected boolean pageMustHaveBeenCreatedBookmarkable()
+		{
+			return false;
+		}
+
+		@Override
+		public int getCompatibilityScore(Request request)
+		{
+			return 0;
+		}
+
+		@Override
+		protected IRequestHandler processHybrid(PageInfo pageInfo,
+			Class<? extends IRequestablePage> pageClass, PageParameters pageParameters,
+			Integer renderCount)
+		{
+			return super.processHybrid(pageInfo, pageClass, pageParameters, renderCount);
+		}
+
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractMapperTest.java
index 57455c4..bf40394 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractMapperTest.java
@@ -24,6 +24,8 @@ import org.apache.wicket.markup.html.link.ILinkListener;
 import org.apache.wicket.request.Request;
 import org.apache.wicket.request.Url;
 import org.apache.wicket.request.component.IRequestablePage;
+import org.apache.wicket.settings.IPageSettings;
+import org.apache.wicket.settings.def.PageSettings;
 import org.junit.Assert;
 import org.junit.Before;
 
@@ -37,9 +39,11 @@ public abstract class AbstractMapperTest extends Assert
 	 */
 	public AbstractMapperTest()
 	{
+		settings.setRecreateMountedPagesAfterExpiry(true);
 	}
 
 	protected TestMapperContext context = new TestMapperContext();
+	protected IPageSettings settings = new PageSettings();
 
 	/**
 	 * @throws Exception

http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java
index e6f3cc1..628ae04 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java
@@ -31,6 +31,7 @@ import org.apache.wicket.request.handler.PageAndComponentProvider;
 import org.apache.wicket.request.handler.PageProvider;
 import org.apache.wicket.request.handler.RenderPageRequestHandler;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
 import org.junit.Test;
 
 /**
@@ -39,7 +40,8 @@ import org.junit.Test;
 public class BookmarkableMapperTest extends AbstractMapperTest
 {
 
-	private final BookmarkableMapper encoder = new BookmarkableMapper()
+	private final BookmarkableMapper encoder = new BookmarkableMapper(new PageParametersEncoder(),
+		settings)
 	{
 		@Override
 		protected IMapperContext getContext()
@@ -112,14 +114,12 @@ public class BookmarkableMapperTest extends AbstractMapperTest
 		IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
 		assertTrue(handler instanceof RenderPageRequestHandler);
-		context.setCurrentPageParameters(((RenderPageRequestHandler)handler).getPageParameters());
-		IRequestablePage page = ((RenderPageRequestHandler)handler).getPage();
-		checkPage(page, 15);
+		PageParameters pageParameters = ((RenderPageRequestHandler)handler).getPageParameters();
+		checkPage(((RenderPageRequestHandler)handler).getPage(), 15);
 
-		PageParameters p = page.getPageParameters();
-		assertEquals(2, p.getIndexedCount());
+		assertEquals(2, pageParameters.getIndexedCount());
 
-		assertEquals(2, p.getNamedKeys().size());
+		assertEquals(2, pageParameters.getNamedKeys().size());
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/test/java/org/apache/wicket/request/mapper/MountedMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/mapper/MountedMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/request/mapper/MountedMapperTest.java
index ed9eddb..6c67134 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/mapper/MountedMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/mapper/MountedMapperTest.java
@@ -33,6 +33,8 @@ import org.apache.wicket.request.handler.PageProvider;
 import org.apache.wicket.request.handler.RenderPageRequestHandler;
 import org.apache.wicket.request.http.WebRequest;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
+import org.apache.wicket.util.ClassProvider;
 import org.junit.Test;
 
 /**
@@ -48,7 +50,8 @@ public class MountedMapperTest extends AbstractMapperTest
 	{
 	}
 
-	private final MountedMapper encoder = new MountedMapper("/some/mount/path", MockPage.class)
+	private final MountedMapper encoder = new MountedMapper("/some/mount/path",
+		ClassProvider.of(MockPage.class), new PageParametersEncoder(), settings)
 	{
 		@Override
 		protected IMapperContext getContext()
@@ -56,15 +59,11 @@ public class MountedMapperTest extends AbstractMapperTest
 			return context;
 		}
 
-		@Override
-		boolean getRecreateMountedPagesAfterExpiry()
-		{
-			return true;
-		}
 	};
 
 	private final MountedMapper placeholderEncoder = new MountedMapper(
-		"/some/${param1}/path/${param2}", MockPage.class)
+		"/some/${param1}/path/${param2}", ClassProvider.of(MockPage.class),
+		new PageParametersEncoder(), settings)
 	{
 		@Override
 		protected IMapperContext getContext()
@@ -72,27 +71,17 @@ public class MountedMapperTest extends AbstractMapperTest
 			return context;
 		}
 
-		@Override
-		boolean getRecreateMountedPagesAfterExpiry()
-		{
-			return true;
-		}
 	};
 
 	private final MountedMapper optionPlaceholderEncoder = new MountedMapper(
-		"/some/#{param1}/path/${param2}/#{param3}", MockPage.class)
+		"/some/#{param1}/path/${param2}/#{param3}", ClassProvider.of(MockPage.class),
+		new PageParametersEncoder(), settings)
 	{
 		@Override
 		protected IMapperContext getContext()
 		{
 			return context;
 		}
-
-		@Override
-		boolean getRecreateMountedPagesAfterExpiry()
-		{
-			return true;
-		}
 	};
 
 	/**
@@ -156,14 +145,13 @@ public class MountedMapperTest extends AbstractMapperTest
 		IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
 		assertTrue(handler instanceof RenderPageRequestHandler);
-		context.setCurrentPageParameters(((RenderPageRequestHandler)handler).getPageParameters());
-		IRequestablePage page = ((RenderPageRequestHandler)handler).getPage();
-		checkPage(page, 15);
+		PageParameters pageParameters = ((RenderPageRequestHandler)handler).getPageParameters();
 
-		PageParameters p = page.getPageParameters();
-		assertEquals(2, p.getIndexedCount());
+		checkPage(((RenderPageRequestHandler)handler).getPage(), 15);
 
-		assertEquals(2, p.getNamedKeys().size());
+		assertEquals(2, pageParameters.getIndexedCount());
+
+		assertEquals(2, pageParameters.getNamedKeys().size());
 	}
 
 	/**
@@ -533,7 +521,8 @@ public class MountedMapperTest extends AbstractMapperTest
 	@Test(expected = IllegalArgumentException.class)
 	public void construct1()
 	{
-		IRequestMapper e = new MountedMapper("", MockPage.class);
+		IRequestMapper e = new MountedMapper("", ClassProvider.of(MockPage.class),
+			new PageParametersEncoder(), settings);
 	}
 
 	/**
@@ -542,7 +531,8 @@ public class MountedMapperTest extends AbstractMapperTest
 	@Test
 	public void construct2()
 	{
-		IRequestMapper homePageMapper = new MountedMapper("/", MockPage.class);
+		IRequestMapper homePageMapper = new MountedMapper("/", ClassProvider.of(MockPage.class),
+			new PageParametersEncoder(), settings);
 		assertNotNull(homePageMapper);
 	}
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/test/java/org/apache/wicket/request/mapper/PackageMapperTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/mapper/PackageMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/request/mapper/PackageMapperTest.java
index 23a854b..fa8e6c8 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/mapper/PackageMapperTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/mapper/PackageMapperTest.java
@@ -32,6 +32,7 @@ import org.apache.wicket.request.handler.PageProvider;
 import org.apache.wicket.request.handler.RenderPageRequestHandler;
 import org.apache.wicket.request.mapper.PackageMapperTest.OuterPage.InnerPage;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
 import org.apache.wicket.util.lang.PackageName;
 import org.junit.Test;
 
@@ -43,7 +44,8 @@ public class PackageMapperTest extends AbstractMapperTest
 
 	private static final String ALIAS = "alias";
 
-	private final PackageMapper encoder = new PackageMapper(PackageName.forClass(MockPage.class))
+	private final PackageMapper encoder = new PackageMapper(PackageName.forClass(MockPage.class),
+		new PageParametersEncoder(), settings)
 	{
 		@Override
 		protected IMapperContext getContext()
@@ -55,7 +57,7 @@ public class PackageMapperTest extends AbstractMapperTest
 	private static final String PAGE_CLASS_NAME = MockPage.class.getSimpleName();
 
 	private final PackageMapper aliasEncoder = new PackageMapper(
-		PackageName.forClass(MockPage.class))
+		PackageName.forClass(MockPage.class), new PageParametersEncoder(), settings)
 	{
 		@Override
 		protected IMapperContext getContext()
@@ -157,14 +159,12 @@ public class PackageMapperTest extends AbstractMapperTest
 
 		assertTrue(handler instanceof RenderPageRequestHandler);
 
-		context.setCurrentPageParameters(((RenderPageRequestHandler)handler).getPageParameters());
-		IRequestablePage page = ((RenderPageRequestHandler)handler).getPage();
-		checkPage(page, 15);
+		PageParameters pageParameters = ((RenderPageRequestHandler)handler).getPageParameters();
+		checkPage(((RenderPageRequestHandler)handler).getPage(), 15);
 
-		PageParameters p = page.getPageParameters();
-		assertEquals(2, p.getIndexedCount());
+		assertEquals(2, pageParameters.getIndexedCount());
 
-		assertEquals(2, p.getNamedKeys().size());
+		assertEquals(2, pageParameters.getNamedKeys().size());
 	}
 
 	/**
@@ -454,7 +454,7 @@ public class PackageMapperTest extends AbstractMapperTest
 
 
 	private final PackageMapper innerClassEncoder = new PackageMapper(
-		PackageName.forClass(OuterPage.class))
+		PackageName.forClass(OuterPage.class), new PageParametersEncoder(), settings)
 	{
 		@Override
 		protected IMapperContext getContext()

http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/test/java/org/apache/wicket/request/mapper/TestMapperContext.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/mapper/TestMapperContext.java b/wicket-core/src/test/java/org/apache/wicket/request/mapper/TestMapperContext.java
index af3d4c1..9ad9b59 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/mapper/TestMapperContext.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/mapper/TestMapperContext.java
@@ -216,10 +216,15 @@ public class TestMapperContext implements IMapperContext
 
 	public TestMapperContext setCurrentPageParameters(PageParameters parameters)
 	{
-		this.currentPageParameters = parameters;
+		currentPageParameters = parameters;
 		return this;
 	}
 
+	public void setCreateMockPageIfInstanceNotFound(boolean createMockPageIfInstanceNotFound)
+	{
+		this.createMockPageIfInstanceNotFound = createMockPageIfInstanceNotFound;
+	}
+
 	/**
 	 * 
 	 * Adapts {@link PageProvider} to this {@link IMapperContext}


Re: git commit: WICKET-4932: testing recreateMountedPagesAfterExpiry at AbstractBookmarkableMapper

Posted by Martin Grigorov <mg...@apache.org>.
Hi,

See my comments inline.


On Wed, Jan 9, 2013 at 9:45 PM, <pe...@apache.org> wrote:

> Updated Branches:
>   refs/heads/sandbox/bookmarkable-callback-url [created] 7e5b2e317
>
>
> WICKET-4932: testing recreateMountedPagesAfterExpiry at
> AbstractBookmarkableMapper
>
>
> Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
> Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/7e5b2e31
> Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/7e5b2e31
> Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/7e5b2e31
>
> Branch: refs/heads/sandbox/bookmarkable-callback-url
> Commit: 7e5b2e31789b0bdb51570d9531a1a109de454f8f
> Parents: 66ebc4b
> Author: Pedro Santos <pe...@apache.com>
> Authored: Wed Jan 9 17:43:30 2013 -0200
> Committer: Pedro Santos <pe...@apache.com>
> Committed: Wed Jan 9 17:43:30 2013 -0200
>
> ----------------------------------------------------------------------
>  ...ookmarkableListenerInterfaceRequestHandler.java |    8 ++
>  .../request/mapper/AbstractBookmarkableMapper.java |   71 +++++++++---
>  .../wicket/request/mapper/BookmarkableMapper.java  |   15 +++-
>  .../wicket/request/mapper/MountedMapper.java       |   64 +++-------
>  .../wicket/request/mapper/PackageMapper.java       |   30 ++++-
>  .../mapper/AbstractBookmarkableMapperTest.java     |   92 +++++++++++++++
>  .../wicket/request/mapper/AbstractMapperTest.java  |    4 +
>  .../request/mapper/BookmarkableMapperTest.java     |   14 +-
>  .../wicket/request/mapper/MountedMapperTest.java   |   44 +++-----
>  .../wicket/request/mapper/PackageMapperTest.java   |   18 ++--
>  .../wicket/request/mapper/TestMapperContext.java   |    7 +-
>  11 files changed, 253 insertions(+), 114 deletions(-)
> ----------------------------------------------------------------------
>
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/main/java/org/apache/wicket/request/handler/BookmarkableListenerInterfaceRequestHandler.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/request/handler/BookmarkableListenerInterfaceRequestHandler.java
> b/wicket-core/src/main/java/org/apache/wicket/request/handler/BookmarkableListenerInterfaceRequestHandler.java
> index 1767a88..651bc66 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/request/handler/BookmarkableListenerInterfaceRequestHandler.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/request/handler/BookmarkableListenerInterfaceRequestHandler.java
> @@ -171,4 +171,12 @@ public class
> BookmarkableListenerInterfaceRequestHandler
>         {
>                 return pageComponentProvider.getRenderCount();
>         }
> +
> +       public static BookmarkableListenerInterfaceRequestHandler wrap(
> +               ListenerInterfaceRequestHandler handler)
> +       {
> +               return new BookmarkableListenerInterfaceRequestHandler(new
> PageAndComponentProvider(
> +                       handler.getPage(), handler.getComponent()),
> handler.getListenerInterface(),
> +                       handler.getBehaviorIndex());
> +       }
>  }
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java
> b/wicket-core/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java
> index 9042158..7ae520d 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapper.java
> @@ -17,6 +17,8 @@
>  package org.apache.wicket.request.mapper;
>
>  import org.apache.wicket.RequestListenerInterface;
> +import org.apache.wicket.protocol.http.PageExpiredException;
> +import org.apache.wicket.protocol.http.WebApplication;
>  import org.apache.wicket.request.IRequestHandler;
>  import org.apache.wicket.request.IRequestHandlerDelegate;
>  import org.apache.wicket.request.IRequestMapper;
> @@ -35,6 +37,7 @@ import
> org.apache.wicket.request.mapper.info.ComponentInfo;
>  import org.apache.wicket.request.mapper.info.PageComponentInfo;
>  import org.apache.wicket.request.mapper.info.PageInfo;
>  import org.apache.wicket.request.mapper.parameter.PageParameters;
> +import org.apache.wicket.settings.IPageSettings;
>  import org.apache.wicket.util.lang.Args;
>  import org.slf4j.Logger;
>  import org.slf4j.LoggerFactory;
> @@ -47,6 +50,7 @@ import org.slf4j.LoggerFactory;
>  public abstract class AbstractBookmarkableMapper extends
> AbstractComponentMapper
>  {
>         private static Logger logger =
> LoggerFactory.getLogger(AbstractBookmarkableMapper.class);
> +       private IPageSettings settings;
>

I'd make it 'final'


>
>         /**
>          * Represents information stored in URL.
> @@ -138,6 +142,17 @@ public abstract class AbstractBookmarkableMapper
> extends AbstractComponentMapper
>          */
>         public AbstractBookmarkableMapper()
>         {
> +               this(WebApplication.get().getPageSettings());
>

Application.class is enough to get these settings.


> +       }
> +
> +       /**
> +        * Construct.
> +        *
> +        * @param settings
> +        */
> +       public AbstractBookmarkableMapper(IPageSettings settings)
> +       {
> +               this.settings = settings;
>         }
>
>         /**
> @@ -207,7 +222,15 @@ public abstract class AbstractBookmarkableMapper
> extends AbstractComponentMapper
>                 PageProvider provider = new
> PageProvider(pageInfo.getPageId(), pageClass, pageParameters,
>                         renderCount);
>                 provider.setPageSource(getContext());
> -               return new RenderPageRequestHandler(provider);
> +               if (provider.isNewPageInstance() &&
> !settings.getRecreateMountedPagesAfterExpiry())
> +               {
> +                       throw new
> PageExpiredException(String.format("Bookmarkable page id '%d' has expired.",
>

"Page with id '%s' has expired" ?


> +                               pageInfo.getPageId()));
> +               }
> +               else
> +               {
> +                       return new RenderPageRequestHandler(provider);
> +               }
>         }
>
>         /**
> @@ -302,6 +325,7 @@ public abstract class AbstractBookmarkableMapper
> extends AbstractComponentMapper
>                 return null;
>         }
>
> +// TODO remove since we are duplicating an API here
>         protected boolean checkPageInstance(IRequestablePage page)
>         {
>                 return page != null && checkPageClass(page.getClass());
> @@ -382,30 +406,43 @@ public abstract class AbstractBookmarkableMapper
> extends AbstractComponentMapper
>                 {
>                         // listener interface URL with page class
> information
>                         BookmarkableListenerInterfaceRequestHandler
> handler = (BookmarkableListenerInterfaceRequestHandler)requestHandler;
> -                       Class<? extends IRequestablePage> pageClass =
> handler.getPageClass();
> -
> -                       if (!checkPageClass(pageClass))
> +                       if (checkPageClass(handler.getPageClass()))
>                         {
> -                               return null;
> +                               return mapBookmarkableHandler(handler);
>                         }
> -
> -                       Integer renderCount = null;
> -                       if
> (handler.getListenerInterface().isIncludeRenderCount())
> +               }
> +               else if (requestHandler instanceof
> ListenerInterfaceRequestHandler &&
> +                       settings.getRecreateMountedPagesAfterExpiry())
> +               {
> +                       ListenerInterfaceRequestHandler handler =
> (ListenerInterfaceRequestHandler)requestHandler;
> +                       if (checkPageClass(handler.getPageClass()))
>                         {
> -                               renderCount = handler.getRenderCount();
> +                               return
> mapBookmarkableHandler(BookmarkableListenerInterfaceRequestHandler.wrap(handler));
>                         }
> +               }
> +               return null;
> +       }
>
> -                       PageInfo pageInfo = getPageInfo(handler);
> -                       ComponentInfo componentInfo = new
> ComponentInfo(renderCount,
> -
> requestListenerInterfaceToString(handler.getListenerInterface()),
> -                               handler.getComponentPath(),
> handler.getBehaviorIndex());
> +       protected Url
> mapBookmarkableHandler(BookmarkableListenerInterfaceRequestHandler handler)
> +       {
> +               String componentPath = handler.getComponentPath();
> +               RequestListenerInterface listenerInterface =
> handler.getListenerInterface();
>
> -                       UrlInfo urlInfo = new UrlInfo(new
> PageComponentInfo(pageInfo, componentInfo),
> -                               pageClass, handler.getPageParameters());
> -                       return buildUrl(urlInfo);
> +               Integer renderCount = null;
> +               if (listenerInterface.isIncludeRenderCount())
> +               {
> +                       renderCount = handler.getRenderCount();
>                 }
>
> -               return null;
> +               PageInfo pageInfo = getPageInfo(handler);
> +               ComponentInfo componentInfo = new
> ComponentInfo(renderCount,
> +
> requestListenerInterfaceToString(listenerInterface), componentPath,
> +                       handler.getBehaviorIndex());
> +               PageComponentInfo pageComponentInfo = new
> PageComponentInfo(pageInfo, componentInfo);
> +               PageParameters parameters = new
> PageParameters(handler.getPageParameters());
> +               UrlInfo urlInfo = new UrlInfo(pageComponentInfo,
> handler.getPageClass(),
> +                       parameters.mergeWith(handler.getPageParameters()));
> +               return buildUrl(urlInfo);
>         }
>
>         protected final PageInfo getPageInfo(IPageRequestHandler handler)
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/main/java/org/apache/wicket/request/mapper/BookmarkableMapper.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/request/mapper/BookmarkableMapper.java
> b/wicket-core/src/main/java/org/apache/wicket/request/mapper/BookmarkableMapper.java
> index 759f389..4ae4bf1 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/request/mapper/BookmarkableMapper.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/request/mapper/BookmarkableMapper.java
> @@ -24,6 +24,7 @@ import
> org.apache.wicket.request.mapper.info.PageComponentInfo;
>  import org.apache.wicket.request.mapper.parameter.IPageParametersEncoder;
>  import org.apache.wicket.request.mapper.parameter.PageParameters;
>  import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
> +import org.apache.wicket.settings.IPageSettings;
>  import org.apache.wicket.util.lang.Args;
>
>  /**
> @@ -53,9 +54,11 @@ public class BookmarkableMapper extends
> AbstractBookmarkableMapper
>          * Construct.
>          *
>          * @param pageParametersEncoder
> +        * @param settings
>          */
> -       public BookmarkableMapper(IPageParametersEncoder
> pageParametersEncoder)
> +       public BookmarkableMapper(IPageParametersEncoder
> pageParametersEncoder, IPageSettings settings)
>         {
> +               super(settings);
>                 Args.notNull(pageParametersEncoder,
> "pageParametersEncoder");
>
>                 this.pageParametersEncoder = pageParametersEncoder;
> @@ -63,6 +66,16 @@ public class BookmarkableMapper extends
> AbstractBookmarkableMapper
>
>         /**
>          * Construct.
> +        *
> +        * @param pageParametersEncoder
> +        */
> +       public BookmarkableMapper(IPageParametersEncoder
> pageParametersEncoder)
> +       {
> +               this(pageParametersEncoder,
> Application.get().getPageSettings());
> +       }
> +
> +       /**
> +        * Construct.
>          */
>         public BookmarkableMapper()
>         {
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/main/java/org/apache/wicket/request/mapper/MountedMapper.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/request/mapper/MountedMapper.java
> b/wicket-core/src/main/java/org/apache/wicket/request/mapper/MountedMapper.java
> index 3d40023..6ff64f8 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/request/mapper/MountedMapper.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/request/mapper/MountedMapper.java
> @@ -20,18 +20,14 @@ import java.util.ArrayList;
>  import java.util.List;
>
>  import org.apache.wicket.Application;
> -import org.apache.wicket.RequestListenerInterface;
> -import org.apache.wicket.request.IRequestHandler;
>  import org.apache.wicket.request.Request;
>  import org.apache.wicket.request.Url;
>  import org.apache.wicket.request.component.IRequestablePage;
> -import org.apache.wicket.request.handler.ListenerInterfaceRequestHandler;
> -import org.apache.wicket.request.mapper.info.ComponentInfo;
>  import org.apache.wicket.request.mapper.info.PageComponentInfo;
> -import org.apache.wicket.request.mapper.info.PageInfo;
>  import org.apache.wicket.request.mapper.parameter.IPageParametersEncoder;
>  import org.apache.wicket.request.mapper.parameter.PageParameters;
>  import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
> +import org.apache.wicket.settings.IPageSettings;
>  import org.apache.wicket.util.ClassProvider;
>  import org.apache.wicket.util.lang.Args;
>  import org.apache.wicket.util.string.Strings;
> @@ -186,6 +182,24 @@ public class MountedMapper extends
> AbstractBookmarkableMapper
>                 ClassProvider<? extends IRequestablePage>
> pageClassProvider,
>                 IPageParametersEncoder pageParametersEncoder)
>         {
> +               this(mountPath, pageClassProvider, pageParametersEncoder,
> Application.get()
> +                       .getPageSettings());
> +
> +       }
> +
> +       /**
> +        * Construct.
> +        *
> +        * @param mountPath
> +        * @param pageClassProvider
> +        * @param pageParametersEncoder
> +        * @param settings
> +        */
> +       public MountedMapper(String mountPath,
> +               ClassProvider<? extends IRequestablePage>
> pageClassProvider,
> +               IPageParametersEncoder pageParametersEncoder,
> IPageSettings settings)
> +       {
> +               super(settings);
>                 Args.notEmpty(mountPath, "mountPath");
>                 Args.notNull(pageClassProvider, "pageClassProvider");
>                 Args.notNull(pageParametersEncoder,
> "pageParametersEncoder");
> @@ -360,46 +374,6 @@ public class MountedMapper extends
> AbstractBookmarkableMapper
>                 return new PageParameters();
>         }
>
> -       @Override
> -       public Url mapHandler(IRequestHandler requestHandler)
> -       {
> -               Url url = super.mapHandler(requestHandler);
> -
> -               if (url == null && requestHandler instanceof
> ListenerInterfaceRequestHandler &&
> -                       getRecreateMountedPagesAfterExpiry())
> -               {
> -                       ListenerInterfaceRequestHandler handler =
> (ListenerInterfaceRequestHandler)requestHandler;
> -                       IRequestablePage page = handler.getPage();
> -                       if (checkPageInstance(page))
> -                       {
> -                               String componentPath =
> handler.getComponentPath();
> -                               RequestListenerInterface listenerInterface
> = handler.getListenerInterface();
> -
> -                               Integer renderCount = null;
> -                               if
> (listenerInterface.isIncludeRenderCount())
> -                               {
> -                                       renderCount =
> page.getRenderCount();
> -                               }
> -
> -                               PageInfo pageInfo = getPageInfo(handler);
> -                               ComponentInfo componentInfo = new
> ComponentInfo(renderCount,
> -
> requestListenerInterfaceToString(listenerInterface), componentPath,
> -                                       handler.getBehaviorIndex());
> -                               PageComponentInfo pageComponentInfo = new
> PageComponentInfo(pageInfo, componentInfo);
> -                               PageParameters parameters = new
> PageParameters(page.getPageParameters());
> -                               UrlInfo urlInfo = new
> UrlInfo(pageComponentInfo, page.getClass(),
> -
> parameters.mergeWith(handler.getPageParameters()));
> -                               url = buildUrl(urlInfo);
> -                       }
> -               }
> -
> -               return url;
> -       }
> -
> -       boolean getRecreateMountedPagesAfterExpiry()
> -       {
> -               return
> Application.get().getPageSettings().getRecreateMountedPagesAfterExpiry();
> -       }
>
>         /**
>          * @see
> org.apache.wicket.request.mapper.AbstractBookmarkableMapper#buildUrl(org.apache.wicket.request.mapper.AbstractBookmarkableMapper.UrlInfo)
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/main/java/org/apache/wicket/request/mapper/PackageMapper.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/main/java/org/apache/wicket/request/mapper/PackageMapper.java
> b/wicket-core/src/main/java/org/apache/wicket/request/mapper/PackageMapper.java
> index bfacbcb..5fed6d5 100644
> ---
> a/wicket-core/src/main/java/org/apache/wicket/request/mapper/PackageMapper.java
> +++
> b/wicket-core/src/main/java/org/apache/wicket/request/mapper/PackageMapper.java
> @@ -18,6 +18,7 @@ package org.apache.wicket.request.mapper;
>
>  import java.lang.reflect.Modifier;
>
> +import org.apache.wicket.Application;
>  import org.apache.wicket.protocol.http.WebApplication;
>  import org.apache.wicket.request.Request;
>  import org.apache.wicket.request.Url;
> @@ -26,6 +27,7 @@ import
> org.apache.wicket.request.mapper.info.PageComponentInfo;
>  import org.apache.wicket.request.mapper.parameter.IPageParametersEncoder;
>  import org.apache.wicket.request.mapper.parameter.PageParameters;
>  import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
> +import org.apache.wicket.settings.IPageSettings;
>  import org.apache.wicket.util.lang.Args;
>  import org.apache.wicket.util.lang.PackageName;
>
> @@ -88,6 +90,20 @@ public class PackageMapper extends
> AbstractBookmarkableMapper
>         public PackageMapper(final PackageName packageName,
>                 final IPageParametersEncoder pageParametersEncoder)
>         {
> +               this(packageName, pageParametersEncoder,
> Application.get().getPageSettings());
> +       }
> +
> +       /**
> +        * Construct.
> +        *
> +        * @param packageName
> +        * @param pageParametersEncoder
> +        * @param settigns
> +        */
> +       public PackageMapper(final PackageName packageName,
> +               final IPageParametersEncoder pageParametersEncoder,
> IPageSettings settigns)
> +       {
> +               super(settigns);
>                 Args.notNull(packageName, "packageName");
>                 Args.notNull(pageParametersEncoder,
> "pageParametersEncoder");
>
> @@ -137,7 +153,7 @@ public class PackageMapper extends
> AbstractBookmarkableMapper
>
>                         // load the page class
>                         String className = url.getSegments().get(0);
> -
> +
>                         if (isValidClassName(className) == false)
>                         {
>                                 return null;
> @@ -161,13 +177,13 @@ public class PackageMapper extends
> AbstractBookmarkableMapper
>         }
>
>         /**
> -        * filter out invalid class names for package mapper. getting
> trash for class names
> -        * can e.g. happen when the home page is in the same package that
> is mounted by package mapper
> -        * but the request was previously mapped by e.g. {@link
> HomePageMapper}. We then get some
> -        * strange url like '/example/..' and wicket tries to look up
> class name '..'.
> +        * filter out invalid class names for package mapper. getting
> trash for class names can e.g.
> +        * happen when the home page is in the same package that is
> mounted by package mapper but the
> +        * request was previously mapped by e.g. {@link HomePageMapper}.
> We then get some strange url
> +        * like '/example/..' and wicket tries to look up class name '..'.
>          * <p/>
> -        *  @see <a href="
> https://issues.apache.org/jira/browse/WICKET-4303">WICKET-4303</a>
> -        *  <p/>
> +        *
> +        * @see <a href="https://issues.apache.org/jira/browse/WICKET-4303">WICKET-4303</a>
> <p/>
>          */
>         private boolean isValidClassName(String className)
>         {
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapperTest.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapperTest.java
> b/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapperTest.java
> new file mode 100644
> index 0000000..c2de418
> --- /dev/null
> +++
> b/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapperTest.java
> @@ -0,0 +1,92 @@
> +package org.apache.wicket.request.mapper;
> +
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements.  See the NOTICE file distributed with
> + * this work for additional information regarding copyright ownership.
> + * The ASF licenses this file to You under the Apache License, Version 2.0
> + * (the "License"); you may not use this file except in compliance with
> + * the License.  You may obtain a copy of the License at
> + *
> + *      http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
> +
> +import org.apache.wicket.MockPage;
> +import org.apache.wicket.WicketTestCase;
> +import org.apache.wicket.protocol.http.PageExpiredException;
> +import org.apache.wicket.request.IRequestHandler;
> +import org.apache.wicket.request.Request;
> +import org.apache.wicket.request.Url;
> +import org.apache.wicket.request.component.IRequestablePage;
> +import org.apache.wicket.request.mapper.info.PageInfo;
> +import org.apache.wicket.request.mapper.parameter.PageParameters;
> +import org.junit.Assert;
> +import org.junit.Test;
> +
> +/**
> + * @author pedrosans
> + */
> +public class AbstractBookmarkableMapperTest extends WicketTestCase
> +{
> +
> +       private static final int NOT_RENDERED_COUNT = 2;
> +       private static final int EXPIRED_ID = 2;
> +
> +
> +       /**
> +        * <a href="https://issues.apache.org/jira/browse/WICKET-4932
> ">WICKET-4932</a>
> +        */
> +       @Test(expected = PageExpiredException.class)
> +       public void
> itFailsToProcessAnExpiredPageIfShouldNotRecreateMountedPagesAfterExpiry()
> +       {
> +
> tester.getApplication().getPageSettings().setRecreateMountedPagesAfterExpiry(false);
> +               AbstractBookmarkableMapperStub mapper = new
> AbstractBookmarkableMapperStub();
> +               mapper.processHybrid(new PageInfo(EXPIRED_ID),
> MockPage.class, null, NOT_RENDERED_COUNT);
> +               Assert.fail("it shouldn't process expired pages if the app
> was flagged to not recreated mounted pages after expiry");
> +       }
> +
> +       /** */
>

Add a comment for the purpose of this class


> +       public class AbstractBookmarkableMapperStub extends
> AbstractBookmarkableMapper
>

I'd make it private static.


> +       {
> +
> +               @Override
> +               protected UrlInfo parseRequest(Request request)
> +               {
> +                       return null;
> +               }
> +
> +               @Override
> +               protected Url buildUrl(UrlInfo info)
> +               {
> +                       return null;
> +               }
> +
> +               @Override
> +               protected boolean pageMustHaveBeenCreatedBookmarkable()
> +               {
> +                       return false;
> +               }
> +
> +               @Override
> +               public int getCompatibilityScore(Request request)
> +               {
> +                       return 0;
> +               }
> +
> +               @Override
> +               protected IRequestHandler processHybrid(PageInfo pageInfo,
> +                       Class<? extends IRequestablePage> pageClass,
> PageParameters pageParameters,
> +                       Integer renderCount)
> +               {
> +                       return super.processHybrid(pageInfo, pageClass,
> pageParameters, renderCount);
> +               }
> +
> +       }
> +
> +}
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractMapperTest.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractMapperTest.java
> b/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractMapperTest.java
> index 57455c4..bf40394 100644
> ---
> a/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractMapperTest.java
> +++
> b/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractMapperTest.java
> @@ -24,6 +24,8 @@ import org.apache.wicket.markup.html.link.ILinkListener;
>  import org.apache.wicket.request.Request;
>  import org.apache.wicket.request.Url;
>  import org.apache.wicket.request.component.IRequestablePage;
> +import org.apache.wicket.settings.IPageSettings;
> +import org.apache.wicket.settings.def.PageSettings;
>  import org.junit.Assert;
>  import org.junit.Before;
>
> @@ -37,9 +39,11 @@ public abstract class AbstractMapperTest extends Assert
>          */
>         public AbstractMapperTest()
>         {
> +               settings.setRecreateMountedPagesAfterExpiry(true);
>         }
>
>         protected TestMapperContext context = new TestMapperContext();
> +       protected IPageSettings settings = new PageSettings();
>
>         /**
>          * @throws Exception
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java
> b/wicket-core/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java
> index e6f3cc1..628ae04 100644
> ---
> a/wicket-core/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java
> +++
> b/wicket-core/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java
> @@ -31,6 +31,7 @@ import
> org.apache.wicket.request.handler.PageAndComponentProvider;
>  import org.apache.wicket.request.handler.PageProvider;
>  import org.apache.wicket.request.handler.RenderPageRequestHandler;
>  import org.apache.wicket.request.mapper.parameter.PageParameters;
> +import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
>  import org.junit.Test;
>
>  /**
> @@ -39,7 +40,8 @@ import org.junit.Test;
>  public class BookmarkableMapperTest extends AbstractMapperTest
>  {
>
> -       private final BookmarkableMapper encoder = new BookmarkableMapper()
> +       private final BookmarkableMapper encoder = new
> BookmarkableMapper(new PageParametersEncoder(),
> +               settings)
>         {
>                 @Override
>                 protected IMapperContext getContext()
> @@ -112,14 +114,12 @@ public class BookmarkableMapperTest extends
> AbstractMapperTest
>                 IRequestHandler handler =
> encoder.mapRequest(getRequest(url));
>
>                 assertTrue(handler instanceof RenderPageRequestHandler);
> -
> context.setCurrentPageParameters(((RenderPageRequestHandler)handler).getPageParameters());
> -               IRequestablePage page =
> ((RenderPageRequestHandler)handler).getPage();
> -               checkPage(page, 15);
> +               PageParameters pageParameters =
> ((RenderPageRequestHandler)handler).getPageParameters();
> +               checkPage(((RenderPageRequestHandler)handler).getPage(),
> 15);
>
> -               PageParameters p = page.getPageParameters();
> -               assertEquals(2, p.getIndexedCount());
> +               assertEquals(2, pageParameters.getIndexedCount());
>
> -               assertEquals(2, p.getNamedKeys().size());
> +               assertEquals(2, pageParameters.getNamedKeys().size());
>         }
>
>         /**
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/test/java/org/apache/wicket/request/mapper/MountedMapperTest.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/test/java/org/apache/wicket/request/mapper/MountedMapperTest.java
> b/wicket-core/src/test/java/org/apache/wicket/request/mapper/MountedMapperTest.java
> index ed9eddb..6c67134 100644
> ---
> a/wicket-core/src/test/java/org/apache/wicket/request/mapper/MountedMapperTest.java
> +++
> b/wicket-core/src/test/java/org/apache/wicket/request/mapper/MountedMapperTest.java
> @@ -33,6 +33,8 @@ import org.apache.wicket.request.handler.PageProvider;
>  import org.apache.wicket.request.handler.RenderPageRequestHandler;
>  import org.apache.wicket.request.http.WebRequest;
>  import org.apache.wicket.request.mapper.parameter.PageParameters;
> +import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
> +import org.apache.wicket.util.ClassProvider;
>  import org.junit.Test;
>
>  /**
> @@ -48,7 +50,8 @@ public class MountedMapperTest extends AbstractMapperTest
>         {
>         }
>
> -       private final MountedMapper encoder = new
> MountedMapper("/some/mount/path", MockPage.class)
> +       private final MountedMapper encoder = new
> MountedMapper("/some/mount/path",
> +               ClassProvider.of(MockPage.class), new
> PageParametersEncoder(), settings)
>         {
>                 @Override
>                 protected IMapperContext getContext()
> @@ -56,15 +59,11 @@ public class MountedMapperTest extends
> AbstractMapperTest
>                         return context;
>                 }
>
> -               @Override
> -               boolean getRecreateMountedPagesAfterExpiry()
> -               {
> -                       return true;
> -               }
>         };
>
>         private final MountedMapper placeholderEncoder = new MountedMapper(
> -               "/some/${param1}/path/${param2}", MockPage.class)
> +               "/some/${param1}/path/${param2}",
> ClassProvider.of(MockPage.class),
> +               new PageParametersEncoder(), settings)
>         {
>                 @Override
>                 protected IMapperContext getContext()
> @@ -72,27 +71,17 @@ public class MountedMapperTest extends
> AbstractMapperTest
>                         return context;
>                 }
>
> -               @Override
> -               boolean getRecreateMountedPagesAfterExpiry()
> -               {
> -                       return true;
> -               }
>         };
>
>         private final MountedMapper optionPlaceholderEncoder = new
> MountedMapper(
> -               "/some/#{param1}/path/${param2}/#{param3}", MockPage.class)
> +               "/some/#{param1}/path/${param2}/#{param3}",
> ClassProvider.of(MockPage.class),
> +               new PageParametersEncoder(), settings)
>         {
>                 @Override
>                 protected IMapperContext getContext()
>                 {
>                         return context;
>                 }
> -
> -               @Override
> -               boolean getRecreateMountedPagesAfterExpiry()
> -               {
> -                       return true;
> -               }
>         };
>
>         /**
> @@ -156,14 +145,13 @@ public class MountedMapperTest extends
> AbstractMapperTest
>                 IRequestHandler handler =
> encoder.mapRequest(getRequest(url));
>
>                 assertTrue(handler instanceof RenderPageRequestHandler);
> -
> context.setCurrentPageParameters(((RenderPageRequestHandler)handler).getPageParameters());
> -               IRequestablePage page =
> ((RenderPageRequestHandler)handler).getPage();
> -               checkPage(page, 15);
> +               PageParameters pageParameters =
> ((RenderPageRequestHandler)handler).getPageParameters();
>
> -               PageParameters p = page.getPageParameters();
> -               assertEquals(2, p.getIndexedCount());
> +               checkPage(((RenderPageRequestHandler)handler).getPage(),
> 15);
>
> -               assertEquals(2, p.getNamedKeys().size());
> +               assertEquals(2, pageParameters.getIndexedCount());
> +
> +               assertEquals(2, pageParameters.getNamedKeys().size());
>         }
>
>         /**
> @@ -533,7 +521,8 @@ public class MountedMapperTest extends
> AbstractMapperTest
>         @Test(expected = IllegalArgumentException.class)
>         public void construct1()
>         {
> -               IRequestMapper e = new MountedMapper("", MockPage.class);
> +               IRequestMapper e = new MountedMapper("",
> ClassProvider.of(MockPage.class),
> +                       new PageParametersEncoder(), settings);
>         }
>
>         /**
> @@ -542,7 +531,8 @@ public class MountedMapperTest extends
> AbstractMapperTest
>         @Test
>         public void construct2()
>         {
> -               IRequestMapper homePageMapper = new MountedMapper("/",
> MockPage.class);
> +               IRequestMapper homePageMapper = new MountedMapper("/",
> ClassProvider.of(MockPage.class),
> +                       new PageParametersEncoder(), settings);
>                 assertNotNull(homePageMapper);
>         }
>
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/test/java/org/apache/wicket/request/mapper/PackageMapperTest.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/test/java/org/apache/wicket/request/mapper/PackageMapperTest.java
> b/wicket-core/src/test/java/org/apache/wicket/request/mapper/PackageMapperTest.java
> index 23a854b..fa8e6c8 100644
> ---
> a/wicket-core/src/test/java/org/apache/wicket/request/mapper/PackageMapperTest.java
> +++
> b/wicket-core/src/test/java/org/apache/wicket/request/mapper/PackageMapperTest.java
> @@ -32,6 +32,7 @@ import org.apache.wicket.request.handler.PageProvider;
>  import org.apache.wicket.request.handler.RenderPageRequestHandler;
>  import
> org.apache.wicket.request.mapper.PackageMapperTest.OuterPage.InnerPage;
>  import org.apache.wicket.request.mapper.parameter.PageParameters;
> +import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
>  import org.apache.wicket.util.lang.PackageName;
>  import org.junit.Test;
>
> @@ -43,7 +44,8 @@ public class PackageMapperTest extends AbstractMapperTest
>
>         private static final String ALIAS = "alias";
>
> -       private final PackageMapper encoder = new
> PackageMapper(PackageName.forClass(MockPage.class))
> +       private final PackageMapper encoder = new
> PackageMapper(PackageName.forClass(MockPage.class),
> +               new PageParametersEncoder(), settings)
>         {
>                 @Override
>                 protected IMapperContext getContext()
> @@ -55,7 +57,7 @@ public class PackageMapperTest extends AbstractMapperTest
>         private static final String PAGE_CLASS_NAME =
> MockPage.class.getSimpleName();
>
>         private final PackageMapper aliasEncoder = new PackageMapper(
> -               PackageName.forClass(MockPage.class))
> +               PackageName.forClass(MockPage.class), new
> PageParametersEncoder(), settings)
>         {
>                 @Override
>                 protected IMapperContext getContext()
> @@ -157,14 +159,12 @@ public class PackageMapperTest extends
> AbstractMapperTest
>
>                 assertTrue(handler instanceof RenderPageRequestHandler);
>
> -
> context.setCurrentPageParameters(((RenderPageRequestHandler)handler).getPageParameters());
> -               IRequestablePage page =
> ((RenderPageRequestHandler)handler).getPage();
> -               checkPage(page, 15);
> +               PageParameters pageParameters =
> ((RenderPageRequestHandler)handler).getPageParameters();
> +               checkPage(((RenderPageRequestHandler)handler).getPage(),
> 15);
>
> -               PageParameters p = page.getPageParameters();
> -               assertEquals(2, p.getIndexedCount());
> +               assertEquals(2, pageParameters.getIndexedCount());
>
> -               assertEquals(2, p.getNamedKeys().size());
> +               assertEquals(2, pageParameters.getNamedKeys().size());
>         }
>
>         /**
> @@ -454,7 +454,7 @@ public class PackageMapperTest extends
> AbstractMapperTest
>
>
>         private final PackageMapper innerClassEncoder = new PackageMapper(
> -               PackageName.forClass(OuterPage.class))
> +               PackageName.forClass(OuterPage.class), new
> PageParametersEncoder(), settings)
>         {
>                 @Override
>                 protected IMapperContext getContext()
>
>
> http://git-wip-us.apache.org/repos/asf/wicket/blob/7e5b2e31/wicket-core/src/test/java/org/apache/wicket/request/mapper/TestMapperContext.java
> ----------------------------------------------------------------------
> diff --git
> a/wicket-core/src/test/java/org/apache/wicket/request/mapper/TestMapperContext.java
> b/wicket-core/src/test/java/org/apache/wicket/request/mapper/TestMapperContext.java
> index af3d4c1..9ad9b59 100644
> ---
> a/wicket-core/src/test/java/org/apache/wicket/request/mapper/TestMapperContext.java
> +++
> b/wicket-core/src/test/java/org/apache/wicket/request/mapper/TestMapperContext.java
> @@ -216,10 +216,15 @@ public class TestMapperContext implements
> IMapperContext
>
>         public TestMapperContext setCurrentPageParameters(PageParameters
> parameters)
>         {
> -               this.currentPageParameters = parameters;
> +               currentPageParameters = parameters;
>                 return this;
>         }
>
> +       public void setCreateMockPageIfInstanceNotFound(boolean
> createMockPageIfInstanceNotFound)
> +       {
> +               this.createMockPageIfInstanceNotFound =
> createMockPageIfInstanceNotFound;
> +       }
> +
>         /**
>          *
>          * Adapts {@link PageProvider} to this {@link IMapperContext}
>
>


-- 
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com <http://jweekend.com/>