org.mule
Class DefaultMuleEvent

java.lang.Object
  extended by java.util.EventObject
      extended by org.mule.DefaultMuleEvent
All Implemented Interfaces:
java.io.Serializable, MuleEvent, ThreadSafeAccess, DeserializationPostInitialisable

public class DefaultMuleEvent
extends java.util.EventObject
implements MuleEvent, ThreadSafeAccess, DeserializationPostInitialisable

DefaultMuleEvent represents any data event occurring in the Mule environment. All data sent or received within the Mule environment will be passed between components as an MuleEvent.

The MuleEvent holds some data and provides helper methods for obtaining the data in a format that the receiving Mule component understands. The event can also maintain any number of properties that can be set and retrieved by Mule components.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.mule.api.ThreadSafeAccess
ThreadSafeAccess.AccessControl
 
Nested classes/interfaces inherited from interface org.mule.util.store.DeserializationPostInitialisable
DeserializationPostInitialisable.Implementation
 
Field Summary
protected  java.lang.String[] ignoredPropertyOverrides
           
protected  Log logger
          logger used by this class
 
Fields inherited from class java.util.EventObject
source
 
Fields inherited from interface org.mule.api.MuleEvent
TIMEOUT_DO_NOT_WAIT, TIMEOUT_NOT_SET_VALUE, TIMEOUT_WAIT_FOREVER
 
Fields inherited from interface org.mule.api.ThreadSafeAccess
READ, WRITE
 
Constructor Summary
DefaultMuleEvent(MuleMessage message, ImmutableEndpoint endpoint, FlowConstruct service, MuleEvent previousEvent)
          Properties cache that only reads properties once from the inbound message and merges them with any properties on the endpoint.
DefaultMuleEvent(MuleMessage message, ImmutableEndpoint endpoint, MuleSession session)
           
DefaultMuleEvent(MuleMessage message, ImmutableEndpoint endpoint, MuleSession session, ResponseOutputStream outputStream)
           
DefaultMuleEvent(MuleMessage message, MuleEvent rewriteEvent)
          A helper constructor used to rewrite an event payload
 
Method Summary
 void assertAccess(boolean write)
          This method may be called before data in the object are accessed.
 boolean equals(java.lang.Object o)
           
protected  void fillProperties(MuleEvent previousEvent)
           
protected  java.lang.String generateEventId()
           
 Credentials getCredentials()
           
 java.lang.String getEncoding()
          Gets the encoding for this message.
 ImmutableEndpoint getEndpoint()
          Gets the endpoint associated with this event
 FlowConstruct getFlowConstruct()
          Gets the recipient service of this event
 java.lang.String getId()
          Every event in the system is assigned a universally unique id (UUID).
 MuleMessage getMessage()
          Returns the message payload for this event
 byte[] getMessageAsBytes()
          Returns the contents of the message as a byte array.
 java.lang.String getMessageAsString()
          Returns the message contents as a string If necessary this will use the encoding set on the event
 java.lang.String getMessageAsString(java.lang.String encoding)
          Returns the message contents for logging
 MuleContext getMuleContext()
          Returns the muleContext for the Mule node that this event was received in
 java.io.OutputStream getOutputStream()
          An output stream can optionally be used to write response data to an incoming message.
 java.lang.Object getProperty(java.lang.String name)
          Deprecated. use appropriate scope-aware calls on the MuleMessage (via event.getMessage())
 java.lang.Object getProperty(java.lang.String name, java.lang.Object defaultValue)
          Deprecated. use appropriate scope-aware calls on the MuleMessage (via event.getMessage())
 MuleSession getSession()
          Retrieves the service session for the current event
 int getTimeout()
          The number of milliseconds to wait for a return event when running synchronously.
 int hashCode()
           
protected  boolean ignoreProperty(java.lang.String key)
          This method is used to determine if a property on the previous event should be ignored for the next event.
 boolean isStopFurtherProcessing()
          Determines whether the default processing for this event will be executed
 ThreadSafeAccess newThreadCopy()
           
 void resetAccessControl()
          This method should ONLY be used in the construction of composite ThreadSafeAccess instances.
protected  void setCredentials()
           
 void setStopFurtherProcessing(boolean stopFurtherProcessing)
          Setting this parameter will stop the Mule framework from processing this event in the standard way.
 void setTimeout(int timeout)
          The number of milliseconds to wait for a return event when running synchronously.
 java.lang.String toString()
           
 java.lang.Object transformMessage()
          Deprecated. 
<T> T
transformMessage(java.lang.Class<T> outputType)
          Transforms the message into the requested format.
<T> T
transformMessage(DataType<T> outputType)
          Transforms the message into the requested format.
 byte[] transformMessageToBytes()
          Deprecated. use transformMessage(org.mule.api.transformer.DataType) instead
 java.lang.String transformMessageToString()
          Returns the message transformed into it's recognised or expected format and then into a String.
 
Methods inherited from class java.util.EventObject
getSource
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

logger

protected transient Log logger
logger used by this class


ignoredPropertyOverrides

protected java.lang.String[] ignoredPropertyOverrides
Constructor Detail

DefaultMuleEvent

public DefaultMuleEvent(MuleMessage message,
                        ImmutableEndpoint endpoint,
                        FlowConstruct service,
                        MuleEvent previousEvent)
Properties cache that only reads properties once from the inbound message and merges them with any properties on the endpoint. The message properties take precedence over the endpoint properties

Parameters:
message -
endpoint -
service -
previousEvent -

DefaultMuleEvent

public DefaultMuleEvent(MuleMessage message,
                        ImmutableEndpoint endpoint,
                        MuleSession session)

DefaultMuleEvent

public DefaultMuleEvent(MuleMessage message,
                        ImmutableEndpoint endpoint,
                        MuleSession session,
                        ResponseOutputStream outputStream)

DefaultMuleEvent

public DefaultMuleEvent(MuleMessage message,
                        MuleEvent rewriteEvent)
A helper constructor used to rewrite an event payload

Parameters:
message - The message to use as the current payload of the event
rewriteEvent - the previous event that will be used as a template for this event
Method Detail

fillProperties

protected void fillProperties(MuleEvent previousEvent)

ignoreProperty

protected boolean ignoreProperty(java.lang.String key)
This method is used to determine if a property on the previous event should be ignored for the next event. This method is here because we don't have proper scoped handling of meta data yet The rules are
  1. If a property is already set on the current event don't overwrite with the previous event value
  2. If the property name appears in the ignoredPropertyOverrides list, then we always set it on the new event

Parameters:
key - The name of the property to ignore
Returns:
true if the property should be ignored, false otherwise

setCredentials

protected void setCredentials()

getCredentials

public Credentials getCredentials()
Specified by:
getCredentials in interface MuleEvent

getMessage

public MuleMessage getMessage()
Description copied from interface: MuleEvent
Returns the message payload for this event

Specified by:
getMessage in interface MuleEvent
Returns:
the message payload for this event

getMessageAsBytes

public byte[] getMessageAsBytes()
                         throws DefaultMuleException
Description copied from interface: MuleEvent
Returns the contents of the message as a byte array.

Specified by:
getMessageAsBytes in interface MuleEvent
Returns:
the contents of the message as a byte array
Throws:
DefaultMuleException

transformMessage

public <T> T transformMessage(java.lang.Class<T> outputType)
                   throws TransformerException
Description copied from interface: MuleEvent
Transforms the message into the requested format. The transformer used is the one configured on the endpoint through which this event was received.

Specified by:
transformMessage in interface MuleEvent
Parameters:
outputType - The requested output type.
Returns:
the message transformed into it's recognised or expected format.
Throws:
TransformerException - if a failure occurs in the transformer
See Also:
if the transform fails or the outputtype is null

transformMessage

public <T> T transformMessage(DataType<T> outputType)
                   throws TransformerException
Description copied from interface: MuleEvent
Transforms the message into the requested format. The transformer used is the one configured on the endpoint through which this event was received.

Specified by:
transformMessage in interface MuleEvent
Parameters:
outputType - The requested output type.
Returns:
the message transformed into it's recognised or expected format.
Throws:
TransformerException - if a failure occurs in the transformer
See Also:
if the transform fails or the outputtype is null

transformMessageToBytes

@Deprecated
public byte[] transformMessageToBytes()
                               throws TransformerException
Deprecated. use transformMessage(org.mule.api.transformer.DataType) instead

This method will attempt to convert the transformed message into an array of bytes It will first check if the result of the transformation is a byte array and return that. Otherwise if the the result is a string it will serialized the CONTENTS of the string not the String object. finally it will check if the result is a Serializable object and convert that to an array of bytes.

Specified by:
transformMessageToBytes in interface MuleEvent
Returns:
a byte[] representation of the message
Throws:
TransformerException - if an unsupported encoding is being used or if the result message is not a String byte[] or Seializable object
See Also:
Transformer

transformMessageToString

public java.lang.String transformMessageToString()
                                          throws TransformerException
Returns the message transformed into it's recognised or expected format and then into a String. The transformer used is the one configured on the endpoint through which this event was received.

Specified by:
transformMessageToString in interface MuleEvent
Returns:
the message transformed into it's recognised or expected format as a Strings.
Throws:
TransformerException - if a failure occurs in the transformer
See Also:
Transformer

getMessageAsString

public java.lang.String getMessageAsString()
                                    throws MuleException
Description copied from interface: MuleEvent
Returns the message contents as a string If necessary this will use the encoding set on the event

Specified by:
getMessageAsString in interface MuleEvent
Returns:
the message contents as a string
Throws:
MuleException - if the message cannot be converted into a string

getMessageAsString

public java.lang.String getMessageAsString(java.lang.String encoding)
                                    throws MuleException
Returns the message contents for logging

Specified by:
getMessageAsString in interface MuleEvent
Parameters:
encoding - the encoding to use when converting bytes to a string, if necessary
Returns:
the message contents as a string
Throws:
MuleException - if the message cannot be converted into a string

getId

public java.lang.String getId()
Description copied from interface: MuleEvent
Every event in the system is assigned a universally unique id (UUID).

Specified by:
getId in interface MuleEvent
Returns:
the unique identifier for the event

getProperty

@Deprecated
public java.lang.Object getProperty(java.lang.String name)
Deprecated. use appropriate scope-aware calls on the MuleMessage (via event.getMessage())

Description copied from interface: MuleEvent
Gets a property associated with the current event. This method will check all property scopes on the currnet message and the current session

Specified by:
getProperty in interface MuleEvent
Parameters:
name - the property name
Returns:
the property value or null if the property does not exist
See Also:
getMessage()

getProperty

@Deprecated
public java.lang.Object getProperty(java.lang.String name,
                                               java.lang.Object defaultValue)
Deprecated. use appropriate scope-aware calls on the MuleMessage (via event.getMessage())

Description copied from interface: MuleEvent
Gets a property associated with the current event. This method will check all property scopes on the currnet message and the current session

Specified by:
getProperty in interface MuleEvent
Parameters:
name - the property name
defaultValue - a default value if the property doesn't exist in the event
Returns:
the property value or the defaultValue if the property does not exist
See Also:
getMessage()

getEndpoint

public ImmutableEndpoint getEndpoint()
Description copied from interface: MuleEvent
Gets the endpoint associated with this event

Specified by:
getEndpoint in interface MuleEvent
Returns:
the endpoint associated with this event

toString

public java.lang.String toString()
Overrides:
toString in class java.util.EventObject

generateEventId

protected java.lang.String generateEventId()

getSession

public MuleSession getSession()
Description copied from interface: MuleEvent
Retrieves the service session for the current event

Specified by:
getSession in interface MuleEvent
Returns:
the service session for the event

getFlowConstruct

public FlowConstruct getFlowConstruct()
Gets the recipient service of this event

Specified by:
getFlowConstruct in interface MuleEvent
Returns:
the service for the event

isStopFurtherProcessing

public boolean isStopFurtherProcessing()
Determines whether the default processing for this event will be executed

Specified by:
isStopFurtherProcessing in interface MuleEvent
Returns:
Returns the stopFurtherProcessing.
See Also:
MuleContext, MuleEventContext, Callable

setStopFurtherProcessing

public void setStopFurtherProcessing(boolean stopFurtherProcessing)
Setting this parameter will stop the Mule framework from processing this event in the standard way. This allow for client code to override default behaviour. The common reasons for doing this are - 1. The service has more than one send endpoint configured; the service must dispatch to other prviders programmatically by using the service on the current event 2. The service doesn't send the current event out through a endpoint. i.e. the processing of the event stops in the uMO.

Specified by:
setStopFurtherProcessing in interface MuleEvent
Parameters:
stopFurtherProcessing - The stopFurtherProcessing to set.

equals

public boolean equals(java.lang.Object o)
Overrides:
equals in class java.lang.Object

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

getTimeout

public int getTimeout()
Description copied from interface: MuleEvent
The number of milliseconds to wait for a return event when running synchronously. 0 wait forever -1 try and receive, but do not wait or a positive millisecond value

Specified by:
getTimeout in interface MuleEvent
Returns:
the event timeout in milliseconds

setTimeout

public void setTimeout(int timeout)
Description copied from interface: MuleEvent
The number of milliseconds to wait for a return event when running synchronously. 0 wait forever -1 try and receive, but do not wait or a positive millisecod value

Specified by:
setTimeout in interface MuleEvent
Parameters:
timeout - the event timeout in milliseconds

getOutputStream

public java.io.OutputStream getOutputStream()
An output stream can optionally be used to write response data to an incoming message.

Specified by:
getOutputStream in interface MuleEvent
Returns:
an output strem if one has been made available by the message receiver that received the message

getEncoding

public java.lang.String getEncoding()
Gets the encoding for this message. First it looks to see if encoding has been set on the endpoint, if not it will check the message itself and finally it will fall back to the Mule global configuration for encoding which cannot be null.

Specified by:
getEncoding in interface MuleEvent
Returns:
the encoding for the event

getMuleContext

public MuleContext getMuleContext()
Description copied from interface: MuleEvent
Returns the muleContext for the Mule node that this event was received in

Specified by:
getMuleContext in interface MuleEvent
Returns:
the muleContext for the Mule node that this event was received in

newThreadCopy

public ThreadSafeAccess newThreadCopy()
Specified by:
newThreadCopy in interface ThreadSafeAccess
Returns:
A new instance of the implementing class, unbound to any thread and mutable.

resetAccessControl

public void resetAccessControl()
Description copied from interface: ThreadSafeAccess
This method should ONLY be used in the construction of composite ThreadSafeAccess instances. For example, a ThreadSafeAccess MuleEvent contains a ThreadSafeAccess MuleMessage. During the construction of the event, the message may be bound to the contructing thread. Calling this method releases that binding so that the event as a whole can be passed to a new thread unbound.

Specified by:
resetAccessControl in interface ThreadSafeAccess

assertAccess

public void assertAccess(boolean write)
Description copied from interface: ThreadSafeAccess
This method may be called before data in the object are accessed. It should verify that the access policy is followed correctly (if not, a runtime exception may be thrown).

Specified by:
assertAccess in interface ThreadSafeAccess
Parameters:
write - True if the access will mutate values.

transformMessage

@Deprecated
public java.lang.Object transformMessage()
                                  throws TransformerException
Deprecated. 

Description copied from interface: MuleEvent
Transforms the message into it's recognised or expected format. The transformer used is the one configured on the endpoint through which this event was received.

Specified by:
transformMessage in interface MuleEvent
Returns:
the message transformed into it's recognised or expected format.
Throws:
TransformerException - if a failure occurs in the transformer
See Also:
Transformer


Copyright © 2003-2010 MuleSoft, Inc.. All Rights Reserved.