in modules/core/src/main/java/org/apache/synapse/startup/tasks/MessageInjector.java [185:324]
public void execute() {
if (log.isDebugEnabled()) {
log.debug("execute");
}
if (synapseEnvironment == null) {
handleError("Synapse Environment not set");
return;
}
if (message == null) {
handleError("message not set");
return;
}
if (INJECT_TO_PROXY.equalsIgnoreCase(injectTo)) {
if (proxyName == null || proxyName.equals("")) {
handleError("Proxy service name not specified");
}
// Prepare axis2 message context
org.apache.axis2.context.MessageContext axis2MsgCtx =
new org.apache.axis2.context.MessageContext();
ConfigurationContext configurationContext = ((Axis2SynapseEnvironment) synapseEnvironment).
getAxis2ConfigurationContext();
axis2MsgCtx.setConfigurationContext(configurationContext);
axis2MsgCtx.setIncomingTransportName(Constants.TRANSPORT_LOCAL);
axis2MsgCtx.setServerSide(true);
axis2MsgCtx.setMessageID(UIDGenerator.generateURNString());
try {
AxisService axisService = configurationContext.getAxisConfiguration().
getService(proxyName);
if (axisService == null) {
handleError("Proxy Service: " + proxyName + " not found");
}
axis2MsgCtx.setAxisService(axisService);
} catch (AxisFault axisFault) {
handleError("Error occurred while attempting to find the Proxy Service");
}
if (to != null) {
axis2MsgCtx.setTo(new EndpointReference(to));
}
SOAPEnvelope envelope = null;
if (format == null) {
envelope = OMAbstractFactory.getSOAP12Factory().createSOAPEnvelope();
} else if (SOAP11_FORMAT.equalsIgnoreCase(format)) {
envelope = OMAbstractFactory.getSOAP11Factory().createSOAPEnvelope();
} else if (SOAP12_FORMAT.equalsIgnoreCase(format)) {
envelope = OMAbstractFactory.getSOAP12Factory().createSOAPEnvelope();
} else if (POX_FORMAT.equalsIgnoreCase(format)) {
envelope = OMAbstractFactory.getSOAP12Factory().createSOAPEnvelope();
axis2MsgCtx.setDoingREST(true);
} else if (GET_FORMAT.equalsIgnoreCase(format)) {
envelope = OMAbstractFactory.getSOAP12Factory().createSOAPEnvelope();
axis2MsgCtx.setDoingREST(true);
axis2MsgCtx.setProperty(Constants.Configuration.HTTP_METHOD,
Constants.Configuration.HTTP_METHOD_GET);
} else {
handleError("incorrect format specified");
}
try {
PayloadHelper.setXMLPayload(envelope, message.cloneOMElement());
axis2MsgCtx.setEnvelope(envelope);
} catch (AxisFault axisFault) {
handleError("Error in setting the message payload : " + message);
}
if (soapAction != null) {
axis2MsgCtx.setSoapAction(soapAction);
}
try {
if (log.isDebugEnabled()) {
log.debug("injecting message to proxy service : " + proxyName);
}
AxisEngine.receive(axis2MsgCtx);
} catch (AxisFault axisFault) {
handleError("Error occurred while invoking proxy service : " + proxyName);
}
} else {
MessageContext mc = synapseEnvironment.createMessageContext();
mc.setMessageID(UIDGenerator.generateURNString());
mc.pushFaultHandler(new MediatorFaultHandler(mc.getFaultSequence()));
if (to != null) {
mc.setTo(new EndpointReference(to));
}
if (format == null) {
PayloadHelper.setXMLPayload(mc, message.cloneOMElement());
} else {
try {
if (SOAP11_FORMAT.equalsIgnoreCase(format)) {
mc.setEnvelope(OMAbstractFactory.getSOAP11Factory().createSOAPEnvelope());
} else if (SOAP12_FORMAT.equalsIgnoreCase(format)) {
mc.setEnvelope(OMAbstractFactory.getSOAP12Factory().createSOAPEnvelope());
} else if (POX_FORMAT.equalsIgnoreCase(format)) {
mc.setDoingPOX(true);
} else if (GET_FORMAT.equalsIgnoreCase(format)) {
mc.setDoingGET(true);
}
PayloadHelper.setXMLPayload(mc, message.cloneOMElement());
} catch (AxisFault axisFault) {
handleError("Error in setting the message payload : " + message);
}
}
if (soapAction != null) {
mc.setSoapAction(soapAction);
}
if (INJECT_TO_SEQUENCE.equalsIgnoreCase(injectTo)) {
if (sequenceName == null || sequenceName.equals("")) {
handleError("Sequence name not specified");
}
SequenceMediator seq = (SequenceMediator) synapseEnvironment.getSynapseConfiguration().
getSequence(sequenceName);
if (seq != null) {
if (log.isDebugEnabled()) {
log.debug("injecting message to sequence : " + sequenceName);
}
synapseEnvironment.injectAsync(mc, seq);
} else {
handleError("Sequence: " + sequenceName + " not found");
}
} else {
if (log.isDebugEnabled()) {
log.debug("injecting message to main sequence");
}
synapseEnvironment.injectMessage(mc);
}
}
}