Package: org.grails.web.mapping

## [Java] Class RegexUrlMapping

- org.grails.web.mapping.RegexUrlMapping

- 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

  Authors:
    Graeme Rocher
  See Also:
    org.springframework.util.AntPathMatcher
  Since:
    0.5

- - ### Field Summary

    Fields
    Modifiers | Name | Description
    --- | --- | ---
    `static java.util.regex.Pattern` | `DOUBLE_WILDCARD_PATTERN` |
    `static java.lang.String` | `FORMAT_PARAMETER` |
    `static java.util.regex.Pattern` | `OPTIONAL_EXTENSION_WILDCARD_PATTERN` |

  - Inherited fields
    Fields inherited from class | Fields
    --- | ---
    `class AbstractUrlMapping` | `actionName, constraints, controllerName, forwardURI, grailsApplication, httpMethod, mappingName, namespace, parameterValues, parseRequest, pluginIndex, pluginName, redirectInfo, servletContext, version, viewName`

  - ### Constructor Summary

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

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `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.
    `` | `java.lang.String` | `createRelativeURL(java.lang.String controller, java.lang.String action, java.util.Map paramValues, java.lang.String encoding)`
    `` | `java.lang.String` | `createRelativeURL(java.lang.String controller, java.lang.String action, java.lang.String pluginName, java.util.Map paramValues, java.lang.String encoding)`
    `` | `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` | `createRelativeURL(java.lang.String controller, java.lang.String action, java.util.Map paramValues, java.lang.String encoding, java.lang.String fragment)`
    `` | `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)`
    `` | `java.lang.String` | `createURL(java.util.Map paramValues, java.lang.String encoding)` @see grails.web.mapping.UrlMapping
    `` | `java.lang.String` | `createURL(java.util.Map paramValues, java.lang.String encoding, java.lang.String fragment)`
    `` | `java.lang.String` | `createURL(java.lang.String controller, java.lang.String action, java.util.Map paramValues, java.lang.String encoding)`
    `` | `java.lang.String` | `createURL(java.lang.String controller, java.lang.String action, java.lang.String pluginName, java.util.Map parameterValues, java.lang.String encoding)`
    `` | `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` | `createURL(java.lang.String controller, java.lang.String action, java.util.Map paramValues, java.lang.String encoding, java.lang.String fragment)`
    `` | `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)`
    `` | `protected java.lang.String` | `encode(java.lang.String s, java.lang.String encoding)`
    `` | `java.lang.String[]` | `getLogicalMappings()`
    `` | `UrlMappingData` | `getUrlData()`
    `` | `UrlMappingInfo` | `match(java.lang.String uri)` Matches the given URI and returns a DefaultUrlMappingInfo instance or null
    `` | `java.lang.String` | `toString()`

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class AbstractUrlMapping` | `getActionName, getConstraints, getControllerName, getHttpMethod, getMappingName, getNamespace, getPluginIndex, getPluginName, getRedirectInfo, getVersion, getViewName, hasRuntimeVariable, isDefinedInPlugin, setMappingName, setParameterValues, setParseRequest, setPluginIndex`
    `class java.lang.Object` | `java.lang.Object#wait(long, int), java.lang.Object#wait(long), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll()`

- - ### Field Detail

    - #### public static final java.util.regex.Pattern DOUBLE_WILDCARD_PATTERN

    - #### public static final java.lang.String FORMAT_PARAMETER

    - #### public static final java.util.regex.Pattern OPTIONAL_EXTENSION_WILDCARD_PATTERN

  - ### Constructor Detail

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

      Parameters:
        `data` - The pattern
        `uri` - The URI
        `constraints` - Any constraints etc.
        `grailsApplication` - The GrailsApplication instance

    - #### public 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)

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

      Parameters:
        `data` - An instance of the UrlMappingData class that holds necessary information of the URL mapping
        `controllerName` - The name of the controller the URL maps to (required)
        `actionName` - The name of the action the URL maps to
        `namespace` - The controller namespace
        `pluginName` - The name of the plugin which provided the controller
        `viewName` - 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 mapping
        `httpMethod` - The http method
        `version` - The version
        `constraints` - A list of ConstrainedProperty instances that relate to tokens in the URL
        `grailsApplication` - The Grails application
      See Also:
        grails.gorm.validation.ConstrainedProperty

  - ### Method Detail

    - #### public int compareTo(java.lang.Object o)

      Compares 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/(*)

      Parameters:
        `o` - An instance of the UrlMapping interface
      Returns:
        greater than 0 if this UrlMapping should match before the specified UrlMapping. 0 if they are equal or less than 0 if this UrlMapping should match after the given UrlMapping

    - #### protected java.util.regex.Pattern convertToRegex(java.lang.String url)

      Converts a Grails URL provides via the UrlMappingData interface to a regular expression.

      Parameters:
        `url` - The URL to convert
      Returns:
        A regex Pattern objet

    - #### 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)

    - #### public java.lang.String createURL(java.util.Map paramValues, java.lang.String encoding)

      See Also:
        UrlMapping

    - #### 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)

    - #### protected java.lang.String encode(java.lang.String s, java.lang.String encoding)

    - #### public java.lang.String[] getLogicalMappings()

    - #### public UrlMappingData getUrlData()

    - #### public UrlMappingInfo match(java.lang.String uri)

      Matches the given URI and returns a DefaultUrlMappingInfo instance or null

      Parameters:
        `uri` - The URI to match
      Returns:
        A UrlMappingInfo instance or null
      See Also:
        UrlMappingInfo

    - #### @java.lang.Override public java.lang.String toString()