/** * Initializes and prepares a DELETE request or retrieve it if already pending. * * @param clazz Class of ResourceRepresentation holds by request * @param uri Uri to fetch * @param resource Resource to send */ protected <R extends ResourceRepresentation<?>> RESTRequest<R> delete( Class<R> clazz, String uri, ResourceRepresentation<?> resource) { RESTRequest<R> request = requestRoutine(clazz, uri, resource, true); request.setResourceRepresentation(resource); initRequest(request, HTTPVerb.DELETE, uri); return request; }
/** * Initializes and prepares a PUT request or retrieve it if already pending. * * @param clazz Class of ResourceRepresentation holds by request * @param uri URI to fetch * @param resource Resource to send */ protected <R extends ResourceRepresentation<?>> RESTRequest<R> put( Class<R> clazz, String uri, ResourceRepresentation<?> resource) { RESTRequest<R> request = requestRoutine(clazz, uri, resource, false); request.setResourceRepresentation(resource); initRequest(request, HTTPVerb.PUT, uri); return request; }
/** * Receive result from {@link RestService} and fires callbacks corresponding to the request'state * * @param resultCode The result code send by the {@link RestService} * @param resultData Bundle with result data */ @Override public void onReceiveResult(int resultCode, Bundle resultData) { RESTRequest<?> r = (RESTRequest<?>) resultData.getSerializable(RestService.REQUEST_KEY); List<RESTRequest<? extends ResourceRepresentation<?>>> toRemove = new ArrayList<RESTRequest<?>>(); for (Iterator<RESTRequest<?>> it = mRequestCollection.iterator(); it.hasNext(); ) { RESTRequest<?> request = it.next(); Log.d("RESTDroid", "onReceiveResult"); if (request.getID().equals(r.getID())) { try { request.setResultStream(r.getResultStream()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } request.setResultCode(resultCode); request.setPending(false); if (resultCode >= 200 && resultCode <= 210) { request.setResourceRepresentation(r.getResourceRepresentation()); if (request.triggerOnFinishedRequestListeners()) // it.remove(); toRemove.add(request); Log.d("RESTDroid", "remove"); } else { request.setResourceRepresentation(r.getResourceRepresentation()); if (request.triggerOnFailedRequestListeners()) // it.remove(); toRemove.add(request); Log.d("RESTDroid", "remove"); } Intent i = resultData.getParcelable(RestService.INTENT_KEY); if (null == mIntentsMap.remove(request.getID())) throw new RuntimeException("Cannot find request in intents map"); mContext.stopService(i); } } Log.d("RESTDroid", "removeAll"); // mRequestCollection.removeAll(toRemove); /*if(resultCode >= 200 && resultCode <= 210) retryFailedRequest();*/ }