You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by as...@apache.org on 2007/03/24 07:33:36 UTC

svn commit: r521985 - in /webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse: core/axis2/ mediators/builtin/

Author: asankha
Date: Fri Mar 23 23:33:35 2007
New Revision: 521985

URL: http://svn.apache.org/viewvc?view=rev&rev=521985
Log:
Fix SYNAPSE-83 and replace deprecated UUIDGenerator and fix relationships/message ID's properly

Modified:
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2Sender.java
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/DynamicAxisOperation.java
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/RMSequenceMediator.java

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java?view=diff&rev=521985&r1=521984&r2=521985
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2FlexibleMEPClient.java Fri Mar 23 23:33:35 2007
@@ -42,7 +42,7 @@
 import org.apache.axis2.description.AxisService;
 import org.apache.axis2.description.AxisServiceGroup;
 import org.apache.axis2.engine.AxisConfiguration;
-import org.apache.axis2.util.UUIDGenerator;
+import org.apache.axiom.om.util.UUIDGenerator;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.neethi.Policy;
@@ -188,7 +188,7 @@
 
         // do not copy options from the original
         newMC.setConfigurationContext(ori.getConfigurationContext());
-        newMC.setMessageID("uuid:" + UUIDGenerator.getUUID());
+        newMC.setMessageID(UUIDGenerator.getUUID());
         newMC.setTo(ori.getTo());
         newMC.setSoapAction(ori.getSoapAction());
 
@@ -253,7 +253,7 @@
      * @param axisMsgCtx the Axis2 Message context
      * @return the resulting SOAPEnvelope
      */
-    private static SOAPEnvelope removeAddressingHeaders(MessageContext axisMsgCtx) {
+    public static SOAPEnvelope removeAddressingHeaders(MessageContext axisMsgCtx) {
 
         SOAPEnvelope env = axisMsgCtx.getEnvelope();
         SOAPHeader soapHeader = env.getHeader();
@@ -299,5 +299,5 @@
                }
            }
        }
-   } 
+   }
 }

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2Sender.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2Sender.java?view=diff&rev=521985&r1=521984&r2=521985
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2Sender.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2Sender.java Fri Mar 23 23:33:35 2007
@@ -28,6 +28,7 @@
 import org.apache.synapse.SynapseException;
 import org.apache.synapse.endpoints.utils.EndpointDefinition;
 import org.apache.synapse.statistics.StatisticsUtils;
+import org.apache.axiom.om.util.UUIDGenerator;
 
 /**
  * This class helps the Axis2SynapseEnvironment implement the send method
@@ -69,6 +70,8 @@
                 StatisticsUtils.processProxyServiceStatistics(smc);
                 StatisticsUtils.processAllSequenceStatistics(smc);
             }
+            Axis2FlexibleMEPClient.removeAddressingHeaders(messageContext);
+            messageContext.setMessageID(UUIDGenerator.getUUID());
             ae.send(messageContext);
 
         } catch (AxisFault e) {

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/DynamicAxisOperation.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/DynamicAxisOperation.java?view=diff&rev=521985&r1=521984&r2=521985
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/DynamicAxisOperation.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/DynamicAxisOperation.java Fri Mar 23 23:33:35 2007
@@ -35,6 +35,7 @@
 import org.apache.axis2.engine.AxisEngine;
 import org.apache.axis2.wsdl.WSDLConstants;
 import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.om.util.UUIDGenerator;
 
 import javax.xml.namespace.QName;
 
@@ -183,10 +184,9 @@
             // message, so that it could be tied back to the original request even if the response
             // envelope does not contain addressing headers
             MessageContext responseMessageContext = new MessageContext();
+            responseMessageContext.setMessageID(msgctx.getMessageID());
             responseMessageContext.addRelatesTo(new RelatesTo(msgctx.getMessageID()));
-
             responseMessageContext.setOptions(options);
-			responseMessageContext.setMessageID(msgctx.getMessageID());
 			addMessageContext(responseMessageContext);
 
             AxisEngine engine = new AxisEngine(msgctx.getConfigurationContext());

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java?view=diff&rev=521985&r1=521984&r2=521985
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java Fri Mar 23 23:33:35 2007
@@ -23,6 +23,7 @@
 import org.apache.axis2.client.async.Callback;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.RelatesTo;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.synapse.Constants;
@@ -52,6 +53,14 @@
             String messageID  = messageCtx.getOptions().getRelatesTo().getValue();
             Callback callback = (Callback) callbackStore.remove(messageID);
 
+            RelatesTo[] relates = messageCtx.getRelationships();
+            if (relates.length > 1) {
+                // we set a relates to to the response message so that if WSA is not used, we
+                // could still link back to the original message. But if WSA was used, this
+                // gets duplicated, and we should remove it
+                removeDuplicateRelatesTo(messageCtx, relates);
+            }
+
             if (callback != null) {
                 handleMessage(messageCtx, ((AsyncCallback) callback).getSynapseOutMsgCtx());
             } else {
@@ -88,7 +97,7 @@
                 SOAPFault fault = response.getEnvelope().getBody().getFault();
                 Exception e = fault.getException();
                 if (e == null) {
-                    e = new Exception(fault.getReason().getFirstSOAPText().getText());    
+                    e = new Exception(fault.toString());    
                 }
 
                 ((FaultHandler) faultStack.pop()).handleFault(synapseOutMsgCtx,e);
@@ -130,6 +139,10 @@
 
             // If request is REST assume that the response is REST too
             response.setDoingREST(axisOutMsgCtx.isDoingREST());
+            if (axisOutMsgCtx.getMessageID() != null) {
+                response.setRelationships(
+                    new RelatesTo[] {new RelatesTo(axisOutMsgCtx.getMessageID())});
+            }
 
             // create the synapse message context for the response
             Axis2MessageContext synapseInMessageContext =
@@ -154,5 +167,32 @@
             synapseOutMsgCtx.getEnvironment().
                 injectMessage(synapseInMessageContext);
         }
+    }
+
+    private void removeDuplicateRelatesTo(MessageContext mc, RelatesTo[] relates) {
+
+        int insertPos = 0;
+        RelatesTo[] newRelates = new RelatesTo[relates.length];
+
+        for (int i=0; i<relates.length; i++) {
+            RelatesTo current = relates[i];
+            boolean found = false;
+
+            for (int j=0; j<newRelates.length && j<insertPos; j++) {
+                if (newRelates[j].equals(current) ||
+                    newRelates[j].getValue().equals(current.getValue())) {
+                    found = true;
+                    break;
+                }
+            }
+
+            if (!found) {
+                newRelates[insertPos++] = current;
+            }
+        }
+
+        RelatesTo[] trimmedRelates = new RelatesTo[insertPos];
+        System.arraycopy(newRelates, 0, trimmedRelates, 0, insertPos);
+        mc.setRelationships(trimmedRelates);
     }
 }

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/RMSequenceMediator.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/RMSequenceMediator.java?view=diff&rev=521985&r1=521984&r2=521985
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/RMSequenceMediator.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/RMSequenceMediator.java Fri Mar 23 23:33:35 2007
@@ -26,7 +26,7 @@
 
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.xpath.AXIOMXPath;
-import org.apache.axis2.util.UUIDGenerator;
+import org.apache.axiom.om.util.UUIDGenerator;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.synapse.Constants;



---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org