Class AbstractRestClient
java.lang.Object
org.refcodes.rest.AbstractRestClient
- All Implemented Interfaces:
DeleteRestClient, GetRestClient, PostRestClient, PutRestClient, RestClient, RestRequestClient, RestRequestHandler, BasicAuthCredentialsAccessor, BasicAuthCredentialsAccessor.BasicAuthCredentialsBuilder<RestClient>, BasicAuthCredentialsAccessor.BasicAuthCredentialsMutator, BasicAuthCredentialsAccessor.BasicAuthCredentialsProperty, MediaTypeFactoryLookup, MediaTypeFactoryLookup.MutableMediaTypeFactoryLookup, OauthTokenAccessor, OauthTokenAccessor.OauthTokenBuilder<RestClient>, OauthTokenAccessor.OauthTokenMutator, OauthTokenAccessor.OauthTokenProperty, UserAgentAccessor, UserAgentAccessor.UserAgentBuilder<RestClient>, UserAgentAccessor.UserAgentMutator, UserAgentAccessor.UserAgentProperty
- Direct Known Subclasses:
JdkHttpRestClient, LoopbackRestClient
Abstract base implementation of the RestClient interface being the
foundation for various RestClient implementations such as
JdkHttpRestClient or LoopbackRestClient. The
AbstractRestClient is preconfigured with the following
MediaTypeFactory instances:
JsonMediaTypeFactoryXmlMediaTypeFactoryTextMediaTypeFactoryFormMediaTypeFactoryHtmlMediaTypeFactory
In your sub-classes, overwrite the method initMedaTypeFactories(),
therein calling addMediaTypeFactory(MediaTypeFactory) to add (by
also invoking super's initMedaTypeFactories()) or to set your own
(without invoking super's initMedaTypeFactories())
MediaTypeFactory instances.
-
Nested Class Summary
Nested classes/interfaces inherited from interface BasicAuthCredentialsAccessor
BasicAuthCredentialsAccessor.BasicAuthCredentialsBuilder<B>, BasicAuthCredentialsAccessor.BasicAuthCredentialsMutator, BasicAuthCredentialsAccessor.BasicAuthCredentialsPropertyNested classes/interfaces inherited from interface MediaTypeFactoryLookup
MediaTypeFactoryLookup.MutableMediaTypeFactoryLookupNested classes/interfaces inherited from interface OauthTokenAccessor
OauthTokenAccessor.OauthTokenBuilder<B>, OauthTokenAccessor.OauthTokenMutator, OauthTokenAccessor.OauthTokenPropertyNested classes/interfaces inherited from interface UserAgentAccessor
UserAgentAccessor.UserAgentBuilder<B>, UserAgentAccessor.UserAgentMutator, UserAgentAccessor.UserAgentProperty -
Constructor Summary
ConstructorsConstructorDescriptionInstantiates a new abstract rest client.AbstractRestClient(ExecutorService aExecutorService) Instantiates a new abstract rest client. -
Method Summary
Modifier and TypeMethodDescriptionbooleanaddMediaTypeFactory(MediaTypeFactory aMediaTypeFactory) buildRequest(HttpMethod aHttpMethod, Url aUrl, RequestHeaderFields aHeaderFields, Object aRequest, int aRedirectDepth) Prepares a request builder with the possible attributes and returns the according request'sRestRequestBuilderinstance.doRequest(HttpMethod aHttpMethod, Url aUrl, RequestHeaderFields aHeaderFields, Object aRequest, int aRedirectDepth) Sends a request with the possible attributes and returns the according request'sRestResponseinstance synchronously.protected voidAdds the defaultMediaTypeFactoryinstances.onResponse(HttpMethod aHttpMethod, Url aUrl, RequestHeaderFields aHeaderFields, Object aRequest, int aRedirectDepth) Creates a request with the possible attributes and returns the accordingRestResponseResultinstance used for the request.onResponse(HttpMethod aHttpMethod, Url aUrl, RequestHeaderFields aHeaderFields, Object aRequest, int aRedirectDepth, RestResponseConsumer aResponseConsumer) Creates a request with the possible attributes and returns the accordingRestResponseHandlerinstance used for the request.protected voidonRestRequest(RestRequestHandler aHandler) Sets the hook receiving a preparedRestResponseHandlerinstance to be used to do the technical request with the technology chosen by the implementing sub-class.protected voidpostIntercept(HttpClientRequest aRequest, HttpClientResponse aResponse) Invoked to post-process aHttpClientRequestalongside aHttpClientResponse.protected voidpreIntercept(HttpClientRequest aRequest, HttpClientResponse aResponse) Invoked to pre-process aHttpClientRequestalongside aHttpClientResponse.protected RequestHeaderFieldspreProcessHeaderFields(RequestHeaderFields aHeaderFields) Pre-processes the given header fields before the HTTP-Request is issued.voidsetBasicAuthCredentials(BasicAuthCredentials aBasicAuthCredentials) voidsetOauthToken(OauthToken aOauthToken) voidsetUserAgent(String aUserAgent) toMediaTypeFactory(MediaType aMediaType) Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface BasicAuthCredentialsAccessor.BasicAuthCredentialsBuilder
withBasicAuthCredentials, withBasicAuthCredentialsMethods inherited from interface BasicAuthCredentialsAccessor.BasicAuthCredentialsMutator
setBasicAuthCredentialsMethods inherited from interface BasicAuthCredentialsAccessor.BasicAuthCredentialsProperty
letBasicAuthCredentials, letBasicAuthCredentialsMethods inherited from interface DeleteRestClient
buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, buildDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, doDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDelete, onDeleteMethods inherited from interface GetRestClient
buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, buildGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, doGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGet, onGetMethods inherited from interface MediaTypeFactoryLookup
hasMediaTypeFactoryMethods inherited from interface OauthTokenAccessor.OauthTokenBuilder
withOAuthTokenMethods inherited from interface OauthTokenAccessor.OauthTokenProperty
letOauthTokenMethods inherited from interface PostRestClient
buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, buildPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, doPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPost, onPostMethods inherited from interface PutRestClient
buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, buildPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, doPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPut, onPutMethods inherited from interface RestRequestClient
buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, buildRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, doRequest, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponse, onResponseMethods inherited from interface UserAgentAccessor.UserAgentBuilder
withUserAgentMethods inherited from interface UserAgentAccessor.UserAgentProperty
letUserAgent
-
Constructor Details
-
AbstractRestClient
Instantiates a new abstract rest client.- Parameters:
aExecutorService- the executor service
-
AbstractRestClient
public AbstractRestClient()Instantiates a new abstract rest client.
-
-
Method Details
-
initMedaTypeFactories
protected void initMedaTypeFactories()Adds the defaultMediaTypeFactoryinstances. Can be overridden. -
getBasicAuthCredentials
- Specified by:
getBasicAuthCredentialsin interfaceBasicAuthCredentialsAccessor
-
setBasicAuthCredentials
- Specified by:
setBasicAuthCredentialsin interfaceBasicAuthCredentialsAccessor.BasicAuthCredentialsMutator
-
setOauthToken
- Specified by:
setOauthTokenin interfaceOauthTokenAccessor.OauthTokenMutator
-
getOauthToken
- Specified by:
getOauthTokenin interfaceOauthTokenAccessor
-
doRequest
public RestResponse doRequest(HttpMethod aHttpMethod, Url aUrl, RequestHeaderFields aHeaderFields, Object aRequest, int aRedirectDepth) throws HttpResponseException Sends a request with the possible attributes and returns the according request'sRestResponseinstance synchronously.- Specified by:
doRequestin interfaceRestRequestClient- Parameters:
aHttpMethod- The HTTP-Method for the request.aUrl- TheUrlfrom which to take the URL specific data.aHeaderFields- The HTTP-Header's fields to be used for the request.aRequest- The body to be sent with the request (e.g. when doing aHttpMethod.POSTrequest.aRedirectDepth- 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.- Returns:
- The
RestResponsefor this request. - Throws:
HttpResponseException- thrown in case of some unexpected response.
-
onResponse
public RestResponseHandler onResponse(HttpMethod aHttpMethod, Url aUrl, RequestHeaderFields aHeaderFields, Object aRequest, int aRedirectDepth, RestResponseConsumer aResponseConsumer) Creates a request with the possible attributes and returns the accordingRestResponseHandlerinstance used for the request. The HTTP-Request is actually sent not earlier than you callingRestResponseHandler.open()on the returnedRestResponseHandleras theRestResponseHandlerstill may be modified after invoking this method!- Specified by:
onResponsein interfaceRestRequestClient- Parameters:
aHttpMethod- The HTTP-Method for the request.aUrl- TheUrlfrom which to take the URL specific data.aHeaderFields- The HTTP-Header's fields to be used for the request.aRequest- The body to be sent with the request (e.g. when doing aHttpMethod.POSTrequest.aRedirectDepth- 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 listener processing a response targeted at thisRestResponseHandler.- Returns:
- The
RestResponseHandlerwhich is used by the request.
-
onResponse
public RestResponseResult onResponse(HttpMethod aHttpMethod, Url aUrl, RequestHeaderFields aHeaderFields, Object aRequest, int aRedirectDepth) Creates a request with the possible attributes and returns the accordingRestResponseResultinstance used for the request. The HTTP-Request is actually sent not earlier than you callingRestResponseResult.open()on the returnedRestResponseResultas theRestResponseResultstill may be modified after invoking this method!- Specified by:
onResponsein interfaceRestRequestClient- Parameters:
aHttpMethod- The HTTP-Method for the request.aUrl- TheUrlfrom which to take the URL specific data.aHeaderFields- The HTTP-Header's fields to be used for the request.aRequest- The body to be sent with the request (e.g. when doing aHttpMethod.POSTrequest.aRedirectDepth- 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.- Returns:
- The
RestResponseResultwhich is used by the request.
-
buildRequest
public RestRequestBuilder buildRequest(HttpMethod aHttpMethod, Url aUrl, RequestHeaderFields aHeaderFields, Object aRequest, int aRedirectDepth) Prepares a request builder with the possible attributes and returns the according request'sRestRequestBuilderinstance. InvokingRestRequestBuilder.toRestResponse()starts the request and synchronously returns the response.- Specified by:
buildRequestin interfaceRestRequestClient- Parameters:
aHttpMethod- The HTTP-Method for the request.aUrl- TheUrlfrom which to take the URL specific data.aHeaderFields- The HTTP-Header's fields to be used for the request.aRequest- The body to be sent with the request (e.g. when doing aHttpMethod.POSTrequest.aRedirectDepth- The number of redirect ping-pong cycles to follow before when issuing the HTTP-Request.- Returns:
- The
RestRequestBuilderat this request.
-
addMediaTypeFactory
- Specified by:
addMediaTypeFactoryin interfaceMediaTypeFactoryLookup.MutableMediaTypeFactoryLookup
-
toMediaTypeFactory
- Specified by:
toMediaTypeFactoryin interfaceMediaTypeFactoryLookup
-
getFactoryMediaTypes
- Specified by:
getFactoryMediaTypesin interfaceMediaTypeFactoryLookup
-
getUserAgent
- Specified by:
getUserAgentin interfaceUserAgentAccessor
-
setUserAgent
- Specified by:
setUserAgentin interfaceUserAgentAccessor.UserAgentMutator
-
preIntercept
Invoked to pre-process aHttpClientRequestalongside aHttpClientResponse.- Parameters:
aRequest- TheHttpClientRequestto pre-process.aResponse- TheHttpClientResponseto post-process.
-
postIntercept
Invoked to post-process aHttpClientRequestalongside aHttpClientResponse.- Parameters:
aRequest- TheHttpClientRequestto post-process.aResponse- TheHttpClientResponseto post-process.
-
onRestRequest
Sets the hook receiving a preparedRestResponseHandlerinstance to be used to do the technical request with the technology chosen by the implementing sub-class.- Parameters:
aHandler- TheRestRequestHandlerfor handling the HTTP request.
-
preProcessHeaderFields
Pre-processes the given header fields before the HTTP-Request is issued. By default the User-Agent is set and (if present) the OAuth token.- Parameters:
aHeaderFields- TheHeaderFieldsto be pre-prcessed.- Returns:
- the request header fields
-