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"/>