public abstract class WebService extends java.lang.Object implements RestResultReceiver.Receiver
This class is used as singleton by RESTDroid
. This class provides also a little factory for RESTRequest
.
First of all a Module
must be registered.
The role of this class is to prepare and to send the RestService
request :
Processor.checkRequest(RESTRequest)
RESTRequest
in requestsCollection
RESTDroid.getWebService(Class)
,
Processor.checkRequest(RESTRequest)
,
Module
Modifier and Type | Field and Description |
---|---|
private static int |
maximumThreadPool
Maximum thread pool for ExecutorService instance
|
private Context |
mContext
Current application context
|
private java.lang.Class<? extends FailBehavior> |
mDefaultFailBehavior
Default
FailBehavior to use for all request sent by this WebService |
private java.util.HashMap<java.util.UUID,Intent> |
mIntentsMap
HashMap which stores intent generated for specific
RESTRequest
key : ID of RESTRequest
value : Instance of Intent
|
protected Module |
mModule
Module actually registered to this WebService instance |
protected RestResultReceiver |
mReceiver
ResultReceiver to acts as a binder callback
|
private static java.util.concurrent.CopyOnWriteArrayList<RESTRequest<? extends Resource>> |
requestsCollection
Collection of
RESTRequest
Initialized to an instance of CopyOnWriteArrayList to avoid ConcurrentModificationException |
private static java.util.concurrent.ExecutorService |
threadExecutor
Instance of ExecutorService.
|
Modifier | Constructor and Description |
---|---|
protected |
WebService()
Empty constructor
|
|
WebService(Context context)
Default constructor.
|
Modifier and Type | Method and Description |
---|---|
protected <R extends Resource> |
delete(java.lang.Class<R> clazz,
java.lang.String uri,
Resource resource)
Initializes and prepares a DELETE request or retrieve it if already pending.
|
void |
displayRequest() |
void |
executeRequest(RESTRequest<? extends Resource> r)
Executes a
RESTRequest |
protected java.util.UUID |
generateID()
Generates a unique ID
|
protected <R extends Resource> |
get(java.lang.Class<R> clazz,
java.lang.String uri,
long expirationTime)
Initializes and prepares a GET request or retrieve it from cache if needed or if the request is already pending
|
protected <R extends Resource> |
get(java.lang.Class<R> clazz,
java.lang.String uri,
long expirationTime,
Bundle extraParams)
Initializes and prepares a GET request or retrieve it from cache if needed or if the request is already pending
|
Context |
getApplicationContext()
Getter for
mContext |
java.lang.Class<? extends FailBehavior> |
getDefaultFailBehavior()
Getter for
mDefaultFailBehavior |
static java.util.concurrent.CopyOnWriteArrayList<RESTRequest<? extends Resource>> |
getFailedRequests()
Returns all failed
RESTRequest |
<T extends Resource> |
getRequest(java.util.UUID requestID,
java.lang.Class<T> clazz)
Getter for retrieve specific
RESTRequest in requestsCollection
FIXME ! |
static java.util.concurrent.ExecutorService |
getThreadExecutor()
Return the instance of ExecutorService used to manage threads
|
protected void |
initAndStartService(RESTRequest<? extends Resource> request)
Initializes and starts the service if the request has to be re-sent
|
protected void |
initRequest(RESTRequest<? extends Resource> r,
HTTPVerb verb,
java.lang.String uri)
Initializes a request by setting verb and uri
|
protected void |
initRequest(RESTRequest<? extends Resource> r,
HTTPVerb verb,
java.lang.String uri,
Bundle extraParams)
Initializes a request by setting verb, uri and extra paramaters
|
void |
onPause()
Pauses all request listeners
|
void |
onReceiveResult(int resultCode,
Bundle resultData)
Receive result from
RestService and fires callbacks corresponding to the request'state |
void |
onResume()
Resumes all request listeners and if a listener is triggered remove the request from
requestsCollection |
protected <R extends Resource> |
post(java.lang.Class<R> clazz,
java.lang.String uri,
ResourceRepresentation<?> resource)
Initializes and prepares a POST request or retrieve it if already pending.
|
protected <R extends Resource> |
put(java.lang.Class<R> clazz,
java.lang.String uri,
Resource resource)
Initializes and prepares a PUT request or retrieve it if already pending.
|
void |
registerModule(Module m)
Registers module for this instance of WebService and set
RestService Processor |
private void |
removeRequests(java.util.ArrayList<RESTRequest<? extends Resource>> requestsToRemove)
Removes request from
requestsCollection . |
protected <R extends Resource> |
requestRoutine(java.lang.Class<R> clazz,
java.lang.String uri,
Resource resource,
boolean retrieveRequest)
Create or retrieve
RESTRequest if it is already pending |
protected <T extends Resource> |
retrieveRequest(java.lang.Class<T> clazz,
java.lang.String url,
Resource resource)
Factory of
RESTRequest . |
void |
retryRequest(RESTRequest<? extends Resource> request)
Retries a request by resetting it result code, it
RequestListeners , it Resource and initializes and starts the service |
void |
setApplicationContext(Context context)
Setter for
mContext |
void |
setDefaultFailBehavior(java.lang.Class<? extends FailBehavior> defaultFailBehavior)
Setter for
mDefaultFailBehavior |
protected RestResultReceiver mReceiver
private Context mContext
private static java.util.concurrent.CopyOnWriteArrayList<RESTRequest<? extends Resource>> requestsCollection
RESTRequest
Initialized to an instance of CopyOnWriteArrayList to avoid ConcurrentModificationExceptionprivate java.lang.Class<? extends FailBehavior> mDefaultFailBehavior
FailBehavior
to use for all request sent by this WebServiceprivate java.util.HashMap<java.util.UUID,Intent> mIntentsMap
RESTRequest
RESTRequest
private static final int maximumThreadPool
threadExecutor
,
Constant Field Valuesprivate static final java.util.concurrent.ExecutorService threadExecutor
getThreadExecutor()
protected WebService()
public WebService(Context context)
setDefaultFailBehavior(Class)
to set the default FailBehavior
for all request sent by this WebServicecontext
- The application contextpublic void registerModule(Module m)
RestService
Processor
m
- Module to be registeredModule
,
Module.init()
,
RestService.setProcessor(Processor)
,
mModule
protected <T extends Resource> RESTRequest<T> retrieveRequest(java.lang.Class<T> clazz, java.lang.String url, Resource resource)
clazz
- Class object of the ResourceRepresentation
which RESTRequest
is dealing withRESTRequest
RESTRequest
,
requestsCollection
public void onPause()
RESTRequest#mOnFailedRequestListeners
,
RESTRequest#mOnSucceededRequestListeners
,
RESTRequest#mOnStartedRequestListeners
public void onResume()
requestsCollection
RESTRequest#mOnFailedRequestListeners
,
RESTRequest#mOnSucceededRequestListeners
,
RESTRequest#mOnStartedRequestListeners
protected <R extends Resource> RESTRequest<R> get(java.lang.Class<R> clazz, java.lang.String uri, long expirationTime)
clazz
- Class of ResourceRepresentation holds by requesturi
- Uri to fetchexpirationTime
- The expiration time used to know when this request has to be resent and not be retrieved from cacheWebService#get(RESTRequest, String, Bundle)
,
CacheManager
protected <R extends Resource> RESTRequest<R> get(java.lang.Class<R> clazz, java.lang.String uri, long expirationTime, Bundle extraParams)
clazz
- Class of ResourceRepresentation holds by requesturi
- Uri to fetchexpirationTime
- The expiration time used to know when this request has to be resent and not be retrieved from cacheextraParams
- Extra parametersWebService#get(RESTRequest, String)
protected <R extends Resource> RESTRequest<R> post(java.lang.Class<R> clazz, java.lang.String uri, ResourceRepresentation<?> resource)
clazz
- Class of ResourceRepresentation holds by requesturi
- URI to retrieveresource
- Resource to sendprotected <R extends Resource> RESTRequest<R> put(java.lang.Class<R> clazz, java.lang.String uri, Resource resource)
clazz
- Class of ResourceRepresentation holds by requesturi
- URI to fetchresource
- Resource to sendprotected <R extends Resource> RESTRequest<R> delete(java.lang.Class<R> clazz, java.lang.String uri, Resource resource)
clazz
- Class of ResourceRepresentation holds by requesturi
- Uri to fetchresource
- Resource to sendprotected <R extends Resource> RESTRequest<R> requestRoutine(java.lang.Class<R> clazz, java.lang.String uri, Resource resource, boolean retrieveRequest)
RESTRequest
if it is already pendingclazz
- Class of ResourceRepresentation holds by requesturi
- Uri to fetchRESTRequest
or instance already pendingprotected void initRequest(RESTRequest<? extends Resource> r, HTTPVerb verb, java.lang.String uri)
r
- Instance of RESTRequest
verb
- Instance of HTTPVerb
uri
- Uri to fetchinitRequest(RESTRequest, HTTPVerb, String, Bundle)
protected void initRequest(RESTRequest<? extends Resource> r, HTTPVerb verb, java.lang.String uri, Bundle extraParams)
r
- Instance of RESTRequest
verb
- Instance of HTTPVerb
uri
- Uri to fetchextraParams
- Extra parametersinitRequest(RESTRequest, HTTPVerb, String)
public void executeRequest(RESTRequest<? extends Resource> r)
RESTRequest
r
- The request to executeprotected void initAndStartService(RESTRequest<? extends Resource> request)
request
- Instance of RESTRequest
Processor.checkRequest(RESTRequest)
protected java.util.UUID generateID()
public void onReceiveResult(int resultCode, Bundle resultData)
RestService
and fires callbacks corresponding to the request'stateonReceiveResult
in interface RestResultReceiver.Receiver
resultCode
- The result code send by the RestService
resultData
- Bundle with result datapublic void retryRequest(RESTRequest<? extends Resource> request)
RequestListeners
, it Resource
and initializes and starts the servicerequest
- The request to retryRequestListeners.resetAllListeners()
,
initAndStartService(RESTRequest)
private void removeRequests(java.util.ArrayList<RESTRequest<? extends Resource>> requestsToRemove)
requestsCollection
.
Since requestsCollection
is an instance of CopyOnWriteArrayList this method is the only way to remove requests.requestsToRemove
- requestsCollection
public <T extends Resource> RESTRequest<T> getRequest(java.util.UUID requestID, java.lang.Class<T> clazz) throws RequestNotFoundException
RESTRequest
in requestsCollection
FIXME !requestID
- The RESTRequest
unique IDclazz
- The RESTRequest
's ResourceRepresentation
classRESTRequest
RequestNotFoundException
- if RESTRequest
is not foundpublic void displayRequest()
public static java.util.concurrent.CopyOnWriteArrayList<RESTRequest<? extends Resource>> getFailedRequests()
RESTRequest
RESTRequest
public Context getApplicationContext()
mContext
mContext
,
setApplicationContext(Context)
public void setApplicationContext(Context context)
mContext
context
- The application context for this WebServicemContext
,
getApplicationContext()
public java.lang.Class<? extends FailBehavior> getDefaultFailBehavior()
mDefaultFailBehavior
FailBehavior
for this WebServicemDefaultFailBehavior
,
setDefaultFailBehavior(Class)
public void setDefaultFailBehavior(java.lang.Class<? extends FailBehavior> defaultFailBehavior)
mDefaultFailBehavior
defaultFailBehavior
- Class object of the default FailBehavior
for this WebServicemDefaultFailBehavior
,
getDefaultFailBehavior()
public static java.util.concurrent.ExecutorService getThreadExecutor()