This site contains the documentation that is relevant to older WSO2 product versions and offerings.
For the latest WSO2 documentation, visit https://wso2.com/documentation/.
Class Mediator
The Class Mediator creates an instance of a custom-specified class and sets it as a mediator. The class must implement the org.apache.synapse.api.Mediator
interface. If any properties are specified, the corresponding setter methods are invoked once on the class during initialization.
Use the Class mediator for user-specific, custom developments only when there is no built-in mediator that already provides the required functionality. Maintaining custom classes incurs a high overhead. Therefore avoid using them unless the scenario is frequently re-used and very user-specific.
For best results, use WSO2 Developer Studio for debugging Class mediators.
Syntax
<class name="class-name"> <property name="string" value="literal"> </property> </class>
UI Configuration
Class Name:Â The name of the class. To load a class, enter the qualified name of the relevant class in this parameter and click Load Class.Â
Note
You can configure the mediator using XML. Click switch to source view in the Mediator window.
Examples
In this configuration, the ESB sends the requested message to the endpoint  specified via the Send mediator . This endpoint is the Axis2server running on port 9000. The response message is passed through a Class mediator before it is sent back to the client. Two parameters named variable1
 and variable2
 are passed to the instance mediator implementation class ( SimpleClassMediator
).
<definitions xmlns="http://ws.apache.org/ns/synapse"> <sequence name="fault"> <makefault> <code value="tns:Receiver" xmlns:tns="http://www.w3.org/2003/05/soap-envelope"/> <reason value="Mediation failed."/> </makefault> <send/> </sequence> <sequence name="main" onError="fault"> <in> <send> <endpoint name="stockquote"> <address uri="http://localhost:9000/services/SimpleStockQuoteService"/> </endpoint> </send> </in> <out> <class name="samples.mediators.SimpleClassMediator"> <property name="variable1" value="10"/> <property name="variable2" value="5"/> </class> <send/> </out> </sequence> </definitions>
See the following sample Class Mediator and note the SynapseMessageContext
 and the full Synapse API in there.
package samples.mediators; import org.apache.synapse.MessageContext; import org.apache.synapse.mediators.AbstractMediator; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMAbstractFactory; import org.apache.axiom.om.OMFactory; import org.apache.axiom.soap.SOAPFactory; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.xml.namespace.QName; public class SimpleClassMediator extends AbstractMediator { private static final Log log = LogFactory.getLog(SimpleClassMediator.class); private String variable1="10"; private String variable2="10"; private int variable3=0; public SimpleClassMediator(){} public boolean mediate(MessageContext mc) { // Do somthing useful.. // Note the access to the Synapse Message context return true; } public String getType() { return null; } public void setTraceState(int traceState) { traceState = 0; } public int getTraceState() { return 0; } public void setVariable1(String newValue) { variable1=newValue; } public String getVariable1() { return variable1; } public void setVariable2(String newValue){ variable2=newValue; } public String getVariable2(){ return variable2; } }
Samples
For more examples, see: