org.apache.wicket.request.mapper
Class AbstractBookmarkableMapper

java.lang.Object
  extended by org.apache.wicket.request.mapper.AbstractMapper
      extended by org.apache.wicket.request.mapper.AbstractComponentMapper
          extended by org.apache.wicket.request.mapper.AbstractBookmarkableMapper
All Implemented Interfaces:
IRequestMapper
Direct Known Subclasses:
BookmarkableMapper, MountedMapper, PackageMapper

public abstract class AbstractBookmarkableMapper
extends AbstractComponentMapper

Abstract encoder for Bookmarkable, Hybrid and BookmarkableListenerInterface URLs.

Author:
Matej Knopp

Nested Class Summary
protected static class AbstractBookmarkableMapper.UrlInfo
          Represents information stored in URL.
 
Constructor Summary
AbstractBookmarkableMapper()
          Construct.
 
Method Summary
protected abstract  Url buildUrl(AbstractBookmarkableMapper.UrlInfo info)
          Builds URL for the given AbstractBookmarkableMapper.UrlInfo instance.
protected  boolean checkPageClass(java.lang.Class<? extends IRequestablePage> pageClass)
           
abstract  int getCompatibilityScore(Request request)
          Returns the score representing how compatible this request mapper is to processing the given request.
 Url mapHandler(IRequestHandler requestHandler)
          Returns the Url for given IRequestHandler or null if the request handler is not recognized.
 IRequestHandler mapRequest(Request request)
          Returns IRequestHandler for the request or null if the Url is not recognized.
protected abstract  boolean pageMustHaveBeenCreatedBookmarkable()
          Indicates whether hybrid RenderPageRequestHandler URL for page will be generated only if page has been created with bookmarkable URL.
protected abstract  AbstractBookmarkableMapper.UrlInfo parseRequest(Request request)
          Parse the given request to an AbstractBookmarkableMapper.UrlInfo instance.
protected  IRequestHandler processBookmarkable(java.lang.Class<? extends IRequestablePage> pageClass, PageParameters pageParameters)
          Creates a IRequestHandler that processes a bookmarkable request.
protected  IRequestHandler processHybrid(PageInfo pageInfo, java.lang.Class<? extends IRequestablePage> pageClass, PageParameters pageParameters, java.lang.Integer renderCount)
          Creates a IRequestHandler that processes a hybrid request.
protected  IRequestHandler processListener(PageComponentInfo pageComponentInfo, java.lang.Class<? extends IRequestablePage> pageClass, PageParameters pageParameters)
          Creates a IRequestHandler that processes a listener request.
 
Methods inherited from class org.apache.wicket.request.mapper.AbstractComponentMapper
encodePageComponentInfo, getContext, getPageClass, getPageComponentInfo, removeMetaParameter, requestListenerInterfaceFromString, requestListenerInterfaceToString
 
Methods inherited from class org.apache.wicket.request.mapper.AbstractMapper
encodePageParameters, extractPageParameters, getMountSegments, getOptionalPlaceholder, getPlaceholder, getPlaceholder, urlStartsWith
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractBookmarkableMapper

public AbstractBookmarkableMapper()
Construct.

Method Detail

parseRequest

protected abstract AbstractBookmarkableMapper.UrlInfo parseRequest(Request request)
Parse the given request to an AbstractBookmarkableMapper.UrlInfo instance.

Parameters:
request -
Returns:
UrlInfo instance or null if this encoder can not handle the request

buildUrl

protected abstract Url buildUrl(AbstractBookmarkableMapper.UrlInfo info)
Builds URL for the given AbstractBookmarkableMapper.UrlInfo instance. The URL this method produces must be parseable by the parseRequest(Request) method.

Parameters:
info -
Returns:
Url result URL

pageMustHaveBeenCreatedBookmarkable

protected abstract boolean pageMustHaveBeenCreatedBookmarkable()
Indicates whether hybrid RenderPageRequestHandler URL for page will be generated only if page has been created with bookmarkable URL.

For generic bookmarkable encoders this method should return true. For explicit (mounted) encoders this method should return false

Returns:
true if hybrid URL requires page created bookmarkable, false otherwise.

getCompatibilityScore

public abstract int getCompatibilityScore(Request request)
Description copied from interface: IRequestMapper
Returns the score representing how compatible this request mapper is to processing the given request. When a request comes in all mappers are scored and are tried in order from highest score to lowest.

A good criteria for calculating the score is the number of matched url segments. For example when there are two mappers for a mounted page, one mapped to /foo another to /foo/bar and the incoming request URL is /foo/bar/baz, the mapping to /foo/bar should probably handle the request first as it has matching segments count of 2 while the first one has only matching segments count of 1.

Note that the method can return value greater then zero even if the mapper does not recognize the request.

Returns:
the compatibility score, e.g. count of matching segments
See Also:
IRequestMapper.getCompatibilityScore(Request)

processBookmarkable

protected IRequestHandler processBookmarkable(java.lang.Class<? extends IRequestablePage> pageClass,
                                              PageParameters pageParameters)
Creates a IRequestHandler that processes a bookmarkable request.

Parameters:
pageClass -
pageParameters -
Returns:
a IRequestHandler capable of processing the bookmarkable request.

processHybrid

protected IRequestHandler processHybrid(PageInfo pageInfo,
                                        java.lang.Class<? extends IRequestablePage> pageClass,
                                        PageParameters pageParameters,
                                        java.lang.Integer renderCount)
Creates a IRequestHandler that processes a hybrid request. When the page identified by pageInfo was not available, the request should be treated as a bookmarkable request.

Parameters:
pageInfo -
pageClass -
pageParameters -
renderCount -
Returns:
a IRequestHandler capable of processing the hybrid request.

processListener

protected IRequestHandler processListener(PageComponentInfo pageComponentInfo,
                                          java.lang.Class<? extends IRequestablePage> pageClass,
                                          PageParameters pageParameters)
Creates a IRequestHandler that processes a listener request.

Parameters:
pageComponentInfo -
pageClass -
pageParameters -
Returns:
a IRequestHandler that invokes the listener interface

mapRequest

public IRequestHandler mapRequest(Request request)
Description copied from interface: IRequestMapper
Returns IRequestHandler for the request or null if the Url is not recognized.

Parameters:
request - provides access to request data (i.e. Url and Parameters)
Returns:
RequestHandler instance or null
See Also:
IRequestMapper.mapRequest(org.apache.wicket.request.Request)

checkPageClass

protected boolean checkPageClass(java.lang.Class<? extends IRequestablePage> pageClass)

mapHandler

public Url mapHandler(IRequestHandler requestHandler)
Returns the Url for given IRequestHandler or null if the request handler is not recognized.

Returns:
Url instance or null.


Copyright © 2006-2011 Apache Software Foundation. All Rights Reserved.