01: /*
02: * $Id: InboundRouter.java 10529 2008-01-25 05:58:36Z dfeist $
03: * --------------------------------------------------------------------------------------
04: * Copyright (c) MuleSource, Inc. All rights reserved. http://www.mulesource.com
05: *
06: * The software in this package is published under the terms of the CPAL v1.0
07: * license, a copy of which has been included with this distribution in the
08: * LICENSE.txt file.
09: */
10:
11: package org.mule.api.routing;
12:
13: import org.mule.api.MessagingException;
14: import org.mule.api.MuleEvent;
15:
16: /**
17: * <code>InboundRouter</code> defines an interface for an inbound Message
18: * router. An inbound router is used to control how events are received by a
19: * service. One or more of these routers can be associated with a
20: * InboundRouterCollection implementation.
21: *
22: * @see InboundRouterCollection
23: */
24:
25: public interface InboundRouter extends Router {
26: /**
27: * A received MuleEvent is passed to this method for processing. The router can
28: * control processing by either 1. passing back a null to indicate that the
29: * router has either discarded the event of the event has been stored for further
30: * processing. A reaosn for storing the event might be that other events in it's
31: * correlation group are expected to be received. 2. Pass back an array of one or
32: * more events to be processed by the service. Often 1 event is returned, i.e.
33: * in the case of event aggregation. The router may return an array of events if
34: * a set of events have been resequenced or multiple events have been generated
35: * from a single event.
36: *
37: * @param event the event received by the inbound endpoint before it is passed to
38: * the service
39: * @return null to indicate the event has been stored/destroyed or an array of
40: * events to be processed by the service
41: * @throws MessagingException if an error occurs during processing of the event
42: */
43: MuleEvent[] process(MuleEvent event) throws MessagingException;
44:
45: /**
46: * Determines if the event should be processed by this router. Routers can be
47: * selectively invoked by configuing a filter on them. Usually the filter is
48: * applied to the event when calling this method. All core Mule inbound routers
49: * extend the SelectiveConsumer router.
50: *
51: * @param event the current event to evaluate
52: * @return true if the event should be processed by this router
53: * @throws MessagingException if the event cannot be evaluated
54: * @see org.mule.routing.inbound.SelectiveConsumer
55: */
56: boolean isMatch(MuleEvent event) throws MessagingException;
57: }
|