org.mule.extras.spring.events
Class MuleEventMulticaster

java.lang.Object
  extended byorg.mule.extras.spring.events.MuleEventMulticaster
All Implemented Interfaces:
org.springframework.context.ApplicationContextAware, org.springframework.context.event.ApplicationEventMulticaster, org.springframework.beans.factory.DisposableBean

public class MuleEventMulticaster
extends Object
implements org.springframework.context.event.ApplicationEventMulticaster, org.springframework.context.ApplicationContextAware, org.springframework.beans.factory.DisposableBean

MuleEventMulticaster is an implementation of a Spring ApplicationeventMulticaster. This implementation allows Mule event to be sent and received through the Spring ApplicationContext. This allows any Spring bean to receive and send events from any transport that Mule supports such as Jms, Http, Tcp, Pop3, Smtp, File, etc. All a bean needs to do to receive and send events is to implement MuleEventListener. Beans can also have subscriptions to certain events by implementing MuleSubscriptionEventListener, where the bean can provide a list of endpoints on which to receive events i.e. <bean id="myListener" class="com.foo.MyListener"> <property name="subscriptions"> <list> <value>jms://customer.support</value> <value>pop3://support:123456@mail.mycompany.com</value> </list> </property> </bean>

Endpoints are specified as a Mule Url which is used to register a listener for the subscription In the previous version of the MuleEventMulticaster it was possible to specify wildcard endpoints. This is still possible but you need to tell the multicaster which specific endpoints to listen on and then your subscription listeners can use wildcards. To register the specific endpoints on the Event Multicaster you use the subscriptions property.

<bean id="applicationEventMulticaster" class="org.mule.extras.spring.events.MuleEventMulticaster"> <property name="subscriptions"> <list> <value>jms://orders.queue</value> <value>jms://another.orders.queue</value> </list> </property> </bean>

<bean id="myListener" class="com.foo.MyListener"> <property name="subscriptions"> <list> <value>jms://*.orders.*.</value> </list> </property> </bean>

See Also:
MuleEventListener, MuleSubscriptionEventListener, ApplicationEventMulticaster

Field Summary
protected  org.springframework.context.ApplicationContext applicationContext
          The Spring acpplication context
protected  boolean asynchronous
          Determines whether events will be processed asynchronously
protected  ExecutorService asyncPool
          An ExecutorService for handling asynchronous events
protected  UMOComponent component
          The mule instance compoennt for the Multicaster
protected  UMODescriptor descriptor
          The Mule descriptor that belongs to this component instnace in Mule
protected  Map endpointMappings
          Any logical endpointUri mappings to register with mule.
static String EVENT_MULTICASTER_DESCRIPTOR_NAME
           
protected  ExceptionListener exceptionListener
          Used to store parsed endpoints
protected  Set listeners
          The set of listeners for this Multicaster
protected static Log logger
          logger used by this class
protected  Class subscriptionFilter
          The filter used to match subscriptions
protected  String[] subscriptions
          A list of endpoints the eventMulticaster will receive events on Note that if this eventMulticaster has a Mule Descriptor associated with it, these endpoints are ignored and the ones on the Mule Descriptor are used.
 
Constructor Summary
MuleEventMulticaster()
           
 
Method Summary
 void addApplicationListener(org.springframework.context.ApplicationListener listener)
          Adds a listener to the the Multicaster.
protected  ObjectFilter createFilter(String pattern)
           
 void destroy()
           
protected  void dispatchEvent(MuleApplicationEvent applicationEvent)
          Will dispatch an application event through Mule
protected  UMODescriptor getDefaultDescriptor()
           
 Map getEndpointMappings()
          Any logical endpointUri mappings to register with mule.
 Class getSubscriptionFilter()
          the type of filter used to filter subscriptions
 String[] getSubscriptions()
          A list of endpoints the eventMulticaster will receive events on Note that if this eventMulticaster has a Mule Descriptor associated with it, these endpoints are ignored and the ones on the Mule Descriptor are used.
protected  void initMule()
           
 boolean isAsynchronous()
          Determines whether events will be processed asynchronously
 void multicastEvent(org.springframework.context.ApplicationEvent e)
          Method is used to dispatch events to listeners registered with the EventManager or dispatches events to Mule depending on the type and state of the event received.
 void onMuleEvent(UMOEventContext context)
          This is the callback method used by Mule to give Mule events to this Multicaster
protected  void registerConnectors()
           
protected  void registerEndpointMappings()
           
protected  void registerGlobalEndpoints()
           
protected  void registerMulticasterDescriptor()
           
protected  void registerTransformers()
           
 void removeAllListeners()
          Removes all the listeners from the multicaster
 void removeApplicationListener(org.springframework.context.ApplicationListener listener)
          Removes a listener from the multicaster
 void setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
          Set the current Spring application context
 void setAsynchronous(boolean asynchronous)
          Determines whether events will be processed asynchronously
 void setEndpointMappings(Map endpointMappings)
          Any logical endpointUri mappings to register with mule.
protected  void setExceptionListener(ExceptionListener listener)
           
 void setSubscriptionFilter(Class subscriptionFilter)
          sets the type of filter used to filter subscriptions
 void setSubscriptions(String[] subscriptions)
          A list of endpoints the eventMulticaster will receive events on Note that if this eventMulticaster has a Mule Descriptor associated with it, these endpoints are ignored and the ones on the Mule Descriptor are used.
protected  void setSubscriptionsOnDescriptor(MuleDescriptor descriptor)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

EVENT_MULTICASTER_DESCRIPTOR_NAME

public static final String EVENT_MULTICASTER_DESCRIPTOR_NAME
See Also:
Constant Field Values

logger

protected static final Log logger
logger used by this class


listeners

protected final Set listeners
The set of listeners for this Multicaster


asynchronous

protected boolean asynchronous
Determines whether events will be processed asynchronously


asyncPool

protected ExecutorService asyncPool
An ExecutorService for handling asynchronous events


endpointMappings

protected Map endpointMappings
Any logical endpointUri mappings to register with mule. These allow for friendly names to be used in place of urls i.e. email-orders -> smtp://orders:password@restaurant.com


subscriptions

protected String[] subscriptions
A list of endpoints the eventMulticaster will receive events on Note that if this eventMulticaster has a Mule Descriptor associated with it, these endpoints are ignored and the ones on the Mule Descriptor are used. These are here for convenience, the event multicaster will use these to create a default MuleDescriptor for itself at runtime


applicationContext

protected org.springframework.context.ApplicationContext applicationContext
The Spring acpplication context


descriptor

protected UMODescriptor descriptor
The Mule descriptor that belongs to this component instnace in Mule


component

protected UMOComponent component
The mule instance compoennt for the Multicaster


subscriptionFilter

protected Class subscriptionFilter
The filter used to match subscriptions


exceptionListener

protected ExceptionListener exceptionListener
Used to store parsed endpoints

Constructor Detail

MuleEventMulticaster

public MuleEventMulticaster()
Method Detail

addApplicationListener

public void addApplicationListener(org.springframework.context.ApplicationListener listener)
Adds a listener to the the Multicaster. If asynchronous is set to true, an AsynchronousMessageListener is used to wrap the listener. This listener will be initialised with a threadpool. The configuration for the threadpool can be set on this multicaster or inherited from the MuleManager configuration, which is good for most cases.

Specified by:
addApplicationListener in interface org.springframework.context.event.ApplicationEventMulticaster
Parameters:
listener - the ApplicationListener to register with this Multicaster
See Also:
AsynchronousEventListener, ThreadingProfile

removeApplicationListener

public void removeApplicationListener(org.springframework.context.ApplicationListener listener)
Removes a listener from the multicaster

Specified by:
removeApplicationListener in interface org.springframework.context.event.ApplicationEventMulticaster
Parameters:
listener - the listener to remove

removeAllListeners

public void removeAllListeners()
Removes all the listeners from the multicaster

Specified by:
removeAllListeners in interface org.springframework.context.event.ApplicationEventMulticaster

multicastEvent

public void multicastEvent(org.springframework.context.ApplicationEvent e)
Method is used to dispatch events to listeners registered with the EventManager or dispatches events to Mule depending on the type and state of the event received. If the event is not a Mule event it will be dispatched to any listeners registered that are NOT MuleEventListeners. If the event is a Mule event and there is no source event attached to it, it is assumed that the event was dispatched by an object in the context using context.publishEvent() and will be dispatched by Mule. If the event does have a source event attached to it, it is assumed that the event was dispatched by Mule and will be delivered to any listeners subscribed to the event.

Specified by:
multicastEvent in interface org.springframework.context.event.ApplicationEventMulticaster
Parameters:
e - application event received by the context

isAsynchronous

public boolean isAsynchronous()
Determines whether events will be processed asynchronously

Returns:
tru if asynchronous. The default is false

setAsynchronous

public void setAsynchronous(boolean asynchronous)
Determines whether events will be processed asynchronously

Parameters:
asynchronous - true if aysnchronous

onMuleEvent

public void onMuleEvent(UMOEventContext context)
                 throws TransformerException,
                        MalformedEndpointException
This is the callback method used by Mule to give Mule events to this Multicaster

Parameters:
context - the context received by Mule
Throws:
TransformerException
MalformedEndpointException

dispatchEvent

protected void dispatchEvent(MuleApplicationEvent applicationEvent)
                      throws ApplicationEventException
Will dispatch an application event through Mule

Parameters:
applicationEvent - the Spring event to be dispatched
Throws:
ApplicationEventException - if the event cannot be dispatched i.e. if the underlying transport throws an exception

setApplicationContext

public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
                           throws org.springframework.beans.BeansException
Set the current Spring application context

Specified by:
setApplicationContext in interface org.springframework.context.ApplicationContextAware
Parameters:
applicationContext -
Throws:
org.springframework.beans.BeansException

initMule

protected void initMule()

registerMulticasterDescriptor

protected void registerMulticasterDescriptor()
                                      throws UMOException
Throws:
UMOException

setSubscriptionsOnDescriptor

protected void setSubscriptionsOnDescriptor(MuleDescriptor descriptor)
                                     throws UMOException
Throws:
UMOException

registerEndpointMappings

protected void registerEndpointMappings()
                                 throws InitialisationException
Throws:
InitialisationException

registerConnectors

protected void registerConnectors()
                           throws UMOException
Throws:
UMOException

registerGlobalEndpoints

protected void registerGlobalEndpoints()
                                throws UMOException
Throws:
UMOException

registerTransformers

protected void registerTransformers()
                             throws UMOException
Throws:
UMOException

getDefaultDescriptor

protected UMODescriptor getDefaultDescriptor()
                                      throws UMOException
Throws:
UMOException

createFilter

protected ObjectFilter createFilter(String pattern)

getSubscriptionFilter

public Class getSubscriptionFilter()
the type of filter used to filter subscriptions

Returns:
the class of the filter to use. The default is WildcardFilter
See Also:
WildcardFilter

setSubscriptionFilter

public void setSubscriptionFilter(Class subscriptionFilter)
sets the type of filter used to filter subscriptions

Parameters:
subscriptionFilter - the class of the filter to use.

getEndpointMappings

public Map getEndpointMappings()
Any logical endpointUri mappings to register with mule. These allow for friendly names to be used in place of urls i.e. email-orders -> smtp://orders:password@restaurant.com

Returns:
endpointMappings a map of logical names and endpoiut url strings

setEndpointMappings

public void setEndpointMappings(Map endpointMappings)
Any logical endpointUri mappings to register with mule. These allow for friendly names to be used in place of urls i.e. email-orders -> smtp://orders:password@restaurant.com

Parameters:
endpointMappings - a map of logical names and endpoiut url strings

getSubscriptions

public String[] getSubscriptions()
A list of endpoints the eventMulticaster will receive events on Note that if this eventMulticaster has a Mule Descriptor associated with it, these endpoints are ignored and the ones on the Mule Descriptor are used. These are here for convenience, the event multicaster will use these to create a default MuleDescriptor for itself at runtime

Returns:
endpoints List being listened on

setSubscriptions

public void setSubscriptions(String[] subscriptions)
A list of endpoints the eventMulticaster will receive events on Note that if this eventMulticaster has a Mule Descriptor associated with it, these endpoints are ignored and the ones on the Mule Descriptor are used. These are here for convenience, the event multicaster will use these to create a default MuleDescriptor for itself at runtime

Parameters:
subscriptions - a list of enpoints to listen on

setExceptionListener

protected void setExceptionListener(ExceptionListener listener)

destroy

public void destroy()
             throws Exception
Specified by:
destroy in interface org.springframework.beans.factory.DisposableBean
Throws:
Exception


Copyright © 2003-2008 MuleSource, Inc.. All Rights Reserved.