You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by su...@apache.org on 2010/05/05 13:29:04 UTC
svn commit: r941255 - in /synapse/trunk/java:
modules/core/src/main/java/org/apache/synapse/
modules/core/src/main/java/org/apache/synapse/core/axis2/
modules/core/src/main/java/org/apache/synapse/util/ repository/conf/sample/
repository/conf/sample/re...
Author: supun
Date: Wed May 5 11:29:03 2010
New Revision: 941255
URL: http://svn.apache.org/viewvc?rev=941255&view=rev
Log:
Code commit for issue SYNAPSE-549
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/core/axis2/Axis2FlexibleMEPClient.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2Sender.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MessageHelper.java
synapse/trunk/java/repository/conf/sample/resources/priority/priority-configuration.xml
synapse/trunk/java/repository/conf/sample/synapse_sample_100.xml
synapse/trunk/java/repository/conf/sample/synapse_sample_101.xml
synapse/trunk/java/repository/conf/sample/synapse_sample_102.xml
synapse/trunk/java/repository/conf/sample/synapse_sample_200.xml
synapse/trunk/java/repository/conf/sample/synapse_sample_201.xml
synapse/trunk/java/repository/conf/sample/synapse_sample_202.xml
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=941255&r1=941254&r2=941255&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 Wed May 5 11:29:03 2010
@@ -351,6 +351,9 @@ public final class SynapseConstants {
public static final String SERVER_IP = "SERVER_IP";
+ // Property name. If this property is false synapse will not remove the processed headers
+ public static final String PRESERVE_PROCESSED_HEADERS = "preserveProcessedHeaders";
+
// Known transport error codes
public static final int RCV_IO_ERROR_SENDING = 101000;
public static final int RCV_IO_ERROR_RECEIVING = 101001;
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java?rev=941255&r1=941254&r2=941255&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java Wed May 5 11:29:03 2010
@@ -127,8 +127,10 @@ public class Axis2FlexibleMEPClient {
// create a new MessageContext to be sent out as this should not corrupt the original
// we need to create the response to the original message later on
- MessageContext axisOutMsgCtx = cloneForSend(originalInMsgCtx,
- (String) synapseOutMessageContext.getProperty(SynapseConstants.PRESERVE_WS_ADDRESSING));
+ String preserveAddressingProperty = (String) synapseOutMessageContext.getProperty(
+ SynapseConstants.PRESERVE_WS_ADDRESSING);
+ MessageContext axisOutMsgCtx = cloneForSend(originalInMsgCtx, preserveAddressingProperty);
+
if (log.isDebugEnabled()) {
log.debug("Message [Original Request Message ID : "
@@ -267,6 +269,19 @@ public class Axis2FlexibleMEPClient {
(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES, Boolean.TRUE);
}
+ // remove the headers if we don't need to preserve them.
+ // determine weather we need to preserve the processed headers
+ String preserveHeaderProperty =
+ (String) synapseOutMessageContext.getProperty(
+ SynapseConstants.PRESERVE_PROCESSED_HEADERS);
+ if (preserveHeaderProperty == null || !Boolean.parseBoolean(preserveHeaderProperty)) {
+ // default behaviour is to remove the headers
+ MessageHelper.removeProcessedHeaders(axisOutMsgCtx,
+ (preserveAddressingProperty != null &&
+ Boolean.parseBoolean(preserveAddressingProperty)));
+ }
+
+
ConfigurationContext axisCfgCtx = axisOutMsgCtx.getConfigurationContext();
AxisConfiguration axisCfg = axisCfgCtx.getAxisConfiguration();
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2Sender.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2Sender.java?rev=941255&r1=941254&r2=941255&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2Sender.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2Sender.java Wed May 5 11:29:03 2010
@@ -123,12 +123,24 @@ public class Axis2Sender {
AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES, Boolean.FALSE);
}
- String preserveAddressing = (String) smc.getProperty(SynapseConstants.PRESERVE_WS_ADDRESSING);
- if (Boolean.parseBoolean(preserveAddressing)) {
- messageContext.setMessageID(smc.getMessageID());
- } else {
- MessageHelper.removeAddressingHeaders(messageContext);
- messageContext.setMessageID(UUIDGenerator.getUUID());
+ String preserveAddressingProperty = (String) smc.getProperty(
+ SynapseConstants.PRESERVE_WS_ADDRESSING);
+ if (preserveAddressingProperty != null &&
+ Boolean.parseBoolean(preserveAddressingProperty)) {
+ messageContext.setMessageID(smc.getMessageID());
+ } else {
+ MessageHelper.removeAddressingHeaders(messageContext);
+ messageContext.setMessageID(UUIDGenerator.getUUID());
+ }
+
+ // determine weather we need to preserve the processed headers
+ String preserveHeaderProperty = (String) smc.getProperty(
+ SynapseConstants.PRESERVE_PROCESSED_HEADERS);
+ if (preserveHeaderProperty == null || !Boolean.parseBoolean(preserveHeaderProperty)) {
+ // remove the processed headers
+ MessageHelper.removeProcessedHeaders(messageContext,
+ (preserveAddressingProperty != null &&
+ Boolean.parseBoolean(preserveAddressingProperty)));
}
// temporary workaround for https://issues.apache.org/jira/browse/WSCOMMONS-197
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MessageHelper.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MessageHelper.java?rev=941255&r1=941254&r2=941255&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MessageHelper.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MessageHelper.java Wed May 5 11:29:03 2010
@@ -444,6 +444,52 @@ public class MessageHelper {
return newFault;
}
+ /**
+ * Remove the headers that are marked as processed.
+ * @param axisMsgCtx the Axis2 Message context
+ * @param preserveAddressing if true preserve the addressing headers
+ */
+ public static void removeProcessedHeaders(org.apache.axis2.context.MessageContext axisMsgCtx,
+ boolean preserveAddressing) {
+ SOAPEnvelope env = axisMsgCtx.getEnvelope();
+ SOAPHeader soapHeader = env.getHeader();
+
+ if (soapHeader != null) {
+ Iterator it = soapHeader.getChildElements();
+ while (it.hasNext()) {
+ Object o = it.next();
+ if (o instanceof SOAPHeaderBlock) {
+ SOAPHeaderBlock headerBlock = (SOAPHeaderBlock) o;
+ if (!preserveAddressing) {
+ // if we don't need to preserve addressing headers remove without checking
+ if (headerBlock.isProcessed()) {
+ headerBlock.detach();
+ }
+ } else {
+ // else remove only if not an addressing header
+ if (!isAddressingHeader(headerBlock)) {
+ if (headerBlock.isProcessed()) {
+ headerBlock.detach();
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Return true if the SOAP header is an addressing header
+ * @param headerBlock SOAP header block to be checked
+ * @return true if the SOAP header is an addressing header
+ */
+ private static boolean isAddressingHeader(SOAPHeaderBlock headerBlock) {
+ OMNamespace ns = headerBlock.getNamespace();
+ return ns != null && (
+ AddressingConstants.Submission.WSA_NAMESPACE.equals(ns.getNamespaceURI()) ||
+ AddressingConstants.Final.WSA_NAMESPACE.equals(ns.getNamespaceURI()));
+ }
+
private static void handleException(String msg) {
log.error(msg);
throw new SynapseException(msg);
Modified: synapse/trunk/java/repository/conf/sample/resources/priority/priority-configuration.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/java/repository/conf/sample/resources/priority/priority-configuration.xml?rev=941255&r1=941254&r2=941255&view=diff
==============================================================================
--- synapse/trunk/java/repository/conf/sample/resources/priority/priority-configuration.xml (original)
+++ synapse/trunk/java/repository/conf/sample/resources/priority/priority-configuration.xml Wed May 5 11:29:03 2010
@@ -31,8 +31,10 @@
<!-- if a message comes that we cannot determine priority, we set a default priority of 1 -->
<conditions defaultPriority="1">
<condition priority="10">
- <!-- check for the header named priority -->
- <equal type="header" source="priority" value="5"/>
+ <!-- check for the header named priority -->
+ <and>
+ <equal type="header" source="priority" value="5"/>
+ </and>
</condition>
<condition priority="1">
<equal type="header" source="priority" value="1"/>
Modified: synapse/trunk/java/repository/conf/sample/synapse_sample_100.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/java/repository/conf/sample/synapse_sample_100.xml?rev=941255&r1=941254&r2=941255&view=diff
==============================================================================
--- synapse/trunk/java/repository/conf/sample/synapse_sample_100.xml (original)
+++ synapse/trunk/java/repository/conf/sample/synapse_sample_100.xml Wed May 5 11:29:03 2010
@@ -30,9 +30,7 @@
</endpoint>
</send>
</in>
- <out>
- <header name="wsse:Security" action="remove"
- xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"/>
+ <out>
<send/>
</out>
</definitions>
Modified: synapse/trunk/java/repository/conf/sample/synapse_sample_101.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/java/repository/conf/sample/synapse_sample_101.xml?rev=941255&r1=941254&r2=941255&view=diff
==============================================================================
--- synapse/trunk/java/repository/conf/sample/synapse_sample_101.xml (original)
+++ synapse/trunk/java/repository/conf/sample/synapse_sample_101.xml Wed May 5 11:29:03 2010
@@ -30,13 +30,7 @@
</endpoint>
</send>
</in>
- <out>
- <header name="wsrm:SequenceAcknowledgement" action="remove"
- xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"/>
- <header name="wsrm:Sequence" action="remove"
- xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"/>
- <header name="wsrm:AckRequested" action="remove"
- xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"/>
+ <out>
<send/>
</out>
</definitions>
Modified: synapse/trunk/java/repository/conf/sample/synapse_sample_102.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/java/repository/conf/sample/synapse_sample_102.xml?rev=941255&r1=941254&r2=941255&view=diff
==============================================================================
--- synapse/trunk/java/repository/conf/sample/synapse_sample_102.xml (original)
+++ synapse/trunk/java/repository/conf/sample/synapse_sample_102.xml Wed May 5 11:29:03 2010
@@ -30,13 +30,7 @@
</endpoint>
</send>
</in>
- <out>
- <header name="wsrm:SequenceAcknowledgement" action="remove"
- xmlns:wsrm="http://docs.oasis-open.org/ws-rx/wsrm/200702"/>
- <header name="wsrm:Sequence" action="remove"
- xmlns:wsrm="http://docs.oasis-open.org/ws-rx/wsrm/200702"/>
- <header name="wsrm:AckRequested" action="remove"
- xmlns:wsrm="http://docs.oasis-open.org/ws-rx/wsrm/200702"/>
+ <out>
<send/>
</out>
</definitions>
Modified: synapse/trunk/java/repository/conf/sample/synapse_sample_200.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/java/repository/conf/sample/synapse_sample_200.xml?rev=941255&r1=941254&r2=941255&view=diff
==============================================================================
--- synapse/trunk/java/repository/conf/sample/synapse_sample_200.xml (original)
+++ synapse/trunk/java/repository/conf/sample/synapse_sample_200.xml Wed May 5 11:29:03 2010
@@ -22,9 +22,7 @@
<localEntry key="sec_policy" src="file:repository/conf/sample/resources/policy/policy_3.xml"/>
<proxy name="StockQuoteProxy">
<target>
- <inSequence>
- <header name="wsse:Security" action="remove"
- xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"/>
+ <inSequence>
<send>
<endpoint>
<address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
Modified: synapse/trunk/java/repository/conf/sample/synapse_sample_201.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/java/repository/conf/sample/synapse_sample_201.xml?rev=941255&r1=941254&r2=941255&view=diff
==============================================================================
--- synapse/trunk/java/repository/conf/sample/synapse_sample_201.xml (original)
+++ synapse/trunk/java/repository/conf/sample/synapse_sample_201.xml Wed May 5 11:29:03 2010
@@ -21,13 +21,7 @@
<definitions xmlns="http://synapse.apache.org/ns/2010/04/configuration">
<proxy name="StockQuoteProxy">
<target>
- <inSequence>
- <header name="wsrm:SequenceAcknowledgement" action="remove"
- xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"/>
- <header name="wsrm:Sequence" action="remove"
- xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"/>
- <header name="wsrm:AckRequested" action="remove"
- xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"/>
+ <inSequence>
<send>
<endpoint>
<address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
Modified: synapse/trunk/java/repository/conf/sample/synapse_sample_202.xml
URL: http://svn.apache.org/viewvc/synapse/trunk/java/repository/conf/sample/synapse_sample_202.xml?rev=941255&r1=941254&r2=941255&view=diff
==============================================================================
--- synapse/trunk/java/repository/conf/sample/synapse_sample_202.xml (original)
+++ synapse/trunk/java/repository/conf/sample/synapse_sample_202.xml Wed May 5 11:29:03 2010
@@ -21,13 +21,7 @@
<definitions xmlns="http://synapse.apache.org/ns/2010/04/configuration">
<proxy name="StockQuoteProxy">
<target>
- <inSequence>
- <header name="wsrm:SequenceAcknowledgement" action="remove"
- xmlns:wsrm="http://docs.oasis-open.org/ws-rx/wsrm/200702"/>
- <header name="wsrm:Sequence" action="remove"
- xmlns:wsrm="http://docs.oasis-open.org/ws-rx/wsrm/200702"/>
- <header name="wsrm:AckRequested" action="remove"
- xmlns:wsrm="http://docs.oasis-open.org/ws-rx/wsrm/200702"/>
+ <inSequence>
<send>
<endpoint>
<address uri="http://localhost:9000/services/SimpleStockQuoteService"/>