Class StackedRequestHandler

java.lang.Object
com.amazonaws.handlers.StackedRequestHandler
All Implemented Interfaces:
IRequestHandler2

@ThreadSafe public class StackedRequestHandler extends Object implements IRequestHandler2
Composite RequestHandler2 to execute a chain of RequestHandler2 implementations in stack order. That is if you have request handlers R1, R2, R3 the order of execution is as follows
    
   
 R1.beforeMarshalling   
 R2.beforeMarshalling   
 R3.beforeMarshalling   
    
 R1.beforeRequest   
 R2.beforeRequest   
 R3.beforeRequest   
    
 R3.beforeUnmarshalling
 R2.beforeUnmarshalling
 R1.beforeUnmarshalling
 
 R3.after(Response|Error)   
 R2.after(Response|Error)   
 R1.after(Response|Error)   
 
 
  • Constructor Details

    • StackedRequestHandler

      public StackedRequestHandler(RequestHandler2... requestHandlers)
    • StackedRequestHandler

      public StackedRequestHandler(List<RequestHandler2> requestHandlers)
  • Method Details

    • beforeMarshalling

      public AmazonWebServiceRequest beforeMarshalling(AmazonWebServiceRequest origRequest)
      Description copied from interface: IRequestHandler2
      Runs any additional processing logic on the specified request object before it is marshaled into an HTTP request.

      If you're going to modify the request, make sure to clone it first, modify the clone, and return it from this method. Otherwise your changes will leak out to the user, who might reuse the request object without realizing that it was modified as part of sending it the first time.

      Specified by:
      beforeMarshalling in interface IRequestHandler2
      Parameters:
      origRequest - the request passed in by the user
      Returns:
      the (possibly different) request to marshal
    • beforeRequest

      public void beforeRequest(Request<?> request)
      Description copied from interface: IRequestHandler2
      Runs any additional processing logic on the specified request (before it is executed by the client runtime).
      Specified by:
      beforeRequest in interface IRequestHandler2
      Parameters:
      request - The low level request being processed.
    • beforeUnmarshalling

      public HttpResponse beforeUnmarshalling(Request<?> request, HttpResponse origHttpResponse)
      Description copied from interface: IRequestHandler2
      Runs any additional processing logic on the specified response before it's unmarshalled. This callback is only invoked on successful responses that will be unmarsahlled into an appropriate modeled class and not for unsuccessful responses that will be unmarshalled into a subclass of AmazonServiceException
      Specified by:
      beforeUnmarshalling in interface IRequestHandler2
      Parameters:
      request - The low level request being processed.
      origHttpResponse - The Raw HTTP response before being unmarshalled
      Returns:
      HttpResponse to replace the actual response. May be a mutated version of the original or a completely new HttpResponse object
    • afterResponse

      public void afterResponse(Request<?> request, Response<?> response)
      Description copied from interface: IRequestHandler2
      Runs any additional processing logic on the specified request (after is has been executed by the client runtime).
      Specified by:
      afterResponse in interface IRequestHandler2
      Parameters:
      request - The low level request being processed.
      response - The response generated from the specified request.
    • afterError

      public void afterError(Request<?> request, Response<?> response, Exception e)
      Description copied from interface: IRequestHandler2
      Runs any additional processing logic on a request after it has failed.
      Specified by:
      afterError in interface IRequestHandler2
      Parameters:
      request - The request that generated an error.
      response - the response or null if the failure occurred before the response is made available
      e - The error that resulted from executing the request.