Updated Branches:
  refs/heads/master 2b1ce91d6 -> e329e1e20

WICKET-4686

Make it possible to use named mandatory and optional parameters in the url 
mounted with PackageMapper


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

Branch: refs/heads/master
Commit: 8b4d9de39eedeef10ff1ff0a383606b6b94785bb
Parents: f99a241
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Tue Aug 7 11:58:10 2012 +0300
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Tue Aug 7 11:58:10 2012 +0300

----------------------------------------------------------------------
 .../mapper/AbstractBookmarkableMapper.java      | 230 +++++++++++++++++++
 .../core/request/mapper/BookmarkableMapper.java |  29 +--
 .../core/request/mapper/MountedMapper.java      | 225 +-----------------
 .../core/request/mapper/PackageMapper.java      |  49 ++--
 .../wicket/protocol/http/WebApplication.java    |   6 +-
 .../core/request/mapper/PackageMapperTest.java  | 104 +++++++--
 .../request/mapper/mount/MountMapper.java       |   5 +-
 .../mapper/mount/UnmountedMapperAdapter.java    |  14 +-
 .../mount/UnmountedRequestHandlerAdapter.java   |  11 +-
 .../mapper/parameter/PageParametersEncoder.java |   6 -
 10 files changed, 351 insertions(+), 328 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/8b4d9de3/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
 
b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
index 86c64a6..bd920de 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/AbstractBookmarkableMapper.java
@@ -16,6 +16,9 @@
  */
 package org.apache.wicket.core.request.mapper;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.wicket.RequestListenerInterface;
 import 
org.apache.wicket.core.request.handler.BookmarkableListenerInterfaceRequestHandler;
 import org.apache.wicket.core.request.handler.BookmarkablePageRequestHandler;
@@ -34,7 +37,9 @@ import org.apache.wicket.request.http.WebRequest;
 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.util.lang.Args;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -133,11 +138,27 @@ public abstract class AbstractBookmarkableMapper extends 
AbstractComponentMapper
                }
        }
 
+       private final List<MountPathSegment> pathSegments;
+
+       protected final String[] mountSegments;
+
+       protected final IPageParametersEncoder pageParametersEncoder;
+
        /**
         * Construct.
         */
        public AbstractBookmarkableMapper()
        {
+               this("notUsed", new PageParametersEncoder());
+       }
+
+       public AbstractBookmarkableMapper(String mountPath, 
IPageParametersEncoder pageParametersEncoder)
+       {
+               Args.notEmpty(mountPath, "mountPath");
+
+               this.pageParametersEncoder = 
Args.notNull(pageParametersEncoder, "pageParametersEncoder");
+               mountSegments = getMountSegments(mountPath);
+               pathSegments = getPathSegments(mountSegments);
        }
 
        /**
@@ -428,4 +449,213 @@ public abstract class AbstractBookmarkableMapper extends 
AbstractComponentMapper
 
                return new PageInfo(pageId);
        }
+
+       protected static class MountPathSegment
+       {
+               private int segmentIndex;
+               private String fixedPart;
+               private int minParameters;
+               private int optionalParameters;
+
+               public MountPathSegment(int segmentIndex)
+               {
+                       this.segmentIndex = segmentIndex;
+               }
+
+               public void setFixedPart(String fixedPart)
+               {
+                       this.fixedPart = fixedPart;
+               }
+
+               public void addRequiredParameter()
+               {
+                       minParameters++;
+               }
+
+               public void addOptionalParameter()
+               {
+                       optionalParameters++;
+               }
+
+               public int getSegmentIndex()
+               {
+                       return segmentIndex;
+               }
+
+               public String getFixedPart()
+               {
+                       return fixedPart;
+               }
+
+               public int getMinParameters()
+               {
+                       return minParameters;
+               }
+
+               public int getOptionalParameters()
+               {
+                       return optionalParameters;
+               }
+
+               public int getMaxParameters()
+               {
+                       return getOptionalParameters() + getMinParameters();
+               }
+
+               public int getFixedPartSize()
+               {
+                       return getFixedPart() == null ? 0 : 1;
+               }
+
+               @Override
+               public String toString()
+               {
+                       return "(" + getSegmentIndex() + ") " + 
getMinParameters() + '-' + getMaxParameters() +
+                                       ' ' + (getFixedPart() == null ? "(end)" 
: getFixedPart());
+               }
+       }
+
+       protected List<MountPathSegment> getPathSegments(String[] segments)
+       {
+               List<MountPathSegment> ret = new ArrayList<MountPathSegment>();
+               int segmentIndex = 0;
+               MountPathSegment curPathSegment = new 
MountPathSegment(segmentIndex);
+               ret.add(curPathSegment);
+               for (String curSegment : segments)
+               {
+                       if (isFixedSegment(curSegment))
+                       {
+                               curPathSegment.setFixedPart(curSegment);
+                               curPathSegment = new 
MountPathSegment(segmentIndex + 1);
+                               ret.add(curPathSegment);
+                       }
+                       else if (getPlaceholder(curSegment) != null)
+                       {
+                               curPathSegment.addRequiredParameter();
+                       }
+                       else
+                       {
+                               curPathSegment.addOptionalParameter();
+                       }
+                       segmentIndex++;
+               }
+               return ret;
+       }
+
+       protected boolean isFixedSegment(String segment)
+       {
+               return getOptionalPlaceholder(segment) == null && 
getPlaceholder(segment) == null;
+       }
+
+
+       /**
+        * Extracts the PageParameters from URL if there are any
+        */
+       protected PageParameters extractPageParameters(Request request, Url url)
+       {
+               int[] matchedParameters = getMatchedSegmentSizes(url);
+               int total = 0;
+               for (int curMatchSize : matchedParameters)
+                       total += curMatchSize;
+               PageParameters pageParameters = extractPageParameters(request, 
total, pageParametersEncoder);
+
+               int skippedParameters = 0;
+               for (int pathSegmentIndex = 0; pathSegmentIndex < 
pathSegments.size(); pathSegmentIndex++)
+               {
+                       MountPathSegment curPathSegment = 
pathSegments.get(pathSegmentIndex);
+                       int matchSize = matchedParameters[pathSegmentIndex] - 
curPathSegment.getFixedPartSize();
+                       int optionalParameterMatch = matchSize - 
curPathSegment.getMinParameters();
+                       for (int matchSegment = 0; matchSegment < matchSize; 
matchSegment++)
+                       {
+                               if (pageParameters == null)
+                               {
+                                       pageParameters = new PageParameters();
+                               }
+
+                               int curSegmentIndex = matchSegment + 
curPathSegment.getSegmentIndex();
+                               String curSegment = 
mountSegments[curSegmentIndex];
+                               String placeholder = getPlaceholder(curSegment);
+                               String optionalPlaceholder = 
getOptionalPlaceholder(curSegment);
+                               // extract the parameter from URL
+                               if (placeholder != null)
+                               {
+                                       pageParameters.add(placeholder,
+                                                       
url.getSegments().get(curSegmentIndex - skippedParameters));
+                               }
+                               else if (optionalPlaceholder != null && 
optionalParameterMatch > 0)
+                               {
+                                       pageParameters.add(optionalPlaceholder,
+                                                       
url.getSegments().get(curSegmentIndex - skippedParameters));
+                                       optionalParameterMatch--;
+                               }
+                       }
+                       skippedParameters += curPathSegment.getMaxParameters() 
- matchSize;
+               }
+               return pageParameters;
+       }
+
+       protected int[] getMatchedSegmentSizes(Url url)
+       {
+               int[] ret = new int[pathSegments.size()];
+               int segmentIndex = 0;
+               int pathSegmentIndex = 0;
+               for (MountPathSegment curPathSegment : pathSegments.subList(0, 
pathSegments.size() - 1))
+               {
+                       boolean foundFixedPart = false;
+                       segmentIndex += curPathSegment.getMinParameters();
+                       int max = 
Math.min(curPathSegment.getOptionalParameters() + 1,
+                                       url.getSegments().size() - 
segmentIndex);
+
+                       for (int count = max - 1; count >= 0; count--)
+                       {
+                               if (url.getSegments()
+                                               .get(segmentIndex + count)
+                                               
.equals(curPathSegment.getFixedPart()))
+                               {
+                                       foundFixedPart = true;
+                                       segmentIndex += count + 1;
+                                       ret[pathSegmentIndex] = count + 
curPathSegment.getMinParameters() + 1;
+                                       break;
+                               }
+                       }
+                       if (!foundFixedPart)
+                               return null;
+                       pathSegmentIndex++;
+               }
+               MountPathSegment lastSegment = 
pathSegments.get(pathSegments.size() - 1);
+               segmentIndex += lastSegment.getMinParameters();
+               if (segmentIndex > url.getSegments().size())
+                       return null;
+               ret[pathSegmentIndex] = 
Math.min(lastSegment.getMaxParameters(), url.getSegments().size() -
+                               segmentIndex + lastSegment.getMinParameters());
+               return ret;
+       }
+
+       protected void setPlaceholders(PageParameters parameters, Url url)
+       {
+               int dropped = 0;
+               for (int i = 0; i < mountSegments.length; ++i)
+               {
+                       String placeholder = getPlaceholder(mountSegments[i]);
+                       String optionalPlaceholder = 
getOptionalPlaceholder(mountSegments[i]);
+                       if (placeholder != null)
+                       {
+                               url.getSegments().set(i - dropped, 
parameters.get(placeholder).toString(""));
+                               parameters.remove(placeholder);
+                       }
+                       else if (optionalPlaceholder != null)
+                       {
+                               if 
(parameters.getNamedKeys().contains(optionalPlaceholder))
+                               {
+                                       url.getSegments().set(i - dropped, 
parameters.get(optionalPlaceholder).toString(""));
+                                       parameters.remove(optionalPlaceholder);
+                               }
+                               else
+                               {
+                                       url.getSegments().remove(i - dropped);
+                                       dropped++;
+                               }
+                       }
+               }
+       }
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b4d9de3/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
 
b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
index f8c7ffe..f3a8dac 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/BookmarkableMapper.java
@@ -24,7 +24,6 @@ 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.util.lang.Args;
 
 /**
  * Decodes and encodes the following URLs:
@@ -47,31 +46,24 @@ import org.apache.wicket.util.lang.Args;
  */
 public class BookmarkableMapper extends AbstractBookmarkableMapper
 {
-       private final IPageParametersEncoder pageParametersEncoder;
-
        /**
         * Construct.
-        *
-        * @param pageParametersEncoder
         */
-       public BookmarkableMapper(IPageParametersEncoder pageParametersEncoder)
+       public BookmarkableMapper()
        {
-               Args.notNull(pageParametersEncoder, "pageParametersEncoder");
-
-               this.pageParametersEncoder = pageParametersEncoder;
+               this(new PageParametersEncoder());
        }
 
        /**
         * Construct.
+        *
+        * @param pageParametersEncoder
         */
-       public BookmarkableMapper()
+       public BookmarkableMapper(IPageParametersEncoder pageParametersEncoder)
        {
-               this(new PageParametersEncoder());
+               super("notUsed", pageParametersEncoder);
        }
 
-       /**
-        * @see 
AbstractBookmarkableMapper#buildUrl(AbstractBookmarkableMapper.UrlInfo)
-        */
        @Override
        protected Url buildUrl(UrlInfo info)
        {
@@ -85,9 +77,6 @@ public class BookmarkableMapper extends 
AbstractBookmarkableMapper
                return encodePageParameters(url, info.getPageParameters(), 
pageParametersEncoder);
        }
 
-       /**
-        * @see 
AbstractBookmarkableMapper#parseRequest(org.apache.wicket.request.Request)
-        */
        @Override
        protected UrlInfo parseRequest(Request request)
        {
@@ -122,18 +111,12 @@ public class BookmarkableMapper extends 
AbstractBookmarkableMapper
                return null;
        }
 
-       /**
-        * @see AbstractBookmarkableMapper#pageMustHaveBeenCreatedBookmarkable()
-        */
        @Override
        protected boolean pageMustHaveBeenCreatedBookmarkable()
        {
                return true;
        }
 
-       /**
-        * @see 
AbstractBookmarkableMapper#getCompatibilityScore(org.apache.wicket.request.Request)
-        */
        @Override
        public int getCompatibilityScore(Request request)
        {

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b4d9de3/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
 
b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
index a7a5be8..37aada6 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/MountedMapper.java
@@ -16,9 +16,6 @@
  */
 package org.apache.wicket.core.request.mapper;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.apache.wicket.Application;
 import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler;
@@ -66,76 +63,6 @@ import org.apache.wicket.util.string.Strings;
  */
 public class MountedMapper extends AbstractBookmarkableMapper
 {
-       private final IPageParametersEncoder pageParametersEncoder;
-
-       private static class MountPathSegment
-       {
-               private int segmentIndex;
-               private String fixedPart;
-               private int minParameters;
-               private int optionalParameters;
-
-               public MountPathSegment(int segmentIndex)
-               {
-                       this.segmentIndex = segmentIndex;
-               }
-
-               public void setFixedPart(String fixedPart)
-               {
-                       this.fixedPart = fixedPart;
-               }
-
-               public void addRequiredParameter()
-               {
-                       minParameters++;
-               }
-
-               public void addOptionalParameter()
-               {
-                       optionalParameters++;
-               }
-
-               public int getSegmentIndex()
-               {
-                       return segmentIndex;
-               }
-
-               public String getFixedPart()
-               {
-                       return fixedPart;
-               }
-
-               public int getMinParameters()
-               {
-                       return minParameters;
-               }
-
-               public int getOptionalParameters()
-               {
-                       return optionalParameters;
-               }
-
-               public int getMaxParameters()
-               {
-                       return getOptionalParameters() + getMinParameters();
-               }
-
-               public int getFixedPartSize()
-               {
-                       return getFixedPart() == null ? 0 : 1;
-               }
-
-               @Override
-               public String toString()
-               {
-                       return "(" + getSegmentIndex() + ") " + 
getMinParameters() + "-" + getMaxParameters() +
-                               " " + (getFixedPart() == null ? "(end)" : 
getFixedPart());
-               }
-       }
-
-       private final List<MountPathSegment> pathSegments;
-       private final String[] mountSegments;
-
        /** bookmarkable page class. */
        private final ClassProvider<? extends IRequestablePage> 
pageClassProvider;
 
@@ -186,51 +113,13 @@ public class MountedMapper extends 
AbstractBookmarkableMapper
                ClassProvider<? extends IRequestablePage> pageClassProvider,
                IPageParametersEncoder pageParametersEncoder)
        {
-               Args.notEmpty(mountPath, "mountPath");
+               super(mountPath, pageParametersEncoder);
+
                Args.notNull(pageClassProvider, "pageClassProvider");
-               Args.notNull(pageParametersEncoder, "pageParametersEncoder");
 
-               this.pageParametersEncoder = pageParametersEncoder;
                this.pageClassProvider = pageClassProvider;
-               mountSegments = getMountSegments(mountPath);
-               pathSegments = getPathSegments(mountSegments);
        }
 
-       private List<MountPathSegment> getPathSegments(String[] segments)
-       {
-               List<MountPathSegment> ret = new ArrayList<MountPathSegment>();
-               int segmentIndex = 0;
-               MountPathSegment curPathSegment = new 
MountPathSegment(segmentIndex);
-               ret.add(curPathSegment);
-               for (String curSegment : segments)
-               {
-                       if (isFixedSegment(curSegment))
-                       {
-                               curPathSegment.setFixedPart(curSegment);
-                               curPathSegment = new 
MountPathSegment(segmentIndex + 1);
-                               ret.add(curPathSegment);
-                       }
-                       else if (getPlaceholder(curSegment) != null)
-                       {
-                               curPathSegment.addRequiredParameter();
-                       }
-                       else
-                       {
-                               curPathSegment.addOptionalParameter();
-                       }
-                       segmentIndex++;
-               }
-               return ret;
-       }
-
-       private boolean isFixedSegment(String segment)
-       {
-               return getOptionalPlaceholder(segment) == null && 
getPlaceholder(segment) == null;
-       }
-
-       /**
-        * @see 
AbstractBookmarkableMapper#parseRequest(org.apache.wicket.request.Request)
-        */
        @Override
        protected UrlInfo parseRequest(Request request)
        {
@@ -259,52 +148,6 @@ public class MountedMapper extends 
AbstractBookmarkableMapper
                }
        }
 
-       /*
-        * extract the PageParameters from URL if there are any
-        */
-       private PageParameters extractPageParameters(Request request, Url url)
-       {
-               int[] matchedParameters = getMatchedSegmentSizes(url);
-               int total = 0;
-               for (int curMatchSize : matchedParameters)
-                       total += curMatchSize;
-               PageParameters pageParameters = extractPageParameters(request, 
total, pageParametersEncoder);
-
-               int skippedParameters = 0;
-               for (int pathSegmentIndex = 0; pathSegmentIndex < 
pathSegments.size(); pathSegmentIndex++)
-               {
-                       MountPathSegment curPathSegment = 
pathSegments.get(pathSegmentIndex);
-                       int matchSize = matchedParameters[pathSegmentIndex] - 
curPathSegment.getFixedPartSize();
-                       int optionalParameterMatch = matchSize - 
curPathSegment.getMinParameters();
-                       for (int matchSegment = 0; matchSegment < matchSize; 
matchSegment++)
-                       {
-                               if (pageParameters == null)
-                               {
-                                       pageParameters = new PageParameters();
-                               }
-
-                               int curSegmentIndex = matchSegment + 
curPathSegment.getSegmentIndex();
-                               String curSegment = 
mountSegments[curSegmentIndex];
-                               String placeholder = getPlaceholder(curSegment);
-                               String optionalPlaceholder = 
getOptionalPlaceholder(curSegment);
-                               // extract the parameter from URL
-                               if (placeholder != null)
-                               {
-                                       pageParameters.add(placeholder,
-                                               
url.getSegments().get(curSegmentIndex - skippedParameters));
-                               }
-                               else if (optionalPlaceholder != null && 
optionalParameterMatch > 0)
-                               {
-                                       pageParameters.add(optionalPlaceholder,
-                                               
url.getSegments().get(curSegmentIndex - skippedParameters));
-                                       optionalParameterMatch--;
-                               }
-                       }
-                       skippedParameters += curPathSegment.getMaxParameters() 
- matchSize;
-               }
-               return pageParameters;
-       }
-
        @Override
        protected boolean urlStartsWith(Url url, String... segments)
        {
@@ -318,43 +161,6 @@ public class MountedMapper extends 
AbstractBookmarkableMapper
                }
        }
 
-       private int[] getMatchedSegmentSizes(Url url)
-       {
-               int[] ret = new int[pathSegments.size()];
-               int segmentIndex = 0;
-               int pathSegmentIndex = 0;
-               for (MountPathSegment curPathSegment : pathSegments.subList(0, 
pathSegments.size() - 1))
-               {
-                       boolean foundFixedPart = false;
-                       segmentIndex += curPathSegment.getMinParameters();
-                       int max = 
Math.min(curPathSegment.getOptionalParameters() + 1,
-                               url.getSegments().size() - segmentIndex);
-
-                       for (int count = max - 1; count >= 0; count--)
-                       {
-                               if (url.getSegments()
-                                       .get(segmentIndex + count)
-                                       .equals(curPathSegment.getFixedPart()))
-                               {
-                                       foundFixedPart = true;
-                                       segmentIndex += count + 1;
-                                       ret[pathSegmentIndex] = count + 
curPathSegment.getMinParameters() + 1;
-                                       break;
-                               }
-                       }
-                       if (!foundFixedPart)
-                               return null;
-                       pathSegmentIndex++;
-               }
-               MountPathSegment lastSegment = 
pathSegments.get(pathSegments.size() - 1);
-               segmentIndex += lastSegment.getMinParameters();
-               if (segmentIndex > url.getSegments().size())
-                       return null;
-               ret[pathSegmentIndex] = 
Math.min(lastSegment.getMaxParameters(), url.getSegments().size() -
-                       segmentIndex + lastSegment.getMinParameters());
-               return ret;
-       }
-
        protected PageParameters newPageParameters()
        {
                return new PageParameters();
@@ -415,32 +221,7 @@ public class MountedMapper extends 
AbstractBookmarkableMapper
                encodePageComponentInfo(url, info.getPageComponentInfo());
 
                PageParameters copy = new 
PageParameters(info.getPageParameters());
-
-               int dropped = 0;
-               for (int i = 0; i < mountSegments.length; ++i)
-               {
-                       String placeholder = getPlaceholder(mountSegments[i]);
-                       String optionalPlaceholder = 
getOptionalPlaceholder(mountSegments[i]);
-                       if (placeholder != null)
-                       {
-                               url.getSegments().set(i - dropped, 
copy.get(placeholder).toString(""));
-                               copy.remove(placeholder);
-                       }
-                       else if (optionalPlaceholder != null)
-                       {
-                               if 
(copy.getNamedKeys().contains(optionalPlaceholder))
-                               {
-                                       url.getSegments().set(i - dropped, 
copy.get(optionalPlaceholder).toString(""));
-                                       copy.remove(optionalPlaceholder);
-                               }
-                               else
-                               {
-                                       url.getSegments().remove(i - dropped);
-                                       dropped++;
-                               }
-                       }
-               }
-
+               setPlaceholders(copy, url);
                return encodePageParameters(url, copy, pageParametersEncoder);
        }
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b4d9de3/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PackageMapper.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PackageMapper.java
 
b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PackageMapper.java
index 54729e9..2e5d3fe 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PackageMapper.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PackageMapper.java
@@ -66,38 +66,32 @@ public class PackageMapper extends 
AbstractBookmarkableMapper
         */
        private final PackageName packageName;
 
-       /** the encoder used to encode/decode the page parameters */
-       private final IPageParametersEncoder pageParametersEncoder;
-
        /**
-        * Construct.
+        * Constructor.
         *
         * @param packageName
         */
-       public PackageMapper(final PackageName packageName)
+       public PackageMapper(String mountPath, final PackageName packageName)
        {
-               this(packageName, new PageParametersEncoder());
+               this(mountPath, packageName, new PageParametersEncoder());
        }
 
        /**
-        * Construct.
+        * Constructor.
         *
         * @param packageName
         * @param pageParametersEncoder
         */
-       public PackageMapper(final PackageName packageName,
+       public PackageMapper(String mountPath, final PackageName packageName,
                final IPageParametersEncoder pageParametersEncoder)
        {
+               super(mountPath, pageParametersEncoder);
+
                Args.notNull(packageName, "packageName");
-               Args.notNull(pageParametersEncoder, "pageParametersEncoder");
 
                this.packageName = packageName;
-               this.pageParametersEncoder = pageParametersEncoder;
        }
 
-       /**
-        * @see 
org.apache.wicket.core.request.mapper.AbstractBookmarkableMapper#buildUrl(UrlInfo)
-        */
        @Override
        protected Url buildUrl(UrlInfo info)
        {
@@ -106,6 +100,10 @@ public class PackageMapper extends 
AbstractBookmarkableMapper
                if (pageClassPackageName.equals(packageName))
                {
                        Url url = new Url();
+                       for (String s : mountSegments)
+                       {
+                               url.getSegments().add(s);
+                       }
 
                        String fullyQualifiedClassName = pageClass.getName();
                        String packageRelativeClassName = 
fullyQualifiedClassName;
@@ -117,26 +115,27 @@ public class PackageMapper extends 
AbstractBookmarkableMapper
                        packageRelativeClassName = 
transformForUrl(packageRelativeClassName);
                        url.getSegments().add(packageRelativeClassName);
                        encodePageComponentInfo(url, 
info.getPageComponentInfo());
-                       return encodePageParameters(url, 
info.getPageParameters(), pageParametersEncoder);
+
+                       PageParameters copy = new 
PageParameters(info.getPageParameters());
+                       setPlaceholders(copy, url);
+
+                       return encodePageParameters(url, copy, 
pageParametersEncoder);
                }
 
                return null;
        }
 
-       /**
-        * @see 
org.apache.wicket.core.request.mapper.AbstractBookmarkableMapper#parseRequest(org.apache.wicket.request.Request)
-        */
        @Override
        protected UrlInfo parseRequest(Request request)
        {
                Url url = request.getUrl();
-               if (url.getSegments().size() >= 1)
+               if (url.getSegments().size() > mountSegments.length)
                {
                        // try to extract page and component information from 
URL
                        PageComponentInfo info = getPageComponentInfo(url);
 
                        // load the page class
-                       String className = url.getSegments().get(0);
+                       String className = 
url.getSegments().get(mountSegments.length);
 
                        if (isValidClassName(className) == false)
                        {
@@ -151,8 +150,10 @@ public class PackageMapper extends 
AbstractBookmarkableMapper
                                
IRequestablePage.class.isAssignableFrom(pageClass))
                        {
                                // extract the PageParameters from URL if there 
are any
-                               PageParameters pageParameters = 
extractPageParameters(request, 1,
-                                       pageParametersEncoder);
+                               Url urlWithoutPageSegment = new Url(url);
+                               
urlWithoutPageSegment.getSegments().remove(mountSegments.length);
+                               Request requestWithoutPageSegment = 
request.cloneWithUrl(urlWithoutPageSegment);
+                               PageParameters pageParameters = 
extractPageParameters(requestWithoutPageSegment, urlWithoutPageSegment);
 
                                return new UrlInfo(info, pageClass, 
pageParameters);
                        }
@@ -210,18 +211,12 @@ public class PackageMapper extends 
AbstractBookmarkableMapper
                return className;
        }
 
-       /**
-        * @see 
org.apache.wicket.core.request.mapper.AbstractBookmarkableMapper#pageMustHaveBeenCreatedBookmarkable()
-        */
        @Override
        protected boolean pageMustHaveBeenCreatedBookmarkable()
        {
                return true;
        }
 
-       /**
-        * @see 
org.apache.wicket.core.request.mapper.AbstractBookmarkableMapper#getCompatibilityScore(org.apache.wicket.request.Request)
-        */
        @Override
        public int getCompatibilityScore(Request request)
        {

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b4d9de3/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebApplication.java 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
index 42ab5d1..384184d 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebApplication.java
@@ -62,7 +62,6 @@ import org.apache.wicket.request.handler.render.PageRenderer;
 import org.apache.wicket.request.handler.render.WebPageRenderer;
 import org.apache.wicket.request.http.WebRequest;
 import org.apache.wicket.request.http.WebResponse;
-import org.apache.wicket.request.mapper.mount.MountMapper;
 import org.apache.wicket.request.resource.CssResourceReference;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
 import org.apache.wicket.request.resource.ResourceReference;
@@ -366,9 +365,8 @@ public abstract class WebApplication extends Application
         */
        public final <P extends Page> void mountPackage(final String path, 
final Class<P> pageClass)
        {
-               PackageMapper packageMapper = new 
PackageMapper(PackageName.forClass(pageClass));
-               MountMapper mountMapper = new MountMapper(path, packageMapper);
-               mount(mountMapper);
+               PackageMapper packageMapper = new PackageMapper(path, 
PackageName.forClass(pageClass));
+               mount(packageMapper);
        }
 
        /**

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b4d9de3/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java
index a342bd5..9aafdac 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PackageMapperTest.java
@@ -40,10 +40,11 @@ import org.junit.Test;
  */
 public class PackageMapperTest extends AbstractMapperTest
 {
+       private static final String MOUNT_PATH = "mount/path";
 
        private static final String ALIAS = "alias";
 
-       private final PackageMapper encoder = new 
PackageMapper(PackageName.forClass(MockPage.class))
+       private final PackageMapper encoder = new PackageMapper(MOUNT_PATH, 
PackageName.forClass(MockPage.class))
        {
                @Override
                protected IMapperContext getContext()
@@ -54,7 +55,7 @@ public class PackageMapperTest extends AbstractMapperTest
 
        private static final String PAGE_CLASS_NAME = 
MockPage.class.getSimpleName();
 
-       private final PackageMapper aliasEncoder = new PackageMapper(
+       private final PackageMapper aliasEncoder = new PackageMapper(MOUNT_PATH,
                PackageName.forClass(MockPage.class))
        {
                @Override
@@ -94,13 +95,22 @@ public class PackageMapperTest extends AbstractMapperTest
                }
        };
 
+       private final PackageMapper namedParametersEncoder = new 
PackageMapper(MOUNT_PATH + "/${foo}/${bar}", 
PackageName.forClass(MockPage.class))
+       {
+               @Override
+               protected IMapperContext getContext()
+               {
+                       return context;
+               }
+       };
+
        /**
         *
         */
        @Test
        public void decode1()
        {
-               Url url = Url.parse(PAGE_CLASS_NAME);
+               Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME);
                IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
                assertTrue(handler instanceof RenderPageRequestHandler);
@@ -116,7 +126,7 @@ public class PackageMapperTest extends AbstractMapperTest
        @Test
        public void decode2()
        {
-               Url url = Url.parse(PAGE_CLASS_NAME + "/indexed1?a=b&b=c");
+               Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME + 
"/indexed1?a=b&b=c");
                IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
                assertTrue(handler instanceof RenderPageRequestHandler);
@@ -138,7 +148,7 @@ public class PackageMapperTest extends AbstractMapperTest
        @Test
        public void decode3()
        {
-               Url url = Url.parse(PAGE_CLASS_NAME + "?15");
+               Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME + "?15");
                IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
                assertTrue(handler instanceof RenderPageRequestHandler);
@@ -152,7 +162,7 @@ public class PackageMapperTest extends AbstractMapperTest
        @Test
        public void decode4()
        {
-               Url url = Url.parse(PAGE_CLASS_NAME + "/i1/i2?15&a=b&b=c");
+               Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME + 
"/i1/i2?15&a=b&b=c");
                IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
                assertTrue(handler instanceof RenderPageRequestHandler);
@@ -171,7 +181,7 @@ public class PackageMapperTest extends AbstractMapperTest
        @Test
        public void decode5()
        {
-               Url url = Url.parse(PAGE_CLASS_NAME + 
"?15-ILinkListener-foo-bar");
+               Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME + 
"?15-ILinkListener-foo-bar");
                IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
                assertTrue(handler instanceof ListenerInterfaceRequestHandler);
@@ -192,7 +202,7 @@ public class PackageMapperTest extends AbstractMapperTest
        @Test
        public void decode6()
        {
-               Url url = Url.parse(PAGE_CLASS_NAME + 
"/i1/i2?15-ILinkListener-foo-bar&a=b&b=c");
+               Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME + 
"/i1/i2?15-ILinkListener-foo-bar&a=b&b=c");
                IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
                assertTrue(handler instanceof ListenerInterfaceRequestHandler);
@@ -216,7 +226,7 @@ public class PackageMapperTest extends AbstractMapperTest
        @Test
        public void decode7()
        {
-               Url url = Url.parse(PAGE_CLASS_NAME + 
"?15-ILinkListener.4-foo-bar");
+               Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME + 
"?15-ILinkListener.4-foo-bar");
                IRequestHandler handler = encoder.mapRequest(getRequest(url));
 
                assertTrue(handler instanceof ListenerInterfaceRequestHandler);
@@ -237,7 +247,7 @@ public class PackageMapperTest extends AbstractMapperTest
        @Test
        public void decode8()
        {
-               Url url = Url.parse(PAGE_CLASS_NAME + 
"/i1/i2?15-5.ILinkListener-foo-bar&a=b&b=c");
+               Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME + 
"/i1/i2?15-5.ILinkListener-foo-bar&a=b&b=c");
 
                context.setNextPageRenderCount(5);
 
@@ -256,7 +266,7 @@ public class PackageMapperTest extends AbstractMapperTest
        @Test(expected = StalePageException.class)
        public void decode9()
        {
-               Url url = Url.parse(PAGE_CLASS_NAME + 
"/i1/i2?15-5.ILinkListener-foo-bar&a=b&b=c");
+               Url url = Url.parse(MOUNT_PATH + '/' + PAGE_CLASS_NAME + 
"/i1/i2?15-5.ILinkListener-foo-bar&a=b&b=c");
 
                context.setNextPageRenderCount(6);
 
@@ -267,6 +277,33 @@ public class PackageMapperTest extends AbstractMapperTest
        }
 
        /**
+        *
+        */
+       @Test
+       public void decodeNamedParameters()
+       {
+               Url url = Url.parse(MOUNT_PATH + "/fooValue/barValue/" + 
PAGE_CLASS_NAME + "/i1/i2?15-ILinkListener-foo-bar&a=b&b=c");
+               IRequestHandler handler = 
namedParametersEncoder.mapRequest(getRequest(url));
+
+               assertTrue(handler instanceof ListenerInterfaceRequestHandler);
+               ListenerInterfaceRequestHandler h = 
(ListenerInterfaceRequestHandler)handler;
+
+               IRequestablePage page = h.getPage();
+               checkPage(page, 15);
+
+               assertEquals(ILinkListener.INTERFACE, h.getListenerInterface());
+               assertEquals("foo:bar", h.getComponent().getPageRelativePath());
+
+               PageParameters p = h.getPageParameters();
+               assertEquals(2, p.getIndexedCount());
+
+               assertEquals(4, p.getNamedKeys().size());
+               assertEquals("fooValue", p.get("foo").toString());
+               assertEquals("barValue", p.get("bar").toString());
+
+       }
+
+       /**
         * WICKET-2993
         */
        @Test
@@ -289,7 +326,7 @@ public class PackageMapperTest extends AbstractMapperTest
                provider.setPageSource(context);
                IRequestHandler handler = new 
BookmarkablePageRequestHandler(provider);
                Url url = encoder.mapHandler(handler);
-               assertEquals(PAGE_CLASS_NAME, url.toString());
+               assertEquals(MOUNT_PATH + '/' + PAGE_CLASS_NAME, 
url.toString());
        }
 
        /**
@@ -307,7 +344,7 @@ public class PackageMapperTest extends AbstractMapperTest
                provider.setPageSource(context);
                IRequestHandler handler = new 
BookmarkablePageRequestHandler(provider);
                Url url = encoder.mapHandler(handler);
-               assertEquals(PAGE_CLASS_NAME + "/i1/i2?a=b&b=c", 
url.toString());
+               assertEquals(MOUNT_PATH + '/' + PAGE_CLASS_NAME + 
"/i1/i2?a=b&b=c", url.toString());
        }
 
        /**
@@ -327,7 +364,7 @@ public class PackageMapperTest extends AbstractMapperTest
                IRequestHandler handler = new 
BookmarkablePageRequestHandler(provider);
                Url url = encoder.mapHandler(handler);
 
-               assertEquals(PAGE_CLASS_NAME + "/i1/i2?a=b&b=c", 
url.toString());
+               assertEquals(MOUNT_PATH + '/' + PAGE_CLASS_NAME + 
"/i1/i2?a=b&b=c", url.toString());
        }
 
        /**
@@ -347,7 +384,7 @@ public class PackageMapperTest extends AbstractMapperTest
                IRequestHandler handler = new 
RenderPageRequestHandler(provider);
                Url url = encoder.mapHandler(handler);
 
-               assertEquals(PAGE_CLASS_NAME + "/i1/i2?15&a=b&b=c", 
url.toString());
+               assertEquals(MOUNT_PATH + '/' + PAGE_CLASS_NAME + 
"/i1/i2?15&a=b&b=c", url.toString());
        }
 
        /**
@@ -398,7 +435,7 @@ public class PackageMapperTest extends AbstractMapperTest
 
                Url url = encoder.mapHandler(handler);
 
-               assertEquals(PAGE_CLASS_NAME + 
"/i1/i2?15-0.ILinkListener-foo-bar&a=b&b=c", url.toString());
+               assertEquals(MOUNT_PATH + '/' + PAGE_CLASS_NAME + 
"/i1/i2?15-0.ILinkListener-foo-bar&a=b&b=c", url.toString());
        }
 
        /**
@@ -425,7 +462,7 @@ public class PackageMapperTest extends AbstractMapperTest
 
                Url url = encoder.mapHandler(handler);
 
-               assertEquals(PAGE_CLASS_NAME + 
"/i1/i2?15-0.ILinkListener.4-foo-bar&a=b&b=c",
+               assertEquals(MOUNT_PATH + '/' + PAGE_CLASS_NAME + 
"/i1/i2?15-0.ILinkListener.4-foo-bar&a=b&b=c",
                        url.toString());
        }
 
@@ -445,11 +482,32 @@ public class PackageMapperTest extends AbstractMapperTest
 
                Url url = encoder.mapHandler(handler);
 
-               assertEquals(PAGE_CLASS_NAME, url.toString());
+               assertEquals(MOUNT_PATH + '/' + PAGE_CLASS_NAME, 
url.toString());
+       }
+
+       /**
+        *
+        */
+       @Test
+       public void encodeNamedPageParameters()
+       {
+               MockPage page = new MockPage(15);
+               page.setBookmarkable(true);
+               page.setCreatedBookmarkable(true);
+               page.setPageStateless(true);
+
+               IPageProvider provider = new PageProvider(page);
+               page.getPageParameters().set("foo", "fooValue");
+               page.getPageParameters().set("bar", "barValue");
+               IRequestHandler handler = new 
RenderPageRequestHandler(provider);
+
+               Url url = namedParametersEncoder.mapHandler(handler);
+
+               assertEquals(MOUNT_PATH + "/fooValue/barValue/" + 
PAGE_CLASS_NAME, url.toString());
        }
 
 
-       private final PackageMapper innerClassEncoder = new PackageMapper(
+       private final PackageMapper innerClassEncoder = new 
PackageMapper(MOUNT_PATH,
                PackageName.forClass(OuterPage.class))
        {
                @Override
@@ -481,7 +539,7 @@ public class PackageMapperTest extends AbstractMapperTest
 
                Url url = innerClassEncoder.mapHandler(handler);
 
-               assertEquals("PackageMapperTest$OuterPage$InnerPage", 
url.toString());
+               assertEquals(MOUNT_PATH + '/' + 
"PackageMapperTest$OuterPage$InnerPage", url.toString());
        }
 
        /**
@@ -490,7 +548,7 @@ public class PackageMapperTest extends AbstractMapperTest
        @Test
        public void decodeInnerClass()
        {
-               Url url = Url.parse("PackageMapperTest$OuterPage$InnerPage");
+               Url url = Url.parse(MOUNT_PATH + '/' + 
"PackageMapperTest$OuterPage$InnerPage");
                IRequestHandler handler = 
innerClassEncoder.mapRequest(getRequest(url));
 
                assertTrue(handler instanceof RenderPageRequestHandler);
@@ -516,7 +574,7 @@ public class PackageMapperTest extends AbstractMapperTest
 
                Url url = aliasEncoder.mapHandler(handler);
 
-               assertEquals(ALIAS, url.toString());
+               assertEquals(MOUNT_PATH + '/' + ALIAS, url.toString());
        }
 
        /**
@@ -525,7 +583,7 @@ public class PackageMapperTest extends AbstractMapperTest
        @Test
        public void decodeAlias()
        {
-               Url url = Url.parse(ALIAS + "?15");
+               Url url = Url.parse(MOUNT_PATH + '/' + ALIAS + "?15");
                IRequestHandler handler = 
aliasEncoder.mapRequest(getRequest(url));
 
                assertTrue(handler instanceof RenderPageRequestHandler);

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b4d9de3/wicket-request/src/main/java/org/apache/wicket/request/mapper/mount/MountMapper.java
----------------------------------------------------------------------
diff --git 
a/wicket-request/src/main/java/org/apache/wicket/request/mapper/mount/MountMapper.java
 
b/wicket-request/src/main/java/org/apache/wicket/request/mapper/mount/MountMapper.java
index 2bc619e..7fe6818 100644
--- 
a/wicket-request/src/main/java/org/apache/wicket/request/mapper/mount/MountMapper.java
+++ 
b/wicket-request/src/main/java/org/apache/wicket/request/mapper/mount/MountMapper.java
@@ -88,7 +88,8 @@ public class MountMapper extends AbstractMapper
        {
                if (urlStartsWith(request.getUrl(), mountSegments))
                {
-                       return mountSegments.length + 
mapper.getCompatibilityScore(dismountRequest(request));
+                       Request dismountedRequest = dismountRequest(request);
+                       return mountSegments.length + 
mapper.getCompatibilityScore(dismountedRequest);
                }
                else
                {
@@ -118,7 +119,7 @@ public class MountMapper extends AbstractMapper
        {
                final Url url = request.getUrl();
 
-               if ((url.getSegments().size() >= mountSegments.length) && 
urlStartsWith(url, mountSegments))
+               if (urlStartsWith(url, mountSegments))
                {
                        MountParameters params = new MountParameters();
                        for (int i = 0; i < mountSegments.length; i++)

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b4d9de3/wicket-request/src/main/java/org/apache/wicket/request/mapper/mount/UnmountedMapperAdapter.java
----------------------------------------------------------------------
diff --git 
a/wicket-request/src/main/java/org/apache/wicket/request/mapper/mount/UnmountedMapperAdapter.java
 
b/wicket-request/src/main/java/org/apache/wicket/request/mapper/mount/UnmountedMapperAdapter.java
index 397495c..7268c5f 100644
--- 
a/wicket-request/src/main/java/org/apache/wicket/request/mapper/mount/UnmountedMapperAdapter.java
+++ 
b/wicket-request/src/main/java/org/apache/wicket/request/mapper/mount/UnmountedMapperAdapter.java
@@ -20,6 +20,7 @@ import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.IRequestMapper;
 import org.apache.wicket.request.Request;
 import org.apache.wicket.request.Url;
+import org.apache.wicket.util.lang.Args;
 
 /**
  * Adapts a {@link IRequestMapper} to be used as a {@link 
IMountedRequestMapper}
@@ -36,25 +37,20 @@ class UnmountedMapperAdapter implements 
IMountedRequestMapper
         * Construct.
         * 
         * @param mapper
+        *      the request mapper to adapt
         */
        public UnmountedMapperAdapter(final IRequestMapper mapper)
        {
                super();
-               this.mapper = mapper;
+               this.mapper = Args.notNull(mapper, "mapper");
        }
 
-       /**
-        * @see 
org.apache.wicket.request.mapper.mount.IMountedRequestMapper#getCompatibilityScore(org.apache.wicket.request.Request)
-        */
        @Override
        public int getCompatibilityScore(final Request request)
        {
                return mapper.getCompatibilityScore(request);
        }
 
-       /**
-        * @see 
org.apache.wicket.request.mapper.mount.IMountedRequestMapper#mapHandler(org.apache.org.apache.wicket.request.IRequestHandler)
-        */
        @Override
        public Mount mapHandler(final IRequestHandler requestHandler)
        {
@@ -66,10 +62,6 @@ class UnmountedMapperAdapter implements IMountedRequestMapper
                return null;
        }
 
-       /**
-        * @see 
org.apache.wicket.request.mapper.mount.IMountedRequestMapper#mapRequest(org.apache.wicket.request.Request,
-        *      org.apache.wicket.request.mapper.mount.MountParameters)
-        */
        @Override
        public IRequestHandler mapRequest(final Request request, final 
MountParameters mountParams)
        {

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b4d9de3/wicket-request/src/main/java/org/apache/wicket/request/mapper/mount/UnmountedRequestHandlerAdapter.java
----------------------------------------------------------------------
diff --git 
a/wicket-request/src/main/java/org/apache/wicket/request/mapper/mount/UnmountedRequestHandlerAdapter.java
 
b/wicket-request/src/main/java/org/apache/wicket/request/mapper/mount/UnmountedRequestHandlerAdapter.java
index 932edbc..9a77e84 100644
--- 
a/wicket-request/src/main/java/org/apache/wicket/request/mapper/mount/UnmountedRequestHandlerAdapter.java
+++ 
b/wicket-request/src/main/java/org/apache/wicket/request/mapper/mount/UnmountedRequestHandlerAdapter.java
@@ -35,24 +35,19 @@ class UnmountedRequestHandlerAdapter implements 
IMountedRequestMapper
         * Construct.
         * 
         * @param handler
+        *      the request handler to adapt
         */
        public UnmountedRequestHandlerAdapter(final IRequestHandler handler)
        {
                this.handler = handler;
        }
 
-       /**
-        * @see 
org.apache.wicket.request.mapper.mount.IMountedRequestMapper#getCompatibilityScore(org.apache.wicket.request.Request)
-        */
        @Override
        public int getCompatibilityScore(final Request request)
        {
                return 0;
        }
 
-       /**
-        * @see 
org.apache.wicket.request.mapper.mount.IMountedRequestMapper#mapHandler(org.apache.org.apache.wicket.request.IRequestHandler)
-        */
        @Override
        public Mount mapHandler(final IRequestHandler requestHandler)
        {
@@ -63,10 +58,6 @@ class UnmountedRequestHandlerAdapter implements 
IMountedRequestMapper
                return null;
        }
 
-       /**
-        * @see 
org.apache.wicket.request.mapper.mount.IMountedRequestMapper#mapRequest(org.apache.wicket.request.Request,
-        *      org.apache.wicket.request.mapper.mount.MountParameters)
-        */
        @Override
        public IRequestHandler mapRequest(final Request request, final 
MountParameters mountParams)
        {

http://git-wip-us.apache.org/repos/asf/wicket/blob/8b4d9de3/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParametersEncoder.java
----------------------------------------------------------------------
diff --git 
a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParametersEncoder.java
 
b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParametersEncoder.java
index 8139460..d848668 100644
--- 
a/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParametersEncoder.java
+++ 
b/wicket-request/src/main/java/org/apache/wicket/request/mapper/parameter/PageParametersEncoder.java
@@ -33,9 +33,6 @@ public class PageParametersEncoder implements 
IPageParametersEncoder
        {
        }
 
-       /**
-        * @see 
IPageParametersEncoder#decodePageParameters(org.apache.wicket.request.Url)
-        */
        @Override
        public PageParameters decodePageParameters(final Url url)
        {
@@ -56,9 +53,6 @@ public class PageParametersEncoder implements 
IPageParametersEncoder
                return parameters.isEmpty() ? null : parameters;
        }
 
-       /**
-        * @see 
org.apache.wicket.request.mapper.parameter.IPageParametersEncoder#encodePageParameters(org.apache.wicket.request.mapper.parameter.PageParameters)
-        */
        @Override
        public Url encodePageParameters(final PageParameters pageParameters)
        {

Reply via email to