View Javadoc

1   /*
2    * $Id: UMOInboundRouter.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.MessagingException;
14  import org.mule.umo.UMOEvent;
15  
16  /**
17   * <code>UMOInboundRouter</code> defines an interface for an inbound Message
18   * router. An inbound router is used to control how events are received by a
19   * component. One or more of these routers can be associated with a
20   * UMOInboundRouterCollection implementation.
21   * 
22   * @see UMOInboundRouterCollection
23   */
24  
25  public interface UMOInboundRouter extends UMORouter
26  {
27      /**
28       * A received UMOEvent is passed to this method for processing. The router can
29       * control processing by either 1. passing back a null to indicate that the
30       * router has either discarded the event of the event has been stored for further
31       * processing. A reaosn for storing the event might be that other events in it's
32       * correlation group are expected to be received. 2. Pass back an array of one or
33       * more events to be processed by the component. Often 1 event is returned, i.e.
34       * in the case of event aggregation. The router may return an array of events if
35       * a set of events have been resequenced or multiple events have been generated
36       * from a single event.
37       * 
38       * @param event the event received by the inbound endpoint before it is passed to
39       *            the component
40       * @return null to indicate the event has been stored/destroyed or an array of
41       *         events to be processed by the component
42       * @throws MessagingException if an error occurs during processing of the event
43       */
44      UMOEvent[] process(UMOEvent event) throws MessagingException;
45  
46      /**
47       * Determines if the event should be processed by this router. Routers can be
48       * selectively invoked by configuing a filter on them. Usually the filter is
49       * applied to the event when calling this method. All core Mule inbound routers
50       * extend the SelectiveConsumer router.
51       * 
52       * @param event the current event to evaluate
53       * @return true if the event should be processed by this router
54       * @throws MessagingException if the event cannot be evaluated
55       * @see org.mule.routing.inbound.SelectiveConsumer
56       */
57      boolean isMatch(UMOEvent event) throws MessagingException;
58  }