in modules/core/src/main/java/org/apache/synapse/core/axis2/BlockingClientUtils.java [96:246]
public static void fillMessageContext(EndpointDefinition endpoint,
org.apache.axis2.context.MessageContext axisOutMsgCtx,
MessageContext synapseInMsgCtx)
throws AxisFault {
org.apache.axis2.context.MessageContext axisInMsgCtx
= ((Axis2MessageContext) synapseInMsgCtx).getAxis2MessageContext();
// Copy properties
setProperties(axisInMsgCtx, axisOutMsgCtx);
// Endpoint format
if (endpoint.getFormat() != null) {
String format = endpoint.getFormat();
if (SynapseConstants.FORMAT_POX.equals(format)) {
axisOutMsgCtx.setDoingREST(true);
axisOutMsgCtx.setProperty(Constants.Configuration.MESSAGE_TYPE,
org.apache.axis2.transport.http.HTTPConstants.MEDIA_TYPE_APPLICATION_XML);
axisOutMsgCtx.setProperty(Constants.Configuration.CONTENT_TYPE,
org.apache.axis2.transport.http.HTTPConstants.MEDIA_TYPE_APPLICATION_XML);
} else if (SynapseConstants.FORMAT_GET.equals(format)) {
axisOutMsgCtx.setDoingREST(true);
axisOutMsgCtx.setProperty(Constants.Configuration.HTTP_METHOD,
Constants.Configuration.HTTP_METHOD_GET);
axisOutMsgCtx.setProperty(Constants.Configuration.MESSAGE_TYPE,
org.apache.axis2.transport.http.HTTPConstants.MEDIA_TYPE_X_WWW_FORM);
} else if (SynapseConstants.FORMAT_SOAP11.equals(format)) {
axisOutMsgCtx.setDoingREST(false);
axisOutMsgCtx.removeProperty(Constants.Configuration.MESSAGE_TYPE);
// We need to set this explicitly here in case the request was not a POST
axisOutMsgCtx.setProperty(Constants.Configuration.HTTP_METHOD,
Constants.Configuration.HTTP_METHOD_POST);
if (axisOutMsgCtx.getSoapAction() == null && axisOutMsgCtx.getWSAAction() != null) {
axisOutMsgCtx.setSoapAction(axisOutMsgCtx.getWSAAction());
}
if (!axisOutMsgCtx.isSOAP11()) {
SOAPUtils.convertSOAP12toSOAP11(axisOutMsgCtx);
}
} else if (SynapseConstants.FORMAT_SOAP12.equals(format)) {
axisOutMsgCtx.setDoingREST(false);
axisOutMsgCtx.removeProperty(Constants.Configuration.MESSAGE_TYPE);
// We need to set this explicitly here in case the request was not a POST
axisOutMsgCtx.setProperty(Constants.Configuration.HTTP_METHOD,
Constants.Configuration.HTTP_METHOD_POST);
if (axisOutMsgCtx.getSoapAction() == null && axisOutMsgCtx.getWSAAction() != null) {
axisOutMsgCtx.setSoapAction(axisOutMsgCtx.getWSAAction());
}
if (axisOutMsgCtx.isSOAP11()) {
SOAPUtils.convertSOAP11toSOAP12(axisOutMsgCtx);
}
} else if (SynapseConstants.FORMAT_REST.equals(format)) {
if (axisInMsgCtx.getProperty(Constants.Configuration.HTTP_METHOD) != null) {
if (axisInMsgCtx.getProperty(Constants.Configuration.HTTP_METHOD).
toString().equals(Constants.Configuration.HTTP_METHOD_GET)
|| axisInMsgCtx.getProperty(Constants.Configuration.HTTP_METHOD).
toString().equals(Constants.Configuration.HTTP_METHOD_DELETE)) {
axisOutMsgCtx.removeProperty(Constants.Configuration.MESSAGE_TYPE);
}
}
axisOutMsgCtx.setDoingREST(true);
}
}
// MTOM/SWA
if (endpoint.isUseMTOM()) {
axisOutMsgCtx.setDoingMTOM(true);
axisOutMsgCtx.setProperty(
Constants.Configuration.ENABLE_MTOM,
Constants.VALUE_TRUE);
axisOutMsgCtx.setDoingMTOM(true);
} else if (endpoint.isUseSwa()) {
axisOutMsgCtx.setDoingSwA(true);
axisOutMsgCtx.setProperty(
Constants.Configuration.ENABLE_SWA,
Constants.VALUE_TRUE);
axisOutMsgCtx.setDoingSwA(true);
}
if (endpoint.getCharSetEncoding() != null) {
axisOutMsgCtx.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
endpoint.getCharSetEncoding());
}
boolean isRest = SynapseConstants.FORMAT_REST.equals(endpoint.getFormat()) | axisInMsgCtx.isDoingREST();
if (!isRest && !endpoint.isForceSOAP11() && !endpoint.isForceSOAP12()) {
isRest = isRequestRest(axisInMsgCtx);
}
String restURLPostfix = (String) axisOutMsgCtx.getProperty(NhttpConstants.REST_URL_POSTFIX);
if (endpoint.getAddress() != null) {
String address = endpoint.getAddress(synapseInMsgCtx);
if (isRest && restURLPostfix != null && !"".equals(restURLPostfix)) {
address = getEPRWithRestURLPostfix(restURLPostfix, address);
}
axisOutMsgCtx.setTo(new EndpointReference(address));
} else {
EndpointReference endpointReference = axisOutMsgCtx.getTo();
if (endpointReference != null) {
if (isRest && restURLPostfix != null && !"".equals(restURLPostfix)) {
String address = endpointReference.getAddress();
address = getEPRWithRestURLPostfix(restURLPostfix, address);
axisOutMsgCtx.setTo(new EndpointReference(address));
} else {
axisInMsgCtx.setTo(endpointReference);
}
}
}
// set the connection timeout
if (endpoint.getTimeoutDuration() > 0) {
int endpointTimeout = (int) endpoint.getTimeoutDuration();
axisOutMsgCtx.setProperty(HTTPConstants.CONNECTION_TIMEOUT, endpointTimeout);
if (endpointTimeout > 30000) {
//Default Socket timeout is 30000ms.
// If endpoint timeout > SO_TIMEOUT have to increase it.
axisOutMsgCtx.setProperty(HTTPConstants.SO_TIMEOUT, endpointTimeout);
}
}
// Check for preserve WS-Addressing
String preserveAddressingProperty = (String) synapseInMsgCtx.getProperty(
SynapseConstants.PRESERVE_WS_ADDRESSING);
if (preserveAddressingProperty != null && Boolean.parseBoolean(preserveAddressingProperty)) {
axisOutMsgCtx.setMessageID(axisInMsgCtx.getMessageID());
} else {
MessageHelper.removeAddressingHeaders(axisOutMsgCtx);
}
// WS-Addressing
if (endpoint.isAddressingOn()) {
String wsAddressingVersion = endpoint.getAddressingVersion();
if (wsAddressingVersion != null &&
SynapseConstants.ADDRESSING_VERSION_SUBMISSION.equals(wsAddressingVersion)) {
axisOutMsgCtx.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
AddressingConstants.Submission.WSA_NAMESPACE);
} else if (wsAddressingVersion != null &&
SynapseConstants.ADDRESSING_VERSION_FINAL.equals(wsAddressingVersion)) {
axisOutMsgCtx.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
AddressingConstants.Final.WSA_NAMESPACE);
}
axisOutMsgCtx.setProperty
(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES, Boolean.FALSE);
} else {
axisOutMsgCtx.setProperty
(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES, Boolean.TRUE);
}
}