Hi,

See my comments inline.


On Wed, Jan 9, 2013 at 9:45 PM, <[email protected]> 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 <[email protected]>
> Authored: Wed Jan 9 17:43:30 2013 -0200
> Committer: Pedro Santos <[email protected]>
> 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/>

Reply via email to