@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