feign
Class RequestTemplate

java.lang.Object
  extended by feign.RequestTemplate
All Implemented Interfaces:
java.io.Serializable

public final class RequestTemplate
extends java.lang.Object
implements java.io.Serializable

Builds a request to an http target. Not thread safe.

relationship to JAXRS 2.0

A combination of javax.ws.rs.client.WebTarget and javax.ws.rs.client.Invocation.Builder, ensuring you can modify any part of the request. However, this object is mutable, so needs to be guarded with the copy constructor.

See Also:
Serialized Form

Nested Class Summary
static interface RequestTemplate.Body
          A templatized form for a PUT or POST command.
 
Constructor Summary
RequestTemplate()
           
RequestTemplate(RequestTemplate toCopy)
           
 
Method Summary
 RequestTemplate append(java.lang.CharSequence value)
           
 com.google.common.base.Optional<java.lang.String> body()
           
 RequestTemplate body(java.lang.String body)
          replaces the HttpHeaders.CONTENT_LENGTH header.
 com.google.common.base.Optional<java.lang.String> bodyTemplate()
           
 RequestTemplate bodyTemplate(java.lang.String bodyTemplate)
          populated by RequestTemplate.Body
 boolean equals(java.lang.Object obj)
           
static java.lang.String expand(java.lang.String template, java.util.Map<java.lang.String,?> variables)
          Expands a template, such as username, using the variables supplied.
 int hashCode()
           
 RequestTemplate header(java.lang.String configKey, java.lang.Iterable<java.lang.String> values)
           
 RequestTemplate header(java.lang.String configKey, java.lang.String... values)
          Replaces headers with the specified configKey with the values supplied.
 com.google.common.collect.ListMultimap<java.lang.String,java.lang.String> headers()
          Returns an immutable copy of the current headers.
 RequestTemplate headers(com.google.common.collect.Multimap<java.lang.String,java.lang.String> headers)
          Replaces all existing headers with the newly supplied headers.
 RequestTemplate insert(int pos, java.lang.CharSequence value)
           
 java.lang.String method()
           
 RequestTemplate method(java.lang.String method)
           
 com.google.common.collect.ListMultimap<java.lang.String,java.lang.String> queries()
          Returns an immutable copy of the url decoded queries.
 RequestTemplate queries(com.google.common.collect.Multimap<java.lang.String,java.lang.String> queries)
          Replaces all existing queries with the newly supplied url decoded queries.
 RequestTemplate query(java.lang.String configKey, java.lang.Iterable<java.lang.String> values)
           
 RequestTemplate query(java.lang.String configKey, java.lang.String... values)
          Replaces queries with the specified configKey with url decoded values supplied.
 java.lang.String queryLine()
           
 Request request()
           
 RequestTemplate resolve(java.util.Map<java.lang.String,?> unencoded)
          Targets a template to this target, adding the base url and any authentication headers.
 java.lang.String toString()
           
 java.lang.String url()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

RequestTemplate

public RequestTemplate()

RequestTemplate

public RequestTemplate(RequestTemplate toCopy)
Method Detail

resolve

public RequestTemplate resolve(java.util.Map<java.lang.String,?> unencoded)
Targets a template to this target, adding the base url and any authentication headers.

For example:

 public Request apply(RequestTemplate input) {
     input.insert(0, url());
     input.replaceHeader("X-Auth", currentToken);
     return input.asRequest();
 }
 

relationship to JAXRS 2.0

This call is similar to javax.ws.rs.client.WebTarget.resolveTemplates(templateValues, true) , except that the template values apply to any part of the request, not just the URL


request

public Request request()

expand

public static java.lang.String expand(java.lang.String template,
                                      java.util.Map<java.lang.String,?> variables)
Expands a template, such as username, using the variables supplied. Any unresolved parameters will remain.

Note that if you'd like curly braces literally in the template, urlencode them first.

Parameters:
template - URI template that can be in level 1 RFC6570 form.
variables - to the URI template
Returns:
expanded template, leaving any unresolved parameters literal

method

public RequestTemplate method(java.lang.String method)

method

public java.lang.String method()

append

public RequestTemplate append(java.lang.CharSequence value)

insert

public RequestTemplate insert(int pos,
                              java.lang.CharSequence value)

url

public java.lang.String url()

query

public RequestTemplate query(java.lang.String configKey,
                             java.lang.String... values)
Replaces queries with the specified configKey with url decoded values supplied.

When the value is null, all queries with the configKey are removed.

relationship to JAXRS 2.0

Like WebTarget.query, except the values can be templatized.

ex.

 template.query("Signature", "{signature}");
 

Parameters:
configKey - the configKey of the query
values - can be a single null to imply removing all values. Else no values are expected to be null.
See Also:
queries()

query

public RequestTemplate query(java.lang.String configKey,
                             java.lang.Iterable<java.lang.String> values)

queries

public RequestTemplate queries(com.google.common.collect.Multimap<java.lang.String,java.lang.String> queries)
Replaces all existing queries with the newly supplied url decoded queries.

relationship to JAXRS 2.0

Like WebTarget.queries, except the values can be templatized.

ex.

 template.queries(ImmutableMultimap.of("Signature", "{signature}"));
 

Parameters:
queries - if null, remove all queries. else value to replace all queries with.
See Also:
queries()

queries

public com.google.common.collect.ListMultimap<java.lang.String,java.lang.String> queries()
Returns an immutable copy of the url decoded queries.

See Also:
Request.url()

header

public RequestTemplate header(java.lang.String configKey,
                              java.lang.String... values)
Replaces headers with the specified configKey with the values supplied.

When the value is null, all headers with the configKey are removed.

relationship to JAXRS 2.0

Like WebTarget.queries and javax.ws.rs.client.Invocation.Builder.header, except the values can be templatized.

ex.

 template.query("X-Application-Version", "{version}");
 

Parameters:
configKey - the configKey of the header
values - can be a single null to imply removing all values. Else no values are expected to be null.
See Also:
headers()

header

public RequestTemplate header(java.lang.String configKey,
                              java.lang.Iterable<java.lang.String> values)

headers

public RequestTemplate headers(com.google.common.collect.Multimap<java.lang.String,java.lang.String> headers)
Replaces all existing headers with the newly supplied headers.

relationship to JAXRS 2.0

Like Invocation.Builder.headers(MultivaluedMap), except the values can be templatized.

ex.

 template.headers(ImmutableMultimap.of("X-Application-Version", "{version}"));
 

Parameters:
headers - if null, remove all headers. else value to replace all headers with.
See Also:
headers()

headers

public com.google.common.collect.ListMultimap<java.lang.String,java.lang.String> headers()
Returns an immutable copy of the current headers.

See Also:
Request.headers()

body

public RequestTemplate body(java.lang.String body)
replaces the HttpHeaders.CONTENT_LENGTH header.

Usually populated by BodyEncoder or FormEncoder

See Also:
Request.body()

body

public com.google.common.base.Optional<java.lang.String> body()

bodyTemplate

public RequestTemplate bodyTemplate(java.lang.String bodyTemplate)
populated by RequestTemplate.Body

See Also:
Request.body()

bodyTemplate

public com.google.common.base.Optional<java.lang.String> bodyTemplate()
See Also:
Request.body(), expand(String, Map)

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

equals

public boolean equals(java.lang.Object obj)
Overrides:
equals in class java.lang.Object

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

queryLine

public java.lang.String queryLine()