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;
}