View Javadoc

1   /*
2    * $Id: UMOResponseRouter.java 7963 2007-08-21 08:53:15Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.umo.routing;
12  
13  import org.mule.umo.UMOEvent;
14  import org.mule.umo.UMOMessage;
15  
16  /**
17   * <code>UMOResponseRouter</code> is a router that handles response flow. Response
18   * Aggregators are used to collect responses that are usually sent to replyTo
19   * endpoints set on outbound routers. When an event is sent out via an outbound
20   * router, the response router will block the response flow on an UMOComponent until
21   * the Response Router resolves a reply or times out.
22   */
23  
24  public interface UMOResponseRouter extends UMORouter
25  {
26      /**
27       * This method is invoked when an event is received via an endpoint on this
28       * Response Router. It is responsible for tieing up the event it receives with
29       * responses waiting to return back to the callee. This method will be called by
30       * a different thread to the getResponse method. The getResponse() method block
31       * the response execution until the process method signals that a match is found.
32       * 
33       * @param event
34       * @throws RoutingException
35       */
36      void process(UMOEvent event) throws RoutingException;
37  
38      /**
39       * Called by the Mule framework once the outbound router has been processed on a
40       * component the Message passed in is the response message from the component (or
41       * outbount router if a response was returned). This method is invoked to signal
42       * that the event flow for the component has completed and what ever message is
43       * returned from this method with be sent back as the response. This method will
44       * block until the correct response for the given Message has been received.
45       * 
46       * @param message The processed message from the Component
47       * @return the response message sent back to the callee
48       * @throws RoutingException
49       * @see UMOMessage
50       * @see org.mule.umo.UMOComponent
51       */
52      UMOMessage getResponse(UMOMessage message) throws RoutingException;
53  
54      /**
55       * Sets the timeout delay that the response router should wait for a response for
56       * a given event. If the time expires and exception will be thrown by Mule.
57       * 
58       * @param timeout the time in milliseconds to wait for a response event
59       */
60      void setTimeout(int timeout);
61  
62      /**
63       * Returns the timeout delay that the response router should wait for a response
64       * for a given event. If the time expires and exception will be thrown by Mule.
65       * 
66       * @return the time in milliseconds to wait for a response event
67       */
68      int getTimeout();
69  
70      /**
71       * Should the router fail and throw an exception if a timeout occurs or should it return
72       * the events received so far.
73       * //TODO This method is not implemented yet
74       * @param fail
75       */
76      void setFailOnTimeout(boolean fail);
77  
78      /**
79       * Should the router fail and throw an exception if a timeout occurs or should it return
80       * the events received so far.
81       * //TODO This method is not implemented yet
82       * @return
83       */
84      boolean isFailOnTimeout();
85  }