Class UriTemplate

java.lang.Object
com.google.api.client.http.UriTemplate

public class UriTemplate extends Object
Expands URI Templates. This Class supports Level 1 templates and all Level 4 composite templates as described in: RFC 6570. Specifically, for the variables: var := "value" list := ["red", "green", "blue"] keys := [("semi", ";"),("dot", "."),("comma", ",")] The following templates results in the following expansions: {var} -> value {list} -> red,green,blue {list*} -> red,green,blue {keys} -> semi,%3B,dot,.,comma,%2C {keys*} -> semi=%3B,dot=.,comma=%2C {+list} -> red,green,blue {+list*} -> red,green,blue {+keys} -> semi,;,dot,.,comma,, {+keys*} -> semi=;,dot=.,comma=, {#list} -> #red,green,blue {#list*} -> #red,green,blue {#keys} -> #semi,;,dot,.,comma,, {#keys*} -> #semi=;,dot=.,comma=, X{.list} -> X.red,green,blue X{.list*} -> X.red.green.blue X{.keys} -> X.semi,%3B,dot,.,comma,%2C X{.keys*} -> X.semi=%3B.dot=..comma=%2C {/list} -> /red,green,blue {/list*} -> /red/green/blue {/keys} -> /semi,%3B,dot,.,comma,%2C {/keys*} -> /semi=%3B/dot=./comma=%2C {;list} -> ;list=red,green,blue {;list*} -> ;list=red;list=green;list=blue {;keys} -> ;keys=semi,%3B,dot,.,comma,%2C {;keys*} -> ;semi=%3B;dot=.;comma=%2C {?list} -> ?list=red,green,blue {?list*} -> ?list=redinvalid input: '&list'=greeninvalid input: '&list'=blue {?keys} -> ?keys=semi,%3B,dot,.,comma,%2C {?keys*} -> ?semi=%3Binvalid input: '&dot'=.invalid input: '&comma'=%2C {invalid input: '&list'} -> invalid input: '&list'=red,green,blue {invalid input: '&list'*} -> invalid input: '&list'=redinvalid input: '&list'=greeninvalid input: '&list'=blue {invalid input: '&keys'} -> invalid input: '&keys'=semi,%3B,dot,.,comma,%2C {invalid input: '&keys'*} -> invalid input: '&semi'=%3Binvalid input: '&dot'=.invalid input: '&comma'=%2C {?var,list} -> ?var=valueinvalid input: '&list'=red,green,blue
Since:
1.6
  • Field Details

  • Constructor Details

    • UriTemplate

      public UriTemplate()
  • Method Details

    • getCompositeOutput

      static UriTemplate.CompositeOutput getCompositeOutput(String propertyName)
    • getMap

      private static Map<String,Object> getMap(Object obj)
      Constructs a new Map<String, Object> from an Object.

      There are no null values in the returned map.

    • expand

      public static String expand(String baseUrl, String uriTemplate, Object parameters, boolean addUnusedParamsAsQueryParams)
      Expands templates in a URI template that is relative to a base URL.

      If the URI template starts with a "/" the raw path from the base URL is stripped out. If the URI template is a full URL then it is used instead of the base URL.

      Supports Level 1 templates and all Level 4 composite templates as described in: RFC 6570.

      Parameters:
      baseUrl - The base URL which the URI component is relative to.
      uriTemplate - URI component. It may contain one or more sequences of the form "{name}", where "name" must be a key in variableMap.
      parameters - an object with parameters designated by Key annotations. If the template has no variable references, parameters may be null.
      addUnusedParamsAsQueryParams - If true then parameters that do not match the template are appended to the expanded template as query parameters.
      Returns:
      The expanded template
      Since:
      1.7
    • expand

      public static String expand(String pathUri, Object parameters, boolean addUnusedParamsAsQueryParams)
      Expands templates in a URI.

      Supports Level 1 templates and all Level 4 composite templates as described in: RFC 6570.

      Parameters:
      pathUri - URI component. It may contain one or more sequences of the form "{name}", where "name" must be a key in variableMap
      parameters - an object with parameters designated by Key annotations. If the template has no variable references, parameters may be null.
      addUnusedParamsAsQueryParams - If true then parameters that do not match the template are appended to the expanded template as query parameters.
      Returns:
      The expanded template
      Since:
      1.6
    • getListPropertyValue

      private static String getListPropertyValue(String varName, Iterator<?> iterator, boolean containsExplodeModifier, UriTemplate.CompositeOutput compositeOutput)
      Expand the template of a composite list property. Eg: If d := ["red", "green", "blue"] then {/d*} is expanded to "/red/green/blue"
      Parameters:
      varName - The name of the variable the value corresponds to. Eg: "d"
      iterator - The iterator over list values. Eg: ["red", "green", "blue"]
      containsExplodeModifier - Set to true if the template contains the explode modifier "*"
      compositeOutput - An instance of CompositeOutput. Contains information on how the expansion should be done
      Returns:
      The expanded list template
      Throws:
      IllegalArgumentException - if the required list path parameter is empty
    • getMapPropertyValue

      private static String getMapPropertyValue(String varName, Map<String,Object> map, boolean containsExplodeModifier, UriTemplate.CompositeOutput compositeOutput)
      Expand the template of a composite map property. Eg: If d := [("semi", ";"),("dot", "."),("comma", ",")] then {/d*} is expanded to "/semi=%3B/dot=./comma=%2C"
      Parameters:
      varName - The name of the variable the value corresponds to. Eg: "d"
      map - The map property value. Eg: [("semi", ";"),("dot", "."),("comma", ",")]
      containsExplodeModifier - Set to true if the template contains the explode modifier "*"
      compositeOutput - An instance of CompositeOutput. Contains information on how the expansion should be done
      Returns:
      The expanded map template
      Throws:
      IllegalArgumentException - if the required list path parameter is map