Author: ruwan
Date: Tue Sep 21 08:36:43 2010
New Revision: 999271
URL: http://svn.apache.org/viewvc?rev=999271&view=rev
Log:
Fixing the issue SYNAPSE-357
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java?rev=999271&r1=999270&r2=999271&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
(original)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
Tue Sep 21 08:36:43 2010
@@ -359,6 +359,8 @@ public final class SynapseConstants {
// Property name. If this property is false synapse will not remove the
processed headers
public static final String PRESERVE_PROCESSED_HEADERS =
"preserveProcessedHeaders";
+ // Property name for preserving the envelope before sending
+ public static final String PRESERVE_ENVELOPE = "PRESERVE_ENVELOPE";
// Known transport error codes
public static final int RCV_IO_ERROR_SENDING = 101000;
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java?rev=999271&r1=999270&r2=999271&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java
(original)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java
Tue Sep 21 08:36:43 2010
@@ -23,6 +23,7 @@ import org.apache.axis2.clustering.Clust
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.transport.base.BaseConstants;
import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.util.JavaUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.synapse.*;
@@ -226,6 +227,18 @@ public abstract class AbstractEndpoint e
// set message level metrics collector
((Axis2MessageContext) synCtx).getAxis2MessageContext().setProperty(
BaseConstants.METRICS_COLLECTOR, metricsMBean);
+
+ // if the envelope preserving set build the envelope
+ MediatorProperty preserveEnv =
getProperty(SynapseConstants.PRESERVE_ENVELOPE);
+ if (JavaUtils.isTrueExplicitly(preserveEnv.getValue() != null ?
+ preserveEnv.getValue() :
preserveEnv.getEvaluatedExpression(synCtx))) {
+ if (traceOrDebugOn) {
+ traceOrDebug(traceOn, "Preserving the envelope by building it
before " +
+ "sending, since it is explicitly set");
+ }
+ synCtx.getEnvelope().build();
+ }
+
// Send the message through this endpoint
synCtx.getEnvironment().send(definition, synCtx);
}