View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule.api.retry;
8   
9   import org.mule.api.MuleContext;
10  import org.mule.api.MuleMessage;
11  
12  import java.util.Map;
13  
14  /**
15   * The RetryContext is used to store any data which carries over from 
16   * attempt to attempt such as response messages.
17   */
18  public interface RetryContext
19  {
20      String FAILED_RECEIVER = "failedReceiver";
21      String FAILED_DISPATCHER = "failedDispatcher";
22      String FAILED_REQUESTER = "failedRequester";
23  
24      /**
25       * @return a read-only meta-info map or an empty map, never null.
26       */
27      Map<Object, Object> getMetaInfo();
28  
29      MuleMessage[] getReturnMessages();
30  
31      MuleMessage getFirstReturnMessage();
32  
33      void setReturnMessages(MuleMessage[] returnMessages);
34  
35      void addReturnMessage(MuleMessage result);
36  
37      String getDescription();
38  
39      MuleContext getMuleContext();
40  
41      /**
42       * The most recent failure which prevented the context from validating the connection. Note that the method may
43       * return null. Instead, the {@link #isOk()} should be consulted first.
44       *
45       * @return last failure or null
46       */
47      Throwable getLastFailure();
48  
49      /**
50       * Typically called by validation logic to mark no problems with the current connection. Additionally,
51       * clears any previous failure set.
52       */
53      void setOk();
54  
55      /**
56       * Typically called by validation logic to mark a problem and an optional root cause.
57       *
58       * @param lastFailure the most recent failure, can be null
59       */
60      void setFailed(Throwable lastFailure);
61  
62      /**
63       * Note that it's possible for an implementation to return false and have no failure specified, thus
64       * the subsequent {@link #getLastFailure()} may return null.
65       *
66       * @return true if no problems detected before
67       */
68      boolean isOk();
69  }