org.codehaus.groovy.grails.web.mapping
Class RegexUrlMapping

java.lang.Object
  extended by org.codehaus.groovy.grails.web.mapping.AbstractUrlMapping
      extended by org.codehaus.groovy.grails.web.mapping.RegexUrlMapping
All Implemented Interfaces:
Comparable, UrlCreator, UrlMapping

public class RegexUrlMapping
extends AbstractUrlMapping
implements UrlMapping

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

Since:
0.5

Created: Feb 28, 2007 Time: 6:12:52 PM

Author:
Graeme Rocher
See Also:
AntPathMatcher

Field Summary
 
Fields inherited from class org.codehaus.groovy.grails.web.mapping.AbstractUrlMapping
actionName, constraints, controllerName, forwardURI, mappingName, parameterValues, parseRequest, restful, servletContext, viewName
 
Fields inherited from interface org.codehaus.groovy.grails.web.mapping.UrlMapping
ACTION, CONTROLLER
 
Constructor Summary
RegexUrlMapping(UrlMappingData data, Object controllerName, Object actionName, Object viewName, ConstrainedProperty[] constraints, ServletContext servletContext)
          Constructs a new RegexUrlMapping for the given pattern, controller name, action name and constraints.
RegexUrlMapping(UrlMappingData data, URI uri, ConstrainedProperty[] constraints, ServletContext servletContext)
          Constructs a new RegexUrlMapipng for the given pattern that maps to the specified URI
 
Method Summary
 int compareTo(Object o)
          Compares this UrlMapping instance with the specified UrlMapping instance and deals with URL mapping precedence rules.
protected  Pattern convertToRegex(String url)
          Converst a Grails URL provides via the UrlMappingData interface to a regular expression
 String createRelativeURL(String controller, String action, Map parameterValues, String encoding)
          Creates a URL for the given parameters values, controller and action names without the context path information
 String createRelativeURL(String controller, String action, Map parameterValues, String encoding, String fragment)
          Creates a URL for the given parameters values, controller and action names without the context path information
 String createURL(Map parameterValues, String encoding)
          Creates a URL for the given parameter values
 String createURL(Map parameterValues, String encoding, String fragment)
          Creates a URL for the given parameter values
 String createURL(String controller, String action, Map parameterValues, String encoding)
          Creates a URL for the given parameters values, controller and action names
 String createURL(String controller, String action, Map parameterValues, String encoding, String fragment)
          Creates a URL for the given parameters values, controller and action names
 String[] getLogicalMappings()
           
 UrlMappingData getUrlData()
          Retrieves the UrlMappingData instance that describes this UrlMapping
 UrlMappingInfo match(String uri)
          Matches the given URI and returns a DefaultUrlMappingInfo instance or null
 String toString()
           
 
Methods inherited from class org.codehaus.groovy.grails.web.mapping.AbstractUrlMapping
getActionName, getConstraints, getControllerName, getMappingName, getViewName, hasRuntimeVariable, isRestfulMapping, setMappingName, setParameterValues, setParseRequest, setRestfulMapping
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.codehaus.groovy.grails.web.mapping.UrlMapping
getActionName, getConstraints, getControllerName, getMappingName, getViewName, hasRuntimeVariable, isRestfulMapping, setMappingName, setParameterValues, setParseRequest, setRestfulMapping
 

Constructor Detail

RegexUrlMapping

public RegexUrlMapping(UrlMappingData data,
                       Object controllerName,
                       Object actionName,
                       Object viewName,
                       ConstrainedProperty[] constraints,
                       ServletContext servletContext)
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
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
constraints - A list of ConstrainedProperty instances that relate to tokens in the URL
servletContext -
See Also:
ConstrainedProperty

RegexUrlMapping

public RegexUrlMapping(UrlMappingData data,
                       URI uri,
                       ConstrainedProperty[] constraints,
                       ServletContext servletContext)
Constructs a new RegexUrlMapipng for the given pattern that maps to the specified URI

Parameters:
data - The pattern
uri - The URI
constraints - Any constraints etc.
servletContext - The servlet context
Method Detail

convertToRegex

protected Pattern convertToRegex(String url)
Converst a Grails URL provides via the UrlMappingData interface to a regular expression

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

match

public UrlMappingInfo match(String uri)
Matches the given URI and returns a DefaultUrlMappingInfo instance or null

Specified by:
match in interface UrlMapping
Parameters:
uri - The URI to match
Returns:
A UrlMappingInfo instance or null
See Also:
UrlMappingInfo

createURL

public String createURL(Map parameterValues,
                        String encoding)
Description copied from interface: UrlCreator
Creates a URL for the given parameter values

Specified by:
createURL in interface UrlCreator
Parameters:
parameterValues - The parameter values
encoding - The encoding to use for parameters
Returns:
Returns the created URL for the given parameter values
See Also:
UrlMapping

createURL

public String createURL(Map parameterValues,
                        String encoding,
                        String fragment)
Description copied from interface: UrlCreator
Creates a URL for the given parameter values

Specified by:
createURL in interface UrlCreator
Parameters:
parameterValues - The parameter values
encoding - The encoding to use for parameters
fragment - The URL fragment to be appended to the URL following a #
Returns:
Returns the created URL for the given parameter values

createURL

public String createURL(String controller,
                        String action,
                        Map parameterValues,
                        String encoding)
Description copied from interface: UrlCreator
Creates a URL for the given parameters values, controller and action names

Specified by:
createURL in interface UrlCreator
Parameters:
controller - The controller name
action - The action name
parameterValues - The parameter values
encoding - The encoding to use for parameters
Returns:
The created URL for the given arguments

createRelativeURL

public String createRelativeURL(String controller,
                                String action,
                                Map parameterValues,
                                String encoding)
Description copied from interface: UrlCreator
Creates a URL for the given parameters values, controller and action names without the context path information

Specified by:
createRelativeURL in interface UrlCreator
Parameters:
controller - The controller name
action - The action name
parameterValues - The parameter values
encoding - The encoding to use for parameters
Returns:
The created URL for the given arguments

createRelativeURL

public String createRelativeURL(String controller,
                                String action,
                                Map parameterValues,
                                String encoding,
                                String fragment)
Description copied from interface: UrlCreator
Creates a URL for the given parameters values, controller and action names without the context path information

Specified by:
createRelativeURL in interface UrlCreator
Parameters:
controller - The controller name
action - The action name
parameterValues - The parameter values
encoding - The encoding to use for parameters
fragment - The fragment to append to the end
Returns:
The created URL for the given arguments

createURL

public String createURL(String controller,
                        String action,
                        Map parameterValues,
                        String encoding,
                        String fragment)
Description copied from interface: UrlCreator
Creates a URL for the given parameters values, controller and action names

Specified by:
createURL in interface UrlCreator
Parameters:
controller - The controller name
action - The action name
parameterValues - The parameter values
encoding - The encoding to use for parameters
fragment - The URL fragment to be appended to the URL following a #
Returns:
The created URL for the given arguments

getUrlData

public UrlMappingData getUrlData()
Description copied from interface: UrlMapping
Retrieves the UrlMappingData instance that describes this UrlMapping

Specified by:
getUrlData in interface UrlMapping
Returns:
The UrlMappingData instance

getLogicalMappings

public String[] getLogicalMappings()

compareTo

public int compareTo(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/(*)

Specified by:
compareTo in interface Comparable
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

toString

public String toString()
Overrides:
toString in class Object


Copyright (c) 2005-2009 The Grails project