@Override public void beforeRequest(Request<?> request) { for (RequestHandler2 handler : inOrderRequestHandlers) { handler.beforeRequest(request); } }
@Override public void afterResponse(Request<?> request, Response<?> response) { for(RequestHandler2 handler : reverseOrderRequestHandlers) { handler.afterResponse(request, response); } }
private void reportClientExecutionTimeout(ClientExecutionTimeoutException exception) { if (csmRequestHandler != null) { csmRequestHandler.afterError(request, null, exception); } }
@Test public void testDelegation() { for (int i = 0; i < bs.length; i++) { assertFalse(bs[i]); } RequestHandler old = createRequestHandler(); RequestHandler2 v2 = new RequestHandler2Adaptor(old); v2.beforeRequest(null); int i = 0; assertTrue("beforeRequest is expected to have been invoked", bs[i++]); bs[i - 1] = false; // reset the flag v2.afterResponse(null, null); assertTrue("beforeRequest is expected to have been invoked", bs[i++]); bs[i - 1] = false; // reset the flag v2.afterError(null, null, null); assertTrue("beforeRequest is expected to have been invoked", bs[i++]); bs[i - 1] = false; // reset the flag }
/** * Removes a request handler from the list of registered handlers that are run * as part of a request's lifecycle. * * @param requestHandler * The handler to remove from the current list of request * handlers. * @deprecated use {@link AwsClientBuilder#withRequestHandlers(RequestHandler2...)} */ @Deprecated public void removeRequestHandler(RequestHandler requestHandler) { checkMutability(); requestHandler2s.remove(RequestHandler2.adapt(requestHandler)); }
@Override public AmazonWebServiceRequest beforeMarshalling(AmazonWebServiceRequest origRequest) { AmazonWebServiceRequest toReturn = origRequest; for (RequestHandler2 handler : inOrderRequestHandlers) { toReturn = handler.beforeMarshalling(toReturn); } return toReturn; }
@Override public void afterAttempt(HandlerAfterAttemptContext context) { for(RequestHandler2 handler : reverseOrderRequestHandlers) { handler.afterAttempt(context); } }
/** * @deprecated by {@link #addRequestHandler(RequestHandler2)}. * * Appends a request handler to the list of registered handlers that are run * as part of a request's lifecycle. * * @param requestHandler * The new handler to add to the current list of request * handlers. */ @Deprecated public void addRequestHandler(RequestHandler requestHandler) { checkMutability(); requestHandler2s.add(RequestHandler2.adapt(requestHandler)); }
/** * Runs the {@code beforeMarshalling} method of any {@code RequestHandler2}s associated with * this client. * * @param request the request passed in from the user * @return The (possibly different) request to marshall */ @SuppressWarnings("unchecked") protected final <T extends AmazonWebServiceRequest> T beforeMarshalling(T request) { T local = request; for (RequestHandler2 handler : requestHandler2s) { local = (T) handler.beforeMarshalling(local); } return local; }
private <T> void afterAttempt(HandlerAfterAttemptContext context) throws InterruptedException { for (RequestHandler2 handler2 : requestHandler2s) { handler2.afterAttempt(context); checkInterrupted(context.getResponse()); } }
private <T> void beforeRequest(Request<T> request) { if (requestHandler2s != null) { for (RequestHandler2 requestHandler2 : requestHandler2s) { requestHandler2.beforeRequest(request); } } }
private <T> void afterResponse(Response<T> response) throws InterruptedException { for (RequestHandler2 handler2 : requestHandler2s) { handler2.afterResponse(request, response); checkInterrupted(response); } }
@Override public void afterError(Request<?> request, Response<?> response, Exception e) { for(RequestHandler2 handler : reverseOrderRequestHandlers) { handler.afterError(request, response, e); } } }
private RequestHandler2 createRequestHandler(String handlerClassName, Class<?> handlerApiClass) throws ClassNotFoundException, InstantiationException, IllegalAccessException { handlerClassName = handlerClassName.trim(); if (handlerClassName.equals("")) { return null; } Class<?> requestHandlerClass = ClassLoaderHelper.loadClass( handlerClassName, handlerApiClass, getClass()); Object requestHandlerObject = requestHandlerClass.newInstance(); if (handlerApiClass.isInstance(requestHandlerObject)) { if (handlerApiClass == RequestHandler2.class) { return (RequestHandler2) requestHandlerObject; } else if (handlerApiClass == RequestHandler.class) { return RequestHandler2.adapt((RequestHandler) requestHandlerObject); } else { throw new IllegalStateException(); } } else { throw new AmazonClientException( "Unable to instantiate request handler chain for client. " + "Listed request handler ('" + handlerClassName + "') " + "does not implement the " + handlerApiClass + " API."); } }
/** * Runs the {@code beforeMarshalling} method of any * {@code RequestHandler2}s associated with this client. * * @param request the request passed in from the user * @return the (possibly different) request to marshal */ @SuppressWarnings("unchecked") protected final <T extends AmazonWebServiceRequest> T beforeMarshalling( T request) { T local = request; for (RequestHandler2 handler : requestHandler2s) { local = (T) handler.beforeMarshalling(local); } return local; }
@Override public void afterAttempt(HandlerAfterAttemptContext context) { for(RequestHandler2 handler : reverseOrderRequestHandlers) { handler.afterAttempt(context); } }
private void runBeforeRequestHandlers() { AWSCredentials credentials = getCredentialsFromContext(); request.addHandlerContext(HandlerContextKey.AWS_CREDENTIALS, credentials); // Apply any additional service specific request handlers that need to be run for (RequestHandler2 requestHandler2 : requestHandler2s) { // If the request handler is a type of CredentialsRequestHandler, then set the credentials in the request handler. if (requestHandler2 instanceof CredentialsRequestHandler) { ((CredentialsRequestHandler) requestHandler2).setCredentials(credentials); } requestHandler2.beforeRequest(request); } }
<T> void afterResponse(Request<?> request, List<RequestHandler2> requestHandler2s, Response<T> response, TimingInfo timingInfo) { for (final RequestHandler2 handler2 : requestHandler2s) { handler2.afterResponse(request, response); } }
private void afterError(Response<?> response, AmazonClientException e) throws InterruptedException { for (RequestHandler2 handler2 : requestHandler2s) { handler2.afterError(request, response, e); checkInterrupted(response); } }
/** * @deprecated by {@link #addRequestHandler(RequestHandler2)}. Appends a * request handler to the list of registered handlers that are * run as part of a request's lifecycle. * @param requestHandler The new handler to add to the current list of * request handlers. */ @Deprecated public void addRequestHandler(final RequestHandler requestHandler) { requestHandler2s.add(RequestHandler2.adapt(requestHandler)); }