Work with the message context
We can work with the message properties to affect the way a message is mediated.
Before starting this task, we should read about how information is carried in the mediation context in Mediation context information
Interface SIMessageContext has a superinterface MessageContext. Methods in MessageContext allow us to manage a set of message properties, which enable handlers in a handler chain to share processing-related state. Most importantly, we can get the value of a specific property from the MessageContext using the method getProperty, and we can set the name and value of a property associated with the MessageContext using the method setProperty. We can also view the names of the properties in this MessageContext and remove a property (that is, a name-value pair) from the MessageContext.
At mediation runtime, all of the user-defined properties that have been set during configuration for the current mediation (see Configure mediation context properties) are applied to the MediationContext property set.
Tasks
- Locate the point in your mediation handler where you insert the functional mediation code, in the method handle (MessageContext context). As we are working with the MessageContext methods that give we access to message properties, we do not have to cast the interface to SIMessageContext unless we are also interested in the methods provided by SIMessageContext.
- Get the SIMessage from the MessageContext object. For example, SIMessage message = ((SIMessageContext)context).getSIMessage();
- Retrieve or set properties, using the MessageContext methods. For instance, if a property has been defined during configuration with the name streetName, the type String, and the value "Main Street" your code to retrieve and print the street name might look like this:
Example
public boolean handle(MessageContext context) throws MessageContextException { ........ { /* Retrieve the street name property */ String myStreetName; myStreetName = (String) getProperty(streetName); /* Display property value */ System.out.println(myStreetName); } }
Related:
Mediation context information