@java.lang.SuppressWarnings("rawtypes")
public class RegexUrlMapping
extends AbstractUrlMapping
A UrlMapping implementation that takes a Grails URL pattern and turns it into a regex matcher so that URLs can be matched and information captured from the match.
A Grails URL pattern is not a regex, but is an extension to the form defined by Apache Ant and used by Spring AntPathMatcher. Unlike regular Ant paths Grails URL patterns allow for capturing groups in the form:
/blog/(*)/**
The parenthesis define a capturing group. This implementation transforms regular Ant paths into regular expressions that are able to use capturing groups
| Modifiers | Name | Description |
|---|---|---|
private static java.lang.String |
DEFAULT_ENCODING |
|
static java.util.regex.Pattern |
DOUBLE_WILDCARD_PATTERN |
|
static java.lang.String |
FORMAT_PARAMETER |
|
private static org.slf4j.Logger |
LOG |
|
static java.util.regex.Pattern |
OPTIONAL_EXTENSION_WILDCARD_PATTERN |
|
private java.util.Map<java.lang.Integer, java.util.List<java.util.regex.Pattern>> |
patternByTokenCount |
|
private java.util.regex.Pattern[] |
patterns |
|
private static long |
serialVersionUID |
|
private UrlMappingData |
urlData |
| Fields inherited from class | Fields |
|---|---|
class AbstractUrlMapping |
actionName, constraints, controllerName, forwardURI, grailsApplication, httpMethod, mappingName, namespace, parameterValues, parseRequest, pluginIndex, pluginName, redirectInfo, servletContext, version, viewName |
| Constructor and description |
|---|
RegexUrlMapping
(UrlMappingData data, java.net.URI uri, grails.gorm.validation.ConstrainedProperty[] constraints, GrailsApplication grailsApplication)Constructs a new RegexUrlMapping for the given pattern that maps to the specified URI |
RegexUrlMapping
(UrlMappingData data, java.lang.Object controllerName, java.lang.Object actionName, java.lang.Object namespace, java.lang.Object pluginName, java.lang.Object viewName, java.lang.String httpMethod, java.lang.String version, grails.gorm.validation.ConstrainedProperty[] constraints, GrailsApplication grailsApplication) |
RegexUrlMapping
(java.lang.Object redirectInfo, UrlMappingData data, java.lang.Object controllerName, java.lang.Object actionName, java.lang.Object namespace, java.lang.Object pluginName, java.lang.Object viewName, java.lang.String httpMethod, java.lang.String version, grails.gorm.validation.ConstrainedProperty[] constraints, GrailsApplication grailsApplication)Constructs a new RegexUrlMapping for the given pattern, controller name, action name and constraints. |
| Type Params | Return Type | Name and description |
|---|---|---|
|
private void |
appendValueToURI(java.lang.String encoding, java.lang.StringBuilder uri, java.lang.String name, java.lang.Object value) |
|
public java.lang.Object |
call(java.lang.Object objects) |
|
public int |
compareTo(java.lang.Object o)Compares this UrlMapping instance with the specified UrlMapping instance and deals with URL mapping precedence rules. |
|
protected java.util.regex.Pattern |
convertToRegex(java.lang.String url)Converts a Grails URL provides via the UrlMappingData interface to a regular expression. |
|
public java.lang.String |
createRelativeURL(java.lang.String controller, java.lang.String action, java.util.Map paramValues, java.lang.String encoding) |
|
public java.lang.String |
createRelativeURL(java.lang.String controller, java.lang.String action, java.lang.String pluginName, java.util.Map paramValues, java.lang.String encoding) |
|
public java.lang.String |
createRelativeURL(java.lang.String controller, java.lang.String action, java.lang.String namespace, java.lang.String pluginName, java.util.Map paramValues, java.lang.String encoding) |
|
public java.lang.String |
createRelativeURL(java.lang.String controller, java.lang.String action, java.util.Map paramValues, java.lang.String encoding, java.lang.String fragment) |
|
public java.lang.String |
createRelativeURL(java.lang.String controller, java.lang.String action, java.lang.String namespace, java.lang.String pluginName, java.util.Map paramValues, java.lang.String encoding, java.lang.String fragment) |
|
private java.lang.Object |
createRuntimeConstraintEvaluator(java.lang.String name, grails.gorm.validation.ConstrainedProperty[] constraints)This method will look for a constraint for the given name and return a closure that when executed will attempt to evaluate its value from the bound request parameters at runtime. |
|
public java.lang.String |
createURL(java.util.Map paramValues, java.lang.String encoding)
|
|
public java.lang.String |
createURL(java.util.Map paramValues, java.lang.String encoding, java.lang.String fragment) |
|
public java.lang.String |
createURL(java.lang.String controller, java.lang.String action, java.util.Map paramValues, java.lang.String encoding) |
|
public java.lang.String |
createURL(java.lang.String controller, java.lang.String action, java.lang.String pluginName, java.util.Map parameterValues, java.lang.String encoding) |
|
public java.lang.String |
createURL(java.lang.String controller, java.lang.String action, java.lang.String namespace, java.lang.String pluginName, java.util.Map paramValues, java.lang.String encoding) |
|
public java.lang.String |
createURL(java.lang.String controller, java.lang.String action, java.util.Map paramValues, java.lang.String encoding, java.lang.String fragment) |
|
public java.lang.String |
createURL(java.lang.String controller, java.lang.String action, java.lang.String namespace, java.lang.String pluginName, java.util.Map paramValues, java.lang.String encoding, java.lang.String fragment) |
|
private java.lang.String |
createURLInternal(java.util.Map paramValues, java.lang.String encoding, boolean includeContextPath) |
|
private java.lang.String |
createURLInternal(java.lang.String controller, java.lang.String action, java.lang.String namespace, java.lang.String pluginName, java.util.Map paramValues, java.lang.String encoding, boolean includeContextPath) |
|
private UrlMappingInfo |
createUrlMappingInfo(java.lang.String uri, Matcher m) |
|
private java.lang.String |
createUrlWithFragment(java.lang.String url, java.lang.String fragment, java.lang.String encoding) |
|
protected java.lang.String |
encode(java.lang.String s, java.lang.String encoding) |
|
private int |
evaluatePluginOrder(UrlMapping other) |
|
private int |
getAppliedConstraintsCount(UrlMapping mapping) |
|
private int |
getDoubleWildcardCount(UrlMapping mapping) |
|
public java.lang.String[] |
getLogicalMappings() |
|
private int |
getSingleWildcardCount(UrlMapping mapping) |
|
private int |
getStaticAndWildcardTokenCount(UrlMapping mapping) |
|
private int |
getStaticTokenCount(UrlMapping mapping) |
|
public UrlMappingData |
getUrlData() |
|
private boolean |
isDoubleWildcard(java.lang.String token) |
|
private boolean |
isSingleWildcard(java.lang.String token) |
|
public UrlMappingInfo |
match(java.lang.String uri)Matches the given URI and returns a DefaultUrlMappingInfo instance or null |
|
private void |
parse(UrlMappingData data, grails.gorm.validation.ConstrainedProperty[] constraints) |
|
private void |
populateParameterList(java.util.Map paramValues, java.lang.String encoding, java.lang.StringBuilder uri, java.util.Set usedParams) |
|
private void |
setNullable(grails.gorm.validation.ConstrainedProperty constraint) |
|
public java.lang.String |
toString() |
| Methods inherited from class | Name |
|---|---|
class AbstractUrlMapping |
getActionName, getConstraints, getControllerName, getHttpMethod, getMappingName, getNamespace, getPluginIndex, getPluginName, getRedirectInfo, getVersion, getViewName, hasRuntimeVariable, isDefinedInPlugin, setGrailsApplication, setMappingName, setParameterValues, setParseRequest, setPluginIndex |
Constructs a new RegexUrlMapping for the given pattern that maps to the specified URI
data - The patternuri - The URIconstraints - Any constraints etc.grailsApplication - The GrailsApplication instanceConstructs a new RegexUrlMapping for the given pattern, controller name, action name and constraints.
data - An instance of the UrlMappingData class that holds necessary information of the URL mappingcontrollerName - The name of the controller the URL maps to (required)actionName - The name of the action the URL maps tonamespace - The controller namespacepluginName - The name of the plugin which provided the controllerviewName - The name of the view as an alternative to the name of the action. If the action is specified it takes precedence over the view name during mappinghttpMethod - The http methodversion - The versionconstraints - A list of ConstrainedProperty instances that relate to tokens in the URLgrailsApplication - The Grails applicationCompares this UrlMapping instance with the specified UrlMapping instance and deals with URL mapping precedence rules. URL Mapping Precedence Order 1. Less wildcard tokens. /foo <- match /foo/(*) /foo/(*)/bar/ <- match /foo/(*)/(*) 2. More static tokens. /foo/(*)/bar <- match /foo/(*)
o - An instance of the UrlMapping interfaceConverts a Grails URL provides via the UrlMappingData interface to a regular expression.
url - The URL to convertThis method will look for a constraint for the given name and return a closure that when executed will attempt to evaluate its value from the bound request parameters at runtime.
name - The name of the constrained propertyconstraints - The array of current ConstrainedProperty instances
Matches the given URI and returns a DefaultUrlMappingInfo instance or null
uri - The URI to match