org.apache.wicket.request.mapper
Class CryptoMapper

java.lang.Object
  extended by org.apache.wicket.request.mapper.CryptoMapper
All Implemented Interfaces:
IRequestMapper

public class CryptoMapper
extends java.lang.Object
implements IRequestMapper

Request mapper that encrypts urls generated by another mapper. The original URL (both segments and parameters) is encrypted and is represented as URL segment. To be able to handle relative URLs for images in .css file the same amount of URL segments that the original URL had are appended to the encrypted URL. Each segment has a precise 5 character value, calculated using a checksum. This helps in calculating the relative distance from the original URL. When a URL is returned by the browser, we iterate through these checksummed placeholder URL segments. If the segment matches the expected checksum, then the segment it deemed to be the corresponding segment in the encrypted URL. If the segment does not match the expected checksum, then the segment is deemed a plain text sibling of the corresponding segment in the encrypted URL, and all subsequent segments are considered plain text children of the current segment.

Author:
igor.vaynberg, Jesse Long, svenmeier

Constructor Summary
CryptoMapper(IRequestMapper wrappedMapper, Application application)
          Construct.
CryptoMapper(IRequestMapper wrappedMapper, IProvider<ICrypt> cryptProvider)
          Construct.
 
Method Summary
 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CryptoMapper

public CryptoMapper(IRequestMapper wrappedMapper,
                    Application application)
Construct.

Parameters:
wrappedMapper - the non-crypted request mapper
application - the current application

CryptoMapper

public CryptoMapper(IRequestMapper wrappedMapper,
                    IProvider<ICrypt> cryptProvider)
Construct.

Parameters:
wrappedMapper - the non-crypted request mapper
cryptProvider - the custom crypt provider
Method Detail

getCompatibilityScore

public 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.

Specified by:
getCompatibilityScore in interface IRequestMapper
Returns:
the compatibility score, e.g. count of matching segments

mapHandler

public Url mapHandler(IRequestHandler requestHandler)
Description copied from interface: IRequestMapper
Returns the Url for given IRequestHandler or null if the request handler is not recognized.

Specified by:
mapHandler in interface IRequestMapper
Returns:
Url instance or null.

mapRequest

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

Specified by:
mapRequest in interface IRequestMapper
Parameters:
request - provides access to request data (i.e. Url and Parameters)
Returns:
RequestHandler instance or null


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