org.glassfish.jersey.uri
Class UriTemplate

java.lang.Object
  extended by org.glassfish.jersey.uri.UriTemplate
Direct Known Subclasses:
PathTemplate

public class UriTemplate
extends Object

A URI template.

Author:
Paul Sandoz, Martin Matula (martin.matula at oracle.com)

Field Summary
static Comparator<UriTemplate> COMPARATOR
          Order the templates according to JAX-RS specification.
static UriTemplate EMPTY
          The empty URI template that matches the null or empty URI path.
 
Constructor Summary
  UriTemplate(String template)
          Construct a new URI template.
protected UriTemplate(UriTemplateParser templateParser)
          Construct a new URI template.
 
Method Summary
 String createURI(Map<String,String> values)
          Create a URI by substituting any template variables for corresponding template values.
 String createURI(String... values)
          Create a URI by substituting any template variables for corresponding template values.
 String createURI(String[] values, int offset, int length)
          Create a URI by substituting any template variables for corresponding template values.
static String createURI(String scheme, String authority, String userInfo, String host, String port, String path, String query, String fragment, Map<String,?> values, boolean encode, boolean encodeSlashInPath)
          Construct a URI from the component parts each of which may contain template variables.
static String createURI(String scheme, String authority, String userInfo, String host, String port, String path, String query, String fragment, Object[] values, boolean encode, boolean encodeSlashInPath)
          Construct a URI from the component parts each of which may contain template variables.
static String createURIWithStringValues(String scheme, String authority, String userInfo, String host, String port, String path, String query, String fragment, Map<String,?> values, boolean encode, boolean encodeSlashInPath)
          Construct a URI from the component parts each of which may contain template variables.
static String createURIWithStringValues(String scheme, String authority, String userInfo, String host, String port, String path, String query, String fragment, String[] values, boolean encode, boolean encodeSlashInPath)
          Construct a URI from the component parts each of which may contain template variables.
 boolean endsWithSlash()
          Check if the URI template ends in a slash ('/').
 boolean equals(Object o)
          Equality is calculated from the String of the regular expression generated from the templates.
 int getNumberOfExplicitCharacters()
          Get the number of characters in the regular expression not resulting from conversion of template variables.
 int getNumberOfExplicitRegexes()
          Get the number of explicit regexes declared in template variables.
 int getNumberOfTemplateVariables()
          Get the number of template variables.
 PatternWithGroups getPattern()
          Get the URI pattern.
 String getTemplate()
          Get the URI template as a String.
 List<String> getTemplateVariables()
          Get the list of template variables for the template.
 int hashCode()
          Hashcode is calculated from String of the regular expression generated from the template.
 boolean isTemplateVariablePresent(String name)
          Ascertain if a template variable is a member of this template.
 boolean match(CharSequence uri, List<String> groupValues)
          Match a URI against the template.
 boolean match(CharSequence uri, Map<String,String> templateVariableToValue)
          Match a URI against the template.
static String resolveTemplateValues(UriComponent.Type type, String template, boolean encode, Map<String,?> _mapValues)
          Resolves template variables in the given template from _mapValues.
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

COMPARATOR

public static final Comparator<UriTemplate> COMPARATOR
Order the templates according to JAX-RS specification.

Sort the set of matching resource classes using the number of characters in the regular expression not resulting from template variables as the primary key, the number of matching groups as a secondary key, and the number of explicit regular expression declarations as the tertiary key.


EMPTY

public static final UriTemplate EMPTY
The empty URI template that matches the null or empty URI path.

Constructor Detail

UriTemplate

public UriTemplate(String template)
            throws PatternSyntaxException,
                   IllegalArgumentException
Construct a new URI template.

The template will be parsed to extract template variables.

A specific regular expression will be generated from the template to match URIs according to the template and map template variables to template values.

Parameters:
template - the template.
Throws:
PatternSyntaxException - if the specified regular expression could not be generated
IllegalArgumentException - if the template is null or an empty string.

UriTemplate

protected UriTemplate(UriTemplateParser templateParser)
               throws PatternSyntaxException,
                      IllegalArgumentException
Construct a new URI template.

The template will be parsed to extract template variables.

A specific regular expression will be generated from the template to match URIs according to the template and map template variables to template values.

Parameters:
templateParser - the parser to parse the template.
Throws:
PatternSyntaxException - if the specified regular expression could not be generated
IllegalArgumentException - if the template is null or an empty string.
Method Detail

getTemplate

public final String getTemplate()
Get the URI template as a String.

Returns:
the URI template.

getPattern

public final PatternWithGroups getPattern()
Get the URI pattern.

Returns:
the URI pattern.

endsWithSlash

public final boolean endsWithSlash()
Check if the URI template ends in a slash ('/').

Returns:
true if the template ends in a '/', otherwise false.

getTemplateVariables

public final List<String> getTemplateVariables()
Get the list of template variables for the template.

Returns:
the list of template variables.

isTemplateVariablePresent

public final boolean isTemplateVariablePresent(String name)
Ascertain if a template variable is a member of this template.

Parameters:
name - name The template variable.
Returns:
true if the template variable is a member of the template, otherwise false.

getNumberOfExplicitRegexes

public final int getNumberOfExplicitRegexes()
Get the number of explicit regexes declared in template variables.

Returns:
the number of explicit regexes.

getNumberOfExplicitCharacters

public final int getNumberOfExplicitCharacters()
Get the number of characters in the regular expression not resulting from conversion of template variables.

Returns:
the number of explicit characters

getNumberOfTemplateVariables

public final int getNumberOfTemplateVariables()
Get the number of template variables.

Returns:
the number of template variables.

match

public final boolean match(CharSequence uri,
                           Map<String,String> templateVariableToValue)
                    throws IllegalArgumentException
Match a URI against the template.

If the URI matches against the pattern then the template variable to value map will be filled with template variables as keys and template values as values.

Parameters:
uri - the uri to match against the template.
templateVariableToValue - the map where to put template variables (as keys) and template values (as values). The map is cleared before any entries are put.
Returns:
true if the URI matches the template, otherwise false.
Throws:
IllegalArgumentException - if the uri or templateVariableToValue is null.

match

public final boolean match(CharSequence uri,
                           List<String> groupValues)
                    throws IllegalArgumentException
Match a URI against the template.

If the URI matches against the pattern the capturing group values (if any) will be added to a list passed in as parameter.

Parameters:
uri - the uri to match against the template.
groupValues - the list to store the values of a pattern's capturing groups is matching is successful. The values are stored in the same order as the pattern's capturing groups.
Returns:
true if the URI matches the template, otherwise false.
Throws:
IllegalArgumentException - if the uri or templateVariableToValue is null.

createURI

public final String createURI(Map<String,String> values)
Create a URI by substituting any template variables for corresponding template values.

A URI template variable without a value will be substituted by the empty string.

Parameters:
values - the map of template variables to template values.
Returns:
the URI.

createURI

public final String createURI(String... values)
Create a URI by substituting any template variables for corresponding template values.

A URI template varibale without a value will be substituted by the empty string.

Parameters:
values - the array of template values. The values will be substituted in order of occurence of unique template variables.
Returns:
the URI.

createURI

public final String createURI(String[] values,
                              int offset,
                              int length)
Create a URI by substituting any template variables for corresponding template values.

A URI template variable without a value will be substituted by the empty string.

Parameters:
values - the array of template values. The values will be substituted in order of occurence of unique template variables.
offset - the offset into the array
length - the length of the array
Returns:
the URI.

toString

public final String toString()
Overrides:
toString in class Object

hashCode

public final int hashCode()
Hashcode is calculated from String of the regular expression generated from the template.

Overrides:
hashCode in class Object
Returns:
the hash code.

equals

public final boolean equals(Object o)
Equality is calculated from the String of the regular expression generated from the templates.

Overrides:
equals in class Object
Parameters:
o - the reference object with which to compare.
Returns:
true if equals, otherwise false.

createURI

public static String createURI(String scheme,
                               String authority,
                               String userInfo,
                               String host,
                               String port,
                               String path,
                               String query,
                               String fragment,
                               Map<String,?> values,
                               boolean encode,
                               boolean encodeSlashInPath)
Construct a URI from the component parts each of which may contain template variables.

A template values is an Object instance MUST support the toString() method to convert the template value to a String instance.

Parameters:
scheme - the URI scheme component.
authority - the URI authority component.
userInfo - the URI user info component.
host - the URI host component.
port - the URI port component.
path - the URI path component.
query - the URI query component.
fragment - the URI fragment component.
values - the template variable to value map.
encode - if true encode a template value according to the correspond component type of the associated template variable, otherwise contextually encode the template value.
encodeSlashInPath - if true, the slash ('/') characters in parameter values will be encoded if the template is placed in the URI path component, otherwise the slash characters will not be encoded in path templates.
Returns:
a URI.

createURIWithStringValues

public static String createURIWithStringValues(String scheme,
                                               String authority,
                                               String userInfo,
                                               String host,
                                               String port,
                                               String path,
                                               String query,
                                               String fragment,
                                               Map<String,?> values,
                                               boolean encode,
                                               boolean encodeSlashInPath)
Construct a URI from the component parts each of which may contain template variables.

A template value is an Object instance that MUST support the toString() method to convert the template value to a String instance.

Parameters:
scheme - the URI scheme component.
authority - the URI authority info component.
userInfo - the URI user info component.
host - the URI host component.
port - the URI port component.
path - the URI path component.
query - the URI query component.
fragment - the URI fragment component.
values - the template variable to value map.
encode - if true encode a template value according to the correspond component type of the associated template variable, otherwise contextually encode the template value.
encodeSlashInPath - if true, the slash ('/') characters in parameter values will be encoded if the template is placed in the URI path component, otherwise the slash characters will not be encoded in path templates.
Returns:
a URI.

createURI

public static String createURI(String scheme,
                               String authority,
                               String userInfo,
                               String host,
                               String port,
                               String path,
                               String query,
                               String fragment,
                               Object[] values,
                               boolean encode,
                               boolean encodeSlashInPath)
Construct a URI from the component parts each of which may contain template variables.

The template values are an array of Object and each Object instance MUST support the toString() method to convert the template value to a String instance.

Parameters:
scheme - the URI scheme component.
authority - the URI authority component.
userInfo - the URI user info component.
host - the URI host component.
port - the URI port component.
path - the URI path component.
query - the URI query component.
fragment - the URI fragment component.
values - the array of template values.
encode - if true encode a template value according to the correspond component type of the associated template variable, otherwise contextually encode the template value.
encodeSlashInPath - if true, the slash ('/') characters in parameter values will be encoded if the template is placed in the URI path component, otherwise the slash characters will not be encoded in path templates.
Returns:
a URI.

createURIWithStringValues

public static String createURIWithStringValues(String scheme,
                                               String authority,
                                               String userInfo,
                                               String host,
                                               String port,
                                               String path,
                                               String query,
                                               String fragment,
                                               String[] values,
                                               boolean encode,
                                               boolean encodeSlashInPath)
Construct a URI from the component parts each of which may contain template variables.

Parameters:
scheme - the URI scheme component.
authority - the URI authority component.
userInfo - the URI user info component.
host - the URI host component.
port - the URI port component.
path - the URI path component.
query - the URI query component.
fragment - the URI fragment component.
values - the array of template values.
encode - if true encode a template value according to the correspond component type of the associated template variable, otherwise contextually encode the template value.
encodeSlashInPath - if true, the slash ('/') characters in parameter values will be encoded if the template is placed in the URI path component, otherwise the slash characters will not be encoded in path templates.
Returns:
a URI.

resolveTemplateValues

public static String resolveTemplateValues(UriComponent.Type type,
                                           String template,
                                           boolean encode,
                                           Map<String,?> _mapValues)
Resolves template variables in the given template from _mapValues. Resolves only these variables which are defined in the _mapValues leaving other variables unchanged.

Parameters:
type - Type of the template (port, path, query, ...).
template - Input uri component to resolve.
encode - True if template values from _mapValues should be percent encoded.
_mapValues - Map with template variables as keys and template values as values. None of them should be null.
Returns:
String with resolved template variables.
Throws:
IllegalArgumentException - when _mapValues value is null.


Copyright © 2007-2013 Oracle Corporation. All Rights Reserved. Use is subject to license terms.