Module org.apache.wicket.request
Package org.apache.wicket.request.mapper
Class CompoundRequestMapper
java.lang.Object
org.apache.wicket.request.mapper.CompoundRequestMapper
- All Implemented Interfaces:
Iterable<IRequestMapper>,IRequestMapper,ICompoundRequestMapper
Thread safe compound
IRequestMapper. The mappers are searched depending on their
compatibility score and the orders they were registered. If two or more IRequestMappers
have the same compatibility score, the last registered mapper has highest priority.- Author:
- igor.vaynberg, Matej Knopp
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionadd(IRequestMapper mapper) Registers aIRequestMapperintgetCompatibilityScore(Request request) The scope of the compound mapper is the highest score of the registered mappers.iterator()mapHandler(IRequestHandler handler) Searches the registeredIRequestMappers to find one that can map theIRequestHandler.mapRequest(Request request) Searches the registeredIRequestMappers to find one that can map theRequest.remove(IRequestMapper mapper) Unregisters aIRequestMapperMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
CompoundRequestMapper
public CompoundRequestMapper()
-
-
Method Details
-
add
Description copied from interface:ICompoundRequestMapperRegisters aIRequestMapper- Specified by:
addin interfaceICompoundRequestMapper- Returns:
thisfor chaining
-
remove
Description copied from interface:ICompoundRequestMapperUnregisters aIRequestMapper- Specified by:
removein interfaceICompoundRequestMapper- Returns:
thisfor chaining
-
mapRequest
Searches the registeredIRequestMappers to find one that can map theRequest. Each registeredIRequestMapperis asked to provide its compatibility score. Then the mappers are asked to map the request in order depending on the provided compatibility score.The mapper with highest compatibility score which can map the request is returned.
- Specified by:
mapRequestin interfaceIRequestMapper- Parameters:
request-- Returns:
- RequestHandler for the request or
nullif no mapper for the request is found.
-
mapHandler
Searches the registeredIRequestMappers to find one that can map theIRequestHandler. Each registeredIRequestMapperis asked to map theIRequestHandleruntil a mapper which can map theIRequestHandleris found or no more mappers are left.The mappers are searched in reverse order as they have been registered. More recently registered mappers have bigger priority.
- Specified by:
mapHandlerin interfaceIRequestMapper- Parameters:
handler-- Returns:
- Url for the handler or
nullif no mapper for the handler is found.
-
getCompatibilityScore
The scope of the compound mapper is the highest score of the registered mappers. 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
/fooanother to/foo/barand the incoming request URL is /foo/bar/baz, the mapping to/foo/barshould 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:
getCompatibilityScorein interfaceIRequestMapper- Returns:
- the compatibility score, e.g. count of matching segments
-
iterator
- Specified by:
iteratorin interfaceIterable<IRequestMapper>
-