Sample Java Callout Class
The following example shows a sample Java callout class:
package qa.as11tests.javacallout; import com.collaxa.cube.persistence.dto.XmlDocument; import com.oracle.bpel.client.NormalizedMessage; import java.util.logging.Logger; import java.util.Map; import java.util.Iterator; import oracle.tip.mediator.common.api.CalloutMediatorMessage; import oracle.tip.mediator.common.api.ExternalMediatorMessage; import oracle.tip.mediator.common.api.IJavaCallout; import oracle.tip.mediator.common.api.MediatorCalloutException; import oracle.tip.mediator.metadata.CaseType; import oracle.tip.mediator.utils.XmlUtils; import oracle.tip.pc.services.functions.ExtFunc; import oracle.xml.parser.v2.XMLDocument; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; public class JavaCalloutSanity implements IJavaCallout { Logger logger = Logger.getLogger("Callout"); public JavaCalloutSanity() { } public void initialize(Logger logger) throws MediatorCalloutException { this.logger = logger; this.logger.info("Initializing..."); } public boolean preRouting(CalloutMediatorMessage calloutMediatorMessage) { System.out.println("Pre routing..."); String sPayload = "null"; String sPayload_org = "null"; for (Iterator msgIt = calloutMediatorMessage.getPayload().entrySet().iterator(); msgIt.hasNext(); ) { Map.Entry msgEntry = (Map.Entry)msgIt.next(); Object msgKey = msgEntry.getKey(); Object msgValue = msgEntry.getValue(); if (msgKey.equals("request")) sPayload = XmlUtils.convertDomNodeToString((Node)msgValue); } sPayload_org = sPayload; String tobeReplaced = "CHANGE_THIS"; String replaceWith = "JAVA_CALLOUT_||_PRE_ROUTING"; int start = sPayload.indexOf(tobeReplaced); StringBuffer sb = new StringBuffer(); sb.append(sPayload.substring(0, start)); sb.append(replaceWith); sb.append(sPayload.substring(start + tobeReplaced.length())); String changedPayload = sb.toString(); String uid; try { uid = ExtFunc.generateGuid(); } catch (Exception e) { } XMLDocument changedoc; try { changedoc = XmlUtils.getXmlDocument(changedPayload); String mykey = "request"; calloutMediatorMessage.addPayload(mykey, changedoc.getDocumentElement()); //calloutMediatorMessage.getPayload().put(mykey, changedoc); } catch (Exception e) { } System.out.println("Changed from : \n"+sPayload_org+"\nTo\n"+changedPayload); System.out.println("End Pre routing...\n\n"); return false; } public boolean postRouting(CalloutMediatorMessage calloutMediatorMessage, CalloutMediatorMessage calloutMediatorMessage1, Throwable throwable) throws MediatorCalloutException { System.out.println("Start Post routing..."); String sPayload = "null"; String sPayload_org = "null"; for (Iterator msgIt = calloutMediatorMessage1.getPayload().entrySet().iterator(); msgIt.hasNext(); ) { Map.Entry msgEntry = (Map.Entry)msgIt.next(); Object msgKey = msgEntry.getKey(); Object msgValue = msgEntry.getValue(); if(msgKey.equals("reply")) sPayload = XmlUtils.convertDomNodeToString((Node)msgValue); } sPayload_org = sPayload; String tobeReplaced = "POST_ROUTING_RULE_REQUEST_REPLY"; String replaceWith = "POST_ROUTING_RULE_REQUEST_REPLY_||_POSTROUTING_||_JAVA_CALLOUT_WORKING"; int start = sPayload.indexOf(tobeReplaced); StringBuffer sb = new StringBuffer(); sb.append(sPayload.substring(0, start)); sb.append(replaceWith); sb.append(sPayload.substring(start + tobeReplaced.length())); String changedPayload = sb.toString(); XMLDocument changedoc; try { changedoc = XmlUtils.getXmlDocument(changedPayload); String mykey = "reply"; calloutMediatorMessage1.addPayload(mykey,changedoc.getDocumentElement()); // calloutMediatorMessage1.getPayload().put(mykey, changedoc.getDocumentElement()); } catch (Exception f) { } System.out.println("Changed from : \n"+sPayload_org+"\nTo\n"+ changedPayload); System.out.println("End Post routing...\n\n"); return false; } public boolean preRoutingRule(CaseType caseType, CalloutMediatorMessage calloutMediatorMessage) { System.out.println("\nStart PreRoutingRule.\n"); String sPayload = "null"; String sPayload_org = "null"; for (Iterator msgIt = calloutMediatorMessage.getPayload().entrySet().iterator(); msgIt.hasNext(); ) { Map.Entry msgEntry = (Map.Entry)msgIt.next(); Object msgKey = msgEntry.getKey(); Object msgValue = msgEntry.getValue(); if(msgKey.equals("request")) sPayload = XmlUtils.convertDomNodeToString((Node)msgValue); } sPayload_org = sPayload; String tobeReplaced = "PRE_ROUTING"; String replaceWith = "PRE_ROUTING_||_PRE_ROUTING_RULE"; int start = sPayload.indexOf(tobeReplaced); StringBuffer sb = new StringBuffer(); sb.append(sPayload.substring(0, start)); sb.append(replaceWith); sb.append(sPayload.substring(start + tobeReplaced.length())); String changedPayload = sb.toString(); XMLDocument changedoc; try { changedoc = XmlUtils.getXmlDocument(changedPayload); String mykey = "request"; calloutMediatorMessage.addPayload(mykey, changedoc.getDocumentElement()); // calloutMediatorMessage.getPayload().put(mykey, changedoc); } catch (Exception e) { } System.out.println("Changed from : \n"+sPayload_org+"\nTo\n"+changedPayload); System.out.println("End PreRoutingRule.\n\n"); return true; } public boolean postRoutingRule(CaseType caseType, CalloutMediatorMessage calloutMediatorMessage, CalloutMediatorMessage calloutMediatorMessage1, Throwable throwable) { System.out.println("Start PostRoutingRule."); String req_sPayload = "null"; String req_sPayload_org = "null"; String rep_sPayload = "null"; String rep_sPayload_org = "null"; for (Iterator msgIt = calloutMediatorMessage.getPayload().entrySet().iterator(); msgIt.hasNext(); ) { Map.Entry msgEntry = (Map.Entry)msgIt.next(); Object msgKey = msgEntry.getKey(); Object msgValue = msgEntry.getValue(); if(msgKey.equals("request")) req_sPayload = XmlUtils.convertDomNodeToString((Node)msgValue); } req_sPayload_org = req_sPayload; String tobeReplaced = "PRE_ROUTING_RULE"; String replaceWith = "PRE_ROUTING_RULE_||_POST_ROUTING_RULE_REQUEST"; int start = req_sPayload.indexOf(tobeReplaced); StringBuffer sb = new StringBuffer(); sb.append(req_sPayload.substring(0, start)); sb.append(replaceWith); sb.append(req_sPayload.substring(start + tobeReplaced.length())); String changedPayload = sb.toString(); XMLDocument changedoc; try { changedoc = XmlUtils.getXmlDocument(changedPayload); String mykey = "request"; calloutMediatorMessage.addPayload(mykey, changedoc.getDocumentElement()); // calloutMediatorMessage.getPayload().put(mykey, changedoc); } catch (Exception e) { } for (Iterator msgIt = calloutMediatorMessage1.getPayload().entrySet().iterator(); msgIt.hasNext(); ) { Map.Entry msgEntry = (Map.Entry)msgIt.next(); Object msgKey = msgEntry.getKey(); Object msgValue = msgEntry.getValue(); if(msgKey.equals("reply")) rep_sPayload = XmlUtils.convertDomNodeToString((Node)msgValue); } rep_sPayload_org = rep_sPayload; tobeReplaced = "PRE_ROUTING_RULE"; replaceWith = "PRE_ROUTING_RULE_||_POST_ROUTING_RULE_REQUEST_REPLY"; start = rep_sPayload.indexOf(tobeReplaced); sb = new StringBuffer(); sb.append(rep_sPayload.substring(0, start)); sb.append(replaceWith); sb.append(rep_sPayload.substring(start + tobeReplaced.length())); changedPayload = sb.toString(); try { changedoc = XmlUtils.getXmlDocument(changedPayload); String mykey = "reply"; calloutMediatorMessage1.addPayload(mykey,changedoc.getDocumentElement()); // calloutMediatorMessage1.getPayload().put(mykey, changedoc.getDocumentElement()); } catch (Exception e) { } System.out.println("Changed from : \n"+req_sPayload_org+"\nTo\n"+changedPayload); System.out.println("End postRoutingRule\n\n"); return true; } }