Package org.refcodes.rest
Class AbstractRestClient
- java.lang.Object
-
- org.refcodes.rest.AbstractRestClient
-
- All Implemented Interfaces:
org.refcodes.net.MediaTypeFactoryLookup,org.refcodes.net.MediaTypeFactoryLookup.MutableMediaTypeFactoryLookup,org.refcodes.net.UserAgentAccessor,org.refcodes.net.UserAgentAccessor.UserAgentBuilder<RestClient>,org.refcodes.net.UserAgentAccessor.UserAgentMutator,org.refcodes.net.UserAgentAccessor.UserAgentProperty,RestClient,RestDeleteClient,RestGetClient,RestPostClient,RestPutClient,RestRequestClient,org.refcodes.runtime.RequestCorrelation<RestClient>,org.refcodes.runtime.SessionCorrelation<RestClient>
- Direct Known Subclasses:
HttpRestClientImpl,LoopbackRestClientImpl
public abstract class AbstractRestClient extends java.lang.Object implements RestClient
Abstract base implementation of theRestClientinterface being the foundation for variousRestClientimplementations such asHttpRestClientImplorLoopbackRestClientImpl. TheAbstractRestClientis pre-configured with the followingMediaTypeFactoryinstances:JsonMediaTypeFactoryXmlMediaTypeFactoryTextMediaTypeFactoryFormMediaTypeFactory
initMedaTypeFactories(), therein callingaddMediaTypeFactory(MediaTypeFactory)to add (by also invoking super'sinitMedaTypeFactories()) or to set your own (without invoking super'sinitMedaTypeFactories())MediaTypeFactoryinstances.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.refcodes.net.MediaTypeFactoryLookup
org.refcodes.net.MediaTypeFactoryLookup.MutableMediaTypeFactoryLookup
-
Nested classes/interfaces inherited from interface org.refcodes.net.UserAgentAccessor
org.refcodes.net.UserAgentAccessor.UserAgentBuilder<B extends org.refcodes.net.UserAgentAccessor.UserAgentBuilder<B>>, org.refcodes.net.UserAgentAccessor.UserAgentMutator, org.refcodes.net.UserAgentAccessor.UserAgentProperty
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean_hasRequestCorrelationprotected boolean_hasSessionCorrelation
-
Constructor Summary
Constructors Constructor Description AbstractRestClient()Instantiates a new abstract rest client.AbstractRestClient(java.util.concurrent.ExecutorService aExecutorService)Instantiates a new abstract rest client.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanaddMediaTypeFactory(org.refcodes.net.MediaTypeFactory aMediaTypeFactory)RestRequestBuilderbuildRequest(org.refcodes.net.HttpMethod aHttpMethod, org.refcodes.net.Url aUrl, org.refcodes.net.RequestHeaderFields aHeaderFields, java.lang.Object aRequest, int aRedirectDepth)Prepares a request builder with the possible attributes and returns the according request'sRestRequestBuilderinstance.RestResponsedoRequest(org.refcodes.net.HttpMethod aHttpMethod, org.refcodes.net.Url aUrl, org.refcodes.net.RequestHeaderFields aHeaderFields, java.lang.Object aRequest, int aRedirectDepth)Sends a request with the possible attributes and returns the according request'sRestResponseinstance synchronously.RestCallerBuilderdoRequest(org.refcodes.net.HttpMethod aHttpMethod, org.refcodes.net.Url aUrl, org.refcodes.net.RequestHeaderFields aHeaderFields, java.lang.Object aRequest, int aRedirectDepth, RestResponseObserver aResponseObserver)Creates a request with the possible attributes and returns the accordingRestCallerBuilderinstance used for the request.protected voiddoRequestCorrelation(org.refcodes.net.RequestHeaderFields aRequestHeaderFields)Do request correlation.protected voiddoRequestCorrelation(org.refcodes.net.ResponseHeaderFields aResponseHeaderFields)Do request correlation.protected voiddoSessionCorrelation(org.refcodes.net.RequestHeaderFields aRequestHeaderFields)Do session correlation.protected voiddoSessionCorrelation(org.refcodes.net.ResponseHeaderFields aResponseHeaderFields)Do session correlation.org.refcodes.net.MediaType[]getFactoryMediaTypes()java.lang.StringgetUserAgent()booleanhasRequestCorrelation()booleanhasSessionCorrelation()protected voidinitMedaTypeFactories()Adds the defaultMediaTypeFactoryinstances.protected voidonRestRequest(RestRequestHandler aHandler)Sets the hook receiving a preparedRestCallerBuilderinstance to be used to do the technical request with the technology chosen by the implementing sub-class.voidsetRequestCorrelation(boolean hasRequestCorrelation)voidsetSessionCorrelation(boolean hasSessionCorrelation)voidsetUserAgent(java.lang.String aUserAgent)org.refcodes.net.MediaTypeFactorytoMediaTypeFactory(org.refcodes.net.MediaType aMediaType)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.refcodes.runtime.RequestCorrelation
disableRequestCorrelation, enableRequestCorrelation
-
Methods inherited from interface org.refcodes.rest.RestClient
withDisableRequestCorrelation, withDisableSessionCorrelation, withEnableRequestCorrelation, withEnableSessionCorrelation, withRequestCorrelation, withSessionCorrelation, withUserAgent
-
Methods inherited from interface org.refcodes.rest.RestDeleteClient
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, 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
-
Methods inherited from interface org.refcodes.rest.RestGetClient
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, 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
-
Methods inherited from interface org.refcodes.rest.RestPostClient
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, 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
-
Methods inherited from interface org.refcodes.rest.RestPutClient
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, 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
-
Methods inherited from interface org.refcodes.rest.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, 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
-
-
-
-
Constructor Detail
-
AbstractRestClient
public AbstractRestClient(java.util.concurrent.ExecutorService aExecutorService)
Instantiates a new abstract rest client.- Parameters:
aExecutorService- the executor service
-
AbstractRestClient
public AbstractRestClient()
Instantiates a new abstract rest client.
-
-
Method Detail
-
initMedaTypeFactories
protected void initMedaTypeFactories()
Adds the defaultMediaTypeFactoryinstances. Can be overridden.
-
setRequestCorrelation
public void setRequestCorrelation(boolean hasRequestCorrelation)
- Specified by:
setRequestCorrelationin interfaceorg.refcodes.runtime.RequestCorrelation<RestClient>
-
hasRequestCorrelation
public boolean hasRequestCorrelation()
- Specified by:
hasRequestCorrelationin interfaceorg.refcodes.runtime.RequestCorrelation<RestClient>
-
setSessionCorrelation
public void setSessionCorrelation(boolean hasSessionCorrelation)
- Specified by:
setSessionCorrelationin interfaceorg.refcodes.runtime.SessionCorrelation<RestClient>
-
hasSessionCorrelation
public boolean hasSessionCorrelation()
- Specified by:
hasSessionCorrelationin interfaceorg.refcodes.runtime.SessionCorrelation<RestClient>
-
doRequest
public RestResponse doRequest(org.refcodes.net.HttpMethod aHttpMethod, org.refcodes.net.Url aUrl, org.refcodes.net.RequestHeaderFields aHeaderFields, java.lang.Object aRequest, int aRedirectDepth) throws org.refcodes.net.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:
org.refcodes.net.HttpResponseException- thrown in case of some unexpected response.
-
doRequest
public RestCallerBuilder doRequest(org.refcodes.net.HttpMethod aHttpMethod, org.refcodes.net.Url aUrl, org.refcodes.net.RequestHeaderFields aHeaderFields, java.lang.Object aRequest, int aRedirectDepth, RestResponseObserver aResponseObserver)
Creates a request with the possible attributes and returns the accordingRestCallerBuilderinstance used for the request. The HTTP-Request is actually sent not earlier than you callingOpenable.open()on the returnedRestCallerBuilderas theRestCallerBuilderstill may be modified after invoking this method!- 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.aResponseObserver- The listener processing a response targeted at thisRestCallerBuilder.- Returns:
- The
RestCallerBuilderwhich is used by the request.
-
buildRequest
public RestRequestBuilder buildRequest(org.refcodes.net.HttpMethod aHttpMethod, org.refcodes.net.Url aUrl, org.refcodes.net.RequestHeaderFields aHeaderFields, java.lang.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.- Returns:
- The
RestRequestBuilderat this request.
-
addMediaTypeFactory
public boolean addMediaTypeFactory(org.refcodes.net.MediaTypeFactory aMediaTypeFactory)
- Specified by:
addMediaTypeFactoryin interfaceorg.refcodes.net.MediaTypeFactoryLookup.MutableMediaTypeFactoryLookup
-
toMediaTypeFactory
public org.refcodes.net.MediaTypeFactory toMediaTypeFactory(org.refcodes.net.MediaType aMediaType)
- Specified by:
toMediaTypeFactoryin interfaceorg.refcodes.net.MediaTypeFactoryLookup
-
getFactoryMediaTypes
public org.refcodes.net.MediaType[] getFactoryMediaTypes()
- Specified by:
getFactoryMediaTypesin interfaceorg.refcodes.net.MediaTypeFactoryLookup
-
getUserAgent
public java.lang.String getUserAgent()
- Specified by:
getUserAgentin interfaceorg.refcodes.net.UserAgentAccessor
-
setUserAgent
public void setUserAgent(java.lang.String aUserAgent)
- Specified by:
setUserAgentin interfaceorg.refcodes.net.UserAgentAccessor.UserAgentMutator
-
onRestRequest
protected void onRestRequest(RestRequestHandler aHandler)
Sets the hook receiving a preparedRestCallerBuilderinstance to be used to do the technical request with the technology chosen by the implementing sub-class.- Parameters:
aHandler- TheRestRequestHandlerfor handling the HTTP request.
-
doRequestCorrelation
protected void doRequestCorrelation(org.refcodes.net.RequestHeaderFields aRequestHeaderFields)
Do request correlation.- Parameters:
aRequestHeaderFields- the request Header-Fields
-
doSessionCorrelation
protected void doSessionCorrelation(org.refcodes.net.RequestHeaderFields aRequestHeaderFields)
Do session correlation.- Parameters:
aRequestHeaderFields- the request Header-Fields
-
doRequestCorrelation
protected void doRequestCorrelation(org.refcodes.net.ResponseHeaderFields aResponseHeaderFields)
Do request correlation.- Parameters:
aResponseHeaderFields- the response Header-Fields
-
doSessionCorrelation
protected void doSessionCorrelation(org.refcodes.net.ResponseHeaderFields aResponseHeaderFields)
Do session correlation.- Parameters:
aResponseHeaderFields- the response Header-Fields
-
-