java.lang.Object
org.refcodes.web.AbstractHttpRequest
org.refcodes.web.HttpClientRequest
org.refcodes.rest.RestResponseHandler
- All Implemented Interfaces:
org.refcodes.component.Closable
,org.refcodes.component.Closable.CloseBuilder<org.refcodes.component.LinkComponent.LinkComponentBuilder<RestResponseHandler>>
,org.refcodes.component.ConnectionStatusAccessor
,org.refcodes.component.LinkComponent
,org.refcodes.component.LinkComponent.LinkComponentBuilder<RestResponseHandler>
,org.refcodes.component.Openable
,org.refcodes.component.Openable.OpenBuilder<org.refcodes.component.LinkComponent.LinkComponentBuilder<RestResponseHandler>>
,org.refcodes.component.OpenedAccessor
,RestResponseConsumer
,org.refcodes.web.HeaderFieldsAccessor<org.refcodes.web.RequestHeaderFields>
,org.refcodes.web.HeaderFieldsAccessor.HeaderFieldsBuilder<org.refcodes.web.RequestHeaderFields,
,RestResponseHandler> org.refcodes.web.HeaderFieldsAccessor.HeaderFieldsMutator<org.refcodes.web.RequestHeaderFields>
,org.refcodes.web.HeaderFieldsAccessor.HeaderFieldsProperty<org.refcodes.web.RequestHeaderFields>
,org.refcodes.web.HttpBodyAccessor.HttpBodyProvider<org.refcodes.web.BadRequestException>
,org.refcodes.web.HttpMethodAccessor
,org.refcodes.web.HttpMethodAccessor.HttpMethodBuilder<RestResponseHandler>
,org.refcodes.web.HttpMethodAccessor.HttpMethodMutator
,org.refcodes.web.HttpMethodAccessor.HttpMethodProperty
,org.refcodes.web.HttpRequest
,org.refcodes.web.HttpRequestBuilder<RestResponseHandler>
,org.refcodes.web.QueryFieldsAccessor
,org.refcodes.web.QueryFieldsAccessor.QueryFieldsMutator
,org.refcodes.web.QueryFieldsAccessor.QueryFieldsProperty
,org.refcodes.web.RedirectDepthAccessor
,org.refcodes.web.RedirectDepthAccessor.RedirectDepthBuilder<RestResponseHandler>
,org.refcodes.web.RedirectDepthAccessor.RedirectDepthMutator
,org.refcodes.web.RedirectDepthAccessor.RedirectDepthProperty
,org.refcodes.web.UrlAccessor
,org.refcodes.web.UrlAccessor.UrlBuilder
,org.refcodes.web.UrlAccessor.UrlMutator
public class RestResponseHandler
extends org.refcodes.web.HttpClientRequest
implements RestResponseConsumer, org.refcodes.web.QueryFieldsAccessor.QueryFieldsProperty, org.refcodes.web.HeaderFieldsAccessor.HeaderFieldsProperty<org.refcodes.web.RequestHeaderFields>, org.refcodes.web.RedirectDepthAccessor.RedirectDepthBuilder<RestResponseHandler>, org.refcodes.web.HttpRequestBuilder<RestResponseHandler>, org.refcodes.web.HttpMethodAccessor.HttpMethodProperty, org.refcodes.web.HttpMethodAccessor.HttpMethodBuilder<RestResponseHandler>, org.refcodes.component.LinkComponent.LinkComponentBuilder<RestResponseHandler>, org.refcodes.component.ConnectionStatusAccessor, org.refcodes.web.HeaderFieldsAccessor.HeaderFieldsBuilder<org.refcodes.web.RequestHeaderFields,RestResponseHandler>
A
RestResponseHandler
describes a REST request and the
RestResponseConsumer
in charge for handling a REST response. The
RestResponseHandler
describes the HttpMethod
to be used, the
targeted URL, the HeaderFields
as well as the Query-Fields and the
request Object
or InputStream
. It provides builder
functionality and lambda
support for handling the responses
addressed to this RestResponseHandler
. The lambda
defined as RestResponseConsumer
acts as the single listener to this
RestResponseHandler
responsible for handling the responses for which
this RestResponseHandler
is responsible. The locator to which a
RestResponseHandler
targets for is defined by the getUrl()
property.-
Nested Class Summary
Nested classes/interfaces inherited from interface org.refcodes.component.Closable
org.refcodes.component.Closable.CloseAutomaton, org.refcodes.component.Closable.CloseBuilder<B extends org.refcodes.component.Closable.CloseBuilder<B>>
Nested classes/interfaces inherited from interface org.refcodes.component.ConnectionStatusAccessor
org.refcodes.component.ConnectionStatusAccessor.ConnectionStatusMutator, org.refcodes.component.ConnectionStatusAccessor.ConnectionStatusProperty
Nested classes/interfaces inherited from interface org.refcodes.web.HeaderFieldsAccessor
org.refcodes.web.HeaderFieldsAccessor.HeaderFieldsBuilder<T extends org.refcodes.web.HeaderFields<?,
?>, B extends org.refcodes.web.HeaderFieldsAccessor.HeaderFieldsBuilder<T, B>>, org.refcodes.web.HeaderFieldsAccessor.HeaderFieldsMutator<T extends org.refcodes.web.HeaderFields<?, ?>>, org.refcodes.web.HeaderFieldsAccessor.HeaderFieldsProperty<T extends org.refcodes.web.HeaderFields<?, ?>> Nested classes/interfaces inherited from interface org.refcodes.web.HttpMethodAccessor
org.refcodes.web.HttpMethodAccessor.HttpMethodBuilder<B extends org.refcodes.web.HttpMethodAccessor.HttpMethodBuilder<B>>, org.refcodes.web.HttpMethodAccessor.HttpMethodMutator, org.refcodes.web.HttpMethodAccessor.HttpMethodProperty
Nested classes/interfaces inherited from interface org.refcodes.component.LinkComponent
org.refcodes.component.LinkComponent.LinkAutomaton, org.refcodes.component.LinkComponent.LinkComponentBuilder<B extends org.refcodes.component.LinkComponent.LinkComponentBuilder<B>>
Nested classes/interfaces inherited from interface org.refcodes.component.Openable
org.refcodes.component.Openable.OpenAutomaton, org.refcodes.component.Openable.OpenBuilder<B extends org.refcodes.component.Openable.OpenBuilder<B>>
Nested classes/interfaces inherited from interface org.refcodes.component.OpenedAccessor
org.refcodes.component.OpenedAccessor.OpenedMutator, org.refcodes.component.OpenedAccessor.OpenedProperty
Nested classes/interfaces inherited from interface org.refcodes.web.QueryFieldsAccessor
org.refcodes.web.QueryFieldsAccessor.QueryFieldsBuilder<B extends org.refcodes.web.QueryFieldsAccessor.QueryFieldsBuilder<?>>, org.refcodes.web.QueryFieldsAccessor.QueryFieldsMutator, org.refcodes.web.QueryFieldsAccessor.QueryFieldsProperty
Nested classes/interfaces inherited from interface org.refcodes.web.RedirectDepthAccessor
org.refcodes.web.RedirectDepthAccessor.RedirectDepthBuilder<B extends org.refcodes.web.RedirectDepthAccessor.RedirectDepthBuilder<B>>, org.refcodes.web.RedirectDepthAccessor.RedirectDepthMutator, org.refcodes.web.RedirectDepthAccessor.RedirectDepthProperty
Nested classes/interfaces inherited from interface org.refcodes.web.UrlAccessor
org.refcodes.web.UrlAccessor.UrlBuilder, org.refcodes.web.UrlAccessor.UrlMutator, org.refcodes.web.UrlAccessor.UrlProperty
-
Field Summary
Fields inherited from class org.refcodes.web.HttpClientRequest
_mediaTypeFactoryLookup, DEFAULT_REDIRECT_DEPTH
Fields inherited from class org.refcodes.web.AbstractHttpRequest
_headerFields, _httpMethod, _url
-
Constructor Summary
ConstructorDescriptionRestResponseHandler
(org.refcodes.web.HttpMethod aHttpMethod, org.refcodes.web.Url aUrl, Object aRequest, int aRedirectDepth, RestResponseConsumer aResponseConsumer, org.refcodes.web.MediaTypeFactoryLookup aMediaTypeFactoryLookup) Instantiates a newRestResponseHandler
.RestResponseHandler
(org.refcodes.web.HttpMethod aHttpMethod, org.refcodes.web.Url aUrl, Object aRequest, RestResponseConsumer aResponseConsumer, org.refcodes.web.MediaTypeFactoryLookup aMediaTypeFactoryLookup) Instantiates a newRestResponseHandler
.RestResponseHandler
(org.refcodes.web.HttpMethod aHttpMethod, org.refcodes.web.Url aUrl, RestResponseConsumer aResponseConsumer, int aRedirectDepth, org.refcodes.web.MediaTypeFactoryLookup aMediaTypeFactoryLookup) Instantiates a newRestResponseHandler
.RestResponseHandler
(org.refcodes.web.HttpMethod aHttpMethod, org.refcodes.web.Url aUrl, RestResponseConsumer aResponseConsumer, org.refcodes.web.MediaTypeFactoryLookup aMediaTypeFactoryLookup) Instantiates a newRestResponseHandler
.RestResponseHandler
(org.refcodes.web.HttpMethod aHttpMethod, org.refcodes.web.Url aUrl, org.refcodes.web.RequestHeaderFields aHeaderFields, Object aRequest, int aRedirectDepth, RestResponseConsumer aResponseConsumer, org.refcodes.web.MediaTypeFactoryLookup aMediaTypeFactoryLookup) Instantiates a newRestResponseHandler
.RestResponseHandler
(org.refcodes.web.HttpMethod aHttpMethod, org.refcodes.web.Url aUrl, org.refcodes.web.RequestHeaderFields aHeaderFields, Object aRequest, RestResponseConsumer aResponseConsumer, org.refcodes.web.MediaTypeFactoryLookup aMediaTypeFactoryLookup) Instantiates a newRestResponseHandler
.RestResponseHandler
(org.refcodes.web.MediaTypeFactoryLookup aMediaTypeFactoryLookup) Instantiates a newRestResponseHandler
. -
Method Summary
Modifier and TypeMethodDescriptionstatic RestResponseHandler
build
(RestfulClient aRestClient) This is a convenience method for easily instantiating the according builder.void
close()
org.refcodes.component.ConnectionStatus
org.refcodes.web.HttpMethod
org.refcodes.web.FormFields
Retrieves theRestResponseConsumer
to which any responses are delegated upon invocation of theonResponse(RestResponseEvent)
method.org.refcodes.web.Url
getUrl()
void
onResponse
(RestResponseEvent aResponse) The invoker provides a response context being aRestResponseEvent
describing the response being processed upon by yourlambda
's code.void
open()
void
setHeaderFields
(org.refcodes.web.RequestHeaderFields aHeaderFields) void
setHttpMethod
(org.refcodes.web.HttpMethod aHttpMethod) void
setQueryFields
(org.refcodes.web.FormFields aQueryFields) void
setResponseObserver
(RestResponseConsumer aLambda) Sets theRestResponseConsumer
to which any responses are delegated upon invocation of theonResponse(RestResponseEvent)
method.void
setUrl
(org.refcodes.web.Url aUrl) toString()
withCloseIn
(int aCloseMillis) withHeaderFields
(org.refcodes.web.RequestHeaderFields aRequestHeaderFields) withHttpMethod
(org.refcodes.web.HttpMethod aHttpMethod) withOpen()
withRedirectDepth
(int aRedirectDepth) <REQ> RestResponseHandler
withRequest
(REQ aRequest) Sets the request for the request property.withResponseObserver
(RestResponseConsumer aLambda) Builder method for setting theRestResponseConsumer
.withUrl
(org.refcodes.web.Url aUrl) Methods inherited from class org.refcodes.web.HttpClientRequest
getRedirectDepth, getRequest, setRedirectDepth, setRequest, toHttpBody
Methods inherited from class org.refcodes.web.AbstractHttpRequest
getHeaderFields
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.refcodes.component.Closable
closeIn, closeQuietly, closeUnchecked
Methods inherited from interface org.refcodes.component.Closable.CloseBuilder
withCloseUnchecked
Methods inherited from interface org.refcodes.component.ConnectionStatusAccessor
isOpened
Methods inherited from interface org.refcodes.web.HeaderFieldsAccessor
getHeaderFields
Methods inherited from interface org.refcodes.web.HeaderFieldsAccessor.HeaderFieldsProperty
letHeaderFields
Methods inherited from interface org.refcodes.web.HttpMethodAccessor.HttpMethodProperty
letHttpMethod
Methods inherited from interface org.refcodes.web.HttpRequestBuilder
withAddToHeaderFields, withAddToHeaderFields, withAddToHeaderFields, withAddToHeaderFields, withAddToHeaderFields, withAddToQueryFields, withAddToQueryFields, withAddToQueryFields
Methods inherited from interface org.refcodes.component.Openable
openUnchecked
Methods inherited from interface org.refcodes.component.Openable.OpenBuilder
withOpenUnchecked
Methods inherited from interface org.refcodes.web.QueryFieldsAccessor.QueryFieldsProperty
letQueryFields
Methods inherited from interface org.refcodes.web.RedirectDepthAccessor.RedirectDepthProperty
letRedirectDepth
-
Constructor Details
-
RestResponseHandler
public RestResponseHandler(org.refcodes.web.HttpMethod aHttpMethod, org.refcodes.web.Url aUrl, org.refcodes.web.RequestHeaderFields aHeaderFields, Object aRequest, RestResponseConsumer aResponseConsumer, org.refcodes.web.MediaTypeFactoryLookup aMediaTypeFactoryLookup) Instantiates a newRestResponseHandler
.- Parameters:
aHttpMethod
- the http methodaUrl
- TheUrl
from which to take the URL specific data.aHeaderFields
- the Header-FieldsaRequest
- the requestaResponseConsumer
- the response observeraMediaTypeFactoryLookup
- the media type factory lookup
-
RestResponseHandler
public RestResponseHandler(org.refcodes.web.HttpMethod aHttpMethod, org.refcodes.web.Url aUrl, RestResponseConsumer aResponseConsumer, org.refcodes.web.MediaTypeFactoryLookup aMediaTypeFactoryLookup) Instantiates a newRestResponseHandler
.- Parameters:
aHttpMethod
- the http methodaUrl
- TheUrl
from which to take the URL specific data.aResponseConsumer
- the response observeraMediaTypeFactoryLookup
- the media type factory lookup
-
RestResponseHandler
public RestResponseHandler(org.refcodes.web.MediaTypeFactoryLookup aMediaTypeFactoryLookup) Instantiates a newRestResponseHandler
.- Parameters:
aMediaTypeFactoryLookup
- the media type factory lookup
-
RestResponseHandler
public RestResponseHandler(org.refcodes.web.HttpMethod aHttpMethod, org.refcodes.web.Url aUrl, Object aRequest, RestResponseConsumer aResponseConsumer, org.refcodes.web.MediaTypeFactoryLookup aMediaTypeFactoryLookup) Instantiates a newRestResponseHandler
.- Parameters:
aHttpMethod
- the http methodaUrl
- TheUrl
from which to take the URL specific data.aRequest
- the requestaResponseConsumer
- the response observeraMediaTypeFactoryLookup
- the media type factory lookup
-
RestResponseHandler
public RestResponseHandler(org.refcodes.web.HttpMethod aHttpMethod, org.refcodes.web.Url aUrl, RestResponseConsumer aResponseConsumer, int aRedirectDepth, org.refcodes.web.MediaTypeFactoryLookup aMediaTypeFactoryLookup) Instantiates a newRestResponseHandler
.- Parameters:
aHttpMethod
- the http methodaUrl
- TheUrl
from which to take the URL specific data.aResponseConsumer
- the response observeraRedirectDepth
- The redirect depth provides the count of HTTP-Request and HTTP-Response cycles where the response represents a redirect as ofHttpStatusCode.isRedirectStatus()
. A value of -1 represents the default behavior, e.g. usingHttpURLConnection
's redirection means.aMediaTypeFactoryLookup
- the media type factory lookup
-
RestResponseHandler
public RestResponseHandler(org.refcodes.web.HttpMethod aHttpMethod, org.refcodes.web.Url aUrl, Object aRequest, int aRedirectDepth, RestResponseConsumer aResponseConsumer, org.refcodes.web.MediaTypeFactoryLookup aMediaTypeFactoryLookup) Instantiates a newRestResponseHandler
.- Parameters:
aHttpMethod
- the http methodaUrl
- TheUrl
from which to take the URL specific data.aRequest
- the requestaRedirectDepth
- The redirect depth provides the count of HTTP-Request and HTTP-Response cycles where the response represents a redirect as ofHttpStatusCode.isRedirectStatus()
. A value of -1 represents the default behavior, e.g. usingHttpURLConnection
's redirection means.aResponseConsumer
- the response observeraMediaTypeFactoryLookup
- the media type factory lookup
-
RestResponseHandler
public RestResponseHandler(org.refcodes.web.HttpMethod aHttpMethod, org.refcodes.web.Url aUrl, org.refcodes.web.RequestHeaderFields aHeaderFields, Object aRequest, int aRedirectDepth, RestResponseConsumer aResponseConsumer, org.refcodes.web.MediaTypeFactoryLookup aMediaTypeFactoryLookup) Instantiates a newRestResponseHandler
.- Parameters:
aHttpMethod
- the http methodaUrl
- TheUrl
from which to take the URL specific data.aHeaderFields
- the Header-FieldsaRequest
- the requestaRedirectDepth
- The redirect depth provides the count of HTTP-Request and HTTP-Response cycles where the response represents a redirect as ofHttpStatusCode.isRedirectStatus()
. A value of -1 represents the default behavior, e.g. usingHttpURLConnection
's redirection means.aResponseConsumer
- the response observeraMediaTypeFactoryLookup
- the media type factory lookup
-
-
Method Details
-
withRedirectDepth
- Specified by:
withRedirectDepth
in interfaceorg.refcodes.web.RedirectDepthAccessor.RedirectDepthBuilder<RestResponseHandler>
-
setQueryFields
public void setQueryFields(org.refcodes.web.FormFields aQueryFields) - Specified by:
setQueryFields
in interfaceorg.refcodes.web.QueryFieldsAccessor.QueryFieldsMutator
-
getQueryFields
public org.refcodes.web.FormFields getQueryFields()- Specified by:
getQueryFields
in interfaceorg.refcodes.web.QueryFieldsAccessor
-
withUrl
- Specified by:
withUrl
in interfaceorg.refcodes.web.UrlAccessor.UrlBuilder
-
withHttpMethod
- Specified by:
withHttpMethod
in interfaceorg.refcodes.web.HttpMethodAccessor.HttpMethodBuilder<RestResponseHandler>
-
withRequest
Sets the request for the request property.- Type Parameters:
REQ
- the generic type- Parameters:
aRequest
- The request to be stored by the request property.- Returns:
- The builder for applying multiple build operations.
-
onResponse
The invoker provides a response context being aRestResponseEvent
describing the response being processed upon by yourlambda
's code. The method works synchronously and waits (blocks the caller's thread) till it finishes execution.- Specified by:
onResponse
in interfaceRestResponseConsumer
- Parameters:
aResponse
- The response of typeRestResponseEvent
describing the response context. UseHttpClientResponse.getResponse(Class)
to retrieve the server's response body orAbstractHttpResponse.getHttpStatusCode()
to retrieve the respone's HTTP Status-Code.- Throws:
org.refcodes.web.HttpResponseException
- thrown by a HTTP-Response handling system in case of some unexpected response.
-
getHttpMethod
public org.refcodes.web.HttpMethod getHttpMethod()- Specified by:
getHttpMethod
in interfaceorg.refcodes.web.HttpMethodAccessor
- Overrides:
getHttpMethod
in classorg.refcodes.web.AbstractHttpRequest
-
setHttpMethod
public void setHttpMethod(org.refcodes.web.HttpMethod aHttpMethod) - Specified by:
setHttpMethod
in interfaceorg.refcodes.web.HttpMethodAccessor.HttpMethodMutator
-
getResponseObserver
Retrieves theRestResponseConsumer
to which any responses are delegated upon invocation of theonResponse(RestResponseEvent)
method.- Returns:
- The (user defined)
RestResponseConsumer
to handle responses.
-
setResponseObserver
Sets theRestResponseConsumer
to which any responses are delegated upon invocation of theonResponse(RestResponseEvent)
method.- Parameters:
aLambda
- The (user defined)RestResponseConsumer
to handle responses, feel free to code it aslambda
expression!
-
open
- Specified by:
open
in interfaceorg.refcodes.component.Openable
- Throws:
IOException
-
close
- Specified by:
close
in interfaceorg.refcodes.component.Closable
- Throws:
IOException
-
getConnectionStatus
public org.refcodes.component.ConnectionStatus getConnectionStatus()- Specified by:
getConnectionStatus
in interfaceorg.refcodes.component.ConnectionStatusAccessor
-
setHeaderFields
public void setHeaderFields(org.refcodes.web.RequestHeaderFields aHeaderFields) - Specified by:
setHeaderFields
in interfaceorg.refcodes.web.HeaderFieldsAccessor.HeaderFieldsMutator<org.refcodes.web.RequestHeaderFields>
-
getUrl
public org.refcodes.web.Url getUrl()- Specified by:
getUrl
in interfaceorg.refcodes.web.UrlAccessor
- Overrides:
getUrl
in classorg.refcodes.web.AbstractHttpRequest
-
setUrl
public void setUrl(org.refcodes.web.Url aUrl) - Specified by:
setUrl
in interfaceorg.refcodes.web.UrlAccessor.UrlMutator
-
withResponseObserver
Builder method for setting theRestResponseConsumer
.- Parameters:
aLambda
- The (user defined)RestResponseConsumer
to handle responses, feel free to code it aslambda
expression- Returns:
- The
RestResponseHandler
for the sake of a fluent API.
-
withHeaderFields
public RestResponseHandler withHeaderFields(org.refcodes.web.RequestHeaderFields aRequestHeaderFields) - Specified by:
withHeaderFields
in interfaceorg.refcodes.web.HeaderFieldsAccessor.HeaderFieldsBuilder<org.refcodes.web.RequestHeaderFields,
RestResponseHandler>
-
withOpen
- Specified by:
withOpen
in interfaceorg.refcodes.component.Openable.OpenBuilder<org.refcodes.component.LinkComponent.LinkComponentBuilder<RestResponseHandler>>
- Throws:
IOException
-
withClose
- Specified by:
withClose
in interfaceorg.refcodes.component.Closable.CloseBuilder<org.refcodes.component.LinkComponent.LinkComponentBuilder<RestResponseHandler>>
- Throws:
IOException
-
withCloseQuietly
- Specified by:
withCloseQuietly
in interfaceorg.refcodes.component.Closable.CloseBuilder<org.refcodes.component.LinkComponent.LinkComponentBuilder<RestResponseHandler>>
-
withCloseIn
- Specified by:
withCloseIn
in interfaceorg.refcodes.component.Closable.CloseBuilder<org.refcodes.component.LinkComponent.LinkComponentBuilder<RestResponseHandler>>
-
toString
- Overrides:
toString
in classorg.refcodes.web.HttpClientRequest
-
build
This is a convenience method for easily instantiating the according builder.- Parameters:
aRestClient
- the rest client to take care of the caller.- Returns:
- an instance (using a public implementation) of this builder
-