You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by in...@apache.org on 2008/10/01 17:45:23 UTC

svn commit: r700817 - in /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse: core/axis2/ startup/tasks/ util/

Author: indika
Date: Wed Oct  1 08:45:23 2008
New Revision: 700817

URL: http://svn.apache.org/viewvc?rev=700817&view=rev
Log:
Remove implicitly setting of fault handler as we always set it explicitly. O.W, fault stack always contains default fault sequence based fault handler …this case duplicate fault sequence based fault handler (2 fault seqeunce based fault handler)or proxy service fault sequence based fault handler + default fault sequence based fault handler (unnecessary) 

Correct issue in the logic for cloning fault stack 

Modified:
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseMessageReceiver.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/tasks/MessageInjector.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/util/MessageHelper.java

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java?rev=700817&r1=700816&r2=700817&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java Wed Oct  1 08:45:23 2008
@@ -198,7 +198,6 @@
         setAxis2MessageContext(axisMsgCtx);
         this.synCfg = synCfg;
         this.synEnv = synEnv;
-        this.pushFaultHandler(new MediatorFaultHandler(synCfg.getFaultSequence()));
     }
 
     public EndpointReference getFaultTo() {

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java?rev=700817&r1=700816&r2=700817&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java Wed Oct  1 08:45:23 2008
@@ -116,8 +116,7 @@
                     // fault sequence and the message mediation can still continue
                     traceOrDebug(traceOn, "Unable to find fault-sequence : " +
                         proxy.getTargetFaultSequence() + "; using default fault sequence");
-                    synCtx.pushFaultHandler(new MediatorFaultHandler(
-                        synCtx.getSequence(SynapseConstants.FAULT_SEQUENCE_KEY)));
+                    synCtx.pushFaultHandler(new MediatorFaultHandler(synCtx.getFaultSequence()));
                 }
 
             } else if (proxy.getTargetInLineFaultSequence() != null) {

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseMessageReceiver.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseMessageReceiver.java?rev=700817&r1=700816&r2=700817&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseMessageReceiver.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseMessageReceiver.java Wed Oct  1 08:45:23 2008
@@ -76,8 +76,7 @@
 
         try {
             // set default fault handler
-            synCtx.pushFaultHandler(new MediatorFaultHandler(
-                        synCtx.getSequence(SynapseConstants.FAULT_SEQUENCE_KEY)));
+            synCtx.pushFaultHandler(new MediatorFaultHandler(synCtx.getFaultSequence()));
 
             // invoke synapse message mediation through the main sequence
             synCtx.getEnvironment().injectMessage(synCtx);

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/tasks/MessageInjector.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/tasks/MessageInjector.java?rev=700817&r1=700816&r2=700817&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/tasks/MessageInjector.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/tasks/MessageInjector.java Wed Oct  1 08:45:23 2008
@@ -29,6 +29,7 @@
 import org.apache.synapse.MessageContext;
 import org.apache.synapse.SynapseException;
 import org.apache.synapse.audit.AuditHelper;
+import org.apache.synapse.mediators.MediatorFaultHandler;
 import org.apache.synapse.core.SynapseEnvironment;
 import org.apache.synapse.startup.Task;
 import org.apache.synapse.util.PayloadHelper;
@@ -142,10 +143,10 @@
 			return;
 
 		}
-        MessageContext mc = synapseEnvironment.createMessageContext();
 
+        MessageContext mc = synapseEnvironment.createMessageContext();
         AuditHelper.setGlobalAudit(mc);
-        
+        mc.pushFaultHandler(new MediatorFaultHandler(mc.getFaultSequence()));
         mc.setTo(new EndpointReference(to));
         if (format == null) {
             PayloadHelper.setXMLPayload(mc, message.cloneOMElement());

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=700817&r1=700816&r2=700817&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 Oct  1 08:45:23 2008
@@ -1,14 +1,17 @@
 package org.apache.synapse.util;
-
+import org.apache.synapse.MessageContext;
+import org.apache.synapse.FaultHandler;
+import org.apache.synapse.mediators.eip.EIPConstants;
+import org.apache.synapse.core.axis2.Axis2MessageContext;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPHeaderBlock;
+import org.apache.axiom.soap.SOAP11Constants;
 import org.apache.axiom.attachments.Attachments;
 import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMNode;
-import org.apache.axiom.soap.SOAP11Constants;
-import org.apache.axiom.soap.SOAPEnvelope;
-import org.apache.axiom.soap.SOAPHeader;
-import org.apache.axiom.soap.SOAPHeaderBlock;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.addressing.AddressingConstants;
@@ -17,12 +20,8 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.neethi.Policy;
 import org.apache.neethi.PolicyEngine;
-import org.apache.synapse.FaultHandler;
-import org.apache.synapse.MessageContext;
 import org.apache.synapse.SynapseConstants;
 import org.apache.synapse.SynapseException;
-import org.apache.synapse.core.axis2.Axis2MessageContext;
-import org.apache.synapse.mediators.eip.EIPConstants;
 
 import java.util.*;
 
@@ -31,7 +30,8 @@
  */
 public class MessageHelper {
 
-    private static final Log log = LogFactory.getLog(MessageHelper.class);
+
+    private static Log log = LogFactory.getLog(MessageHelper.class);
 
     /**
      * This method will simulate cloning the message context and creating an exact copy of the
@@ -60,7 +60,7 @@
         newCtx.setEnvironment(synCtx.getEnvironment());
         newCtx.setContextEntries(synCtx.getContextEntries());
 
-        // set the parent corelation details to the cloned MC -
+        // set the parent correlation details to the cloned MC -
         //                              for the use of aggregation like tasks
         newCtx.setProperty(EIPConstants.AGGREGATE_CORRELATION, synCtx.getMessageID());
 
@@ -73,19 +73,30 @@
 
         // copy all the synapse level properties to the newCtx
         for (Object o : synCtx.getPropertyKeySet()) {
-            // If there are non String keyed properties neglect them rathern than trow exception
+            // If there are non String keyed properties neglect them rather than trow exception
             if (o instanceof String) {
                 newCtx.setProperty((String) o, synCtx.getProperty((String) o));
             }
         }
-
+        
+        // Make deep copy of fault stack so that parent will not lost it's fault stack
         Stack faultStack = synCtx.getFaultStack();
-        FaultHandler faultHandler = (FaultHandler) faultStack.pop();
-        while (faultHandler != null) {
-            newCtx.pushFaultHandler(faultHandler);
-            faultHandler = (FaultHandler) faultStack.pop();
+        if (!faultStack.isEmpty()) {
+            
+            List<FaultHandler> newFaultStack = new ArrayList<FaultHandler>();
+            newFaultStack.addAll(faultStack);
+            
+            for (FaultHandler faultHandler : newFaultStack) {
+                if (faultHandler != null) {
+                    newCtx.pushFaultHandler(faultHandler);
+                }
+            }
         }
 
+        if (log.isDebugEnabled()) {
+            log.info("Parent's Fault Stack : " + faultStack + " : Child's Fault Stack :" + newCtx.getFaultStack());
+        }
+        
         return newCtx;
     }