You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by ru...@apache.org on 2007/03/05 09:44:57 UTC

svn commit: r514604 - in /webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse: config/ config/xml/ core/axis2/ mediators/

Author: ruwan
Date: Mon Mar  5 00:44:56 2007
New Revision: 514604

URL: http://svn.apache.org/viewvc?view=rev&rev=514604
Log:
formalizing the process of fault handler in synapse

Modified:
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/Constants.java
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/XMLConfigurationBuilder.java
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java
    webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/MediatorFaultHandler.java

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java?view=diff&rev=514604&r1=514603&r2=514604
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/SynapseConfiguration.java Mon Mar  5 00:44:56 2007
@@ -126,7 +126,6 @@
                 handleException("Invalid DynamicSequence for name : " + name + " from registry");
             }
         }
-        // todo: do we need to check weather the o is a Mediator (DynamicProperty)
         return (Mediator) o;
     }
 
@@ -171,6 +170,32 @@
 
     public void setMainMediator(Property dp) {
         this.mainMediator = dp;
+    }
+
+    /**
+     * Return the "fault" sequence of synapse. The fault sequence mediates messages which
+     * brings synapse to an inconsistance state. In an XML based configuration, this is specified
+     * as a sequence with the name "fault" of the configuration
+     * @return the fault sequence to be used
+     */
+    public Mediator getFaultSequence() {
+        return getNamedSequence(org.apache.synapse.config.xml.Constants.FAULT_SEQUENCE);
+    }
+
+    /**
+     * Sets the fault sequence for this instance
+     * @param faulSequence the sequence to be used as the fault sequence
+     */
+    public void setFaultSequence(Mediator faulSequence) {
+        namedSequences.put(org.apache.synapse.config.xml.Constants.FAULT_SEQUENCE, faulSequence);
+    }
+
+    /**
+     * Sets the fault sequence for this instance as a property
+     * @param property the property to be used as the fault sequence
+     */
+    public void setFaultSequence(Property property) {
+        namedSequences.put(org.apache.synapse.config.xml.Constants.FAULT_SEQUENCE, property);
     }
 
     /**

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/Constants.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/Constants.java?view=diff&rev=514604&r1=514603&r2=514604
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/Constants.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/Constants.java Mon Mar  5 00:44:56 2007
@@ -34,6 +34,8 @@
     public static final QName PROXIES_ELT       = new QName(Constants.SYNAPSE_NAMESPACE, "proxies");
     public static final QName PROXY_ELT         = new QName(Constants.SYNAPSE_NAMESPACE, "proxy");
 
+    public static final String FAULT_SEQUENCE   = "fault";
+
     public static final String SYNAPSE_NAMESPACE = org.apache.synapse.Constants.SYNAPSE_NAMESPACE;
     public static final String NULL_NAMESPACE    = "";
     public static final String RAMPART_POLICY    = "rampartPolicy";

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/XMLConfigurationBuilder.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/XMLConfigurationBuilder.java?view=diff&rev=514604&r1=514603&r2=514604
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/XMLConfigurationBuilder.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/XMLConfigurationBuilder.java Mon Mar  5 00:44:56 2007
@@ -31,6 +31,7 @@
 import org.apache.synapse.core.axis2.ProxyService;
 import org.apache.synapse.mediators.base.SequenceMediator;
 import org.apache.synapse.mediators.base.SynapseMediator;
+import org.apache.synapse.mediators.builtin.LogMediator;
 import org.apache.synapse.registry.Registry;
 
 import javax.xml.namespace.QName;
@@ -147,6 +148,15 @@
                 is.close();
             } catch (IOException e) {
             }
+        }
+
+        if (config.getFaultSequence() == null) {
+            SequenceMediator faultSequence = new SequenceMediator();
+            faultSequence.setName(Constants.FAULT_SEQUENCE);
+            LogMediator logMediator = new LogMediator();
+            logMediator.setLogLevel(LogMediator.FULL);
+            faultSequence.addChild(logMediator);
+            config.setFaultSequence(faultSequence);
         }
 
         return config;

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java?view=diff&rev=514604&r1=514603&r2=514604
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/Axis2MessageContext.java Mon Mar  5 00:44:56 2007
@@ -32,6 +32,7 @@
 import org.apache.synapse.SynapseException;
 import org.apache.synapse.FaultHandler;
 import org.apache.synapse.mediators.GetPropertyFunction;
+import org.apache.synapse.mediators.MediatorFaultHandler;
 import org.apache.synapse.config.SynapseConfiguration;
 import org.apache.synapse.core.SynapseEnvironment;
 import org.apache.commons.logging.Log;
@@ -101,7 +102,7 @@
         setAxis2MessageContext(axisMsgCtx);
         cfg = synCfg;
         env = synEnv;
-        // todo: set the default fault sequence from the configuration to context
+        this.pushFault(new MediatorFaultHandler(synCfg.getFaultSequence()));
     }
 
     public EndpointReference getFaultTo() {

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java?view=diff&rev=514604&r1=514603&r2=514604
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/ProxyServiceMessageReceiver.java Mon Mar  5 00:44:56 2007
@@ -77,20 +77,23 @@
                             org.apache.synapse.Constants.PROXYSERVICE_STATISTICS_STACK, proxyServiceStatisticsStack);
                 }
 
-                if (proxy.getTargetInSequence() != null) {
+                if (proxy.getTargetFaultSequence() != null) {
 
-                    Mediator faultSequence = synCtx.getConfiguration().getNamedSequence(proxy.getTargetInSequence());
+                    Mediator faultSequence = synCtx.getConfiguration().getNamedSequence(proxy.getTargetFaultSequence());
                     if (faultSequence != null) {
                         log.debug("setting the fault sequence of the proxy to context");
                         synCtx.pushFault(new MediatorFaultHandler(
                                 synCtx.getConfiguration().getNamedSequence(proxy.getTargetFaultSequence())));
                     } else {
+                        // when we can not find the reference to the fault sequence of the proxy service we should not
+                        // throw an exception because still we have the global fault sequence and the message mediation
+                        // can still continue
                         log.warn("Unable to find the fault sequence for the proxy service " +
-                                "specified by the name " + proxy.getTargetInSequence());
+                                "specified by the name " + proxy.getTargetFaultSequence());
                     }
-                } else if (proxy.getTargetInLineInSequence() != null) {
-                    log.debug("Using the anonymous in sequence of the proxy service for message mediation");
-                    synCtx.pushFault(new MediatorFaultHandler(proxy.getTargetInLineInSequence()));
+                } else if (proxy.getTargetInLineFaultSequence() != null) {
+                    log.debug("Setting the anonymous fault sequence of the proxy to context");
+                    synCtx.pushFault(new MediatorFaultHandler(proxy.getTargetInLineFaultSequence()));
                 }
                 
                 // Using inSequence for the incoming message mediation
@@ -104,7 +107,8 @@
 
                         log.error("Unable to find the in sequence for the proxy service " +
                                 "specified by the name " + proxy.getTargetInSequence());
-                        // TODO invoke a generic synapse error handler for this message
+                        throw new SynapseException("Unable to find the in sequence for the proxy service " +
+                                "specified by the name " + proxy.getTargetInSequence());
                     }
                 } else if (proxy.getTargetInLineInSequence() != null) {
                     log.debug("Using the anonymous in sequence of the proxy service for message mediation");

Modified: webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/MediatorFaultHandler.java
URL: http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/MediatorFaultHandler.java?view=diff&rev=514604&r1=514603&r2=514604
==============================================================================
--- webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/MediatorFaultHandler.java (original)
+++ webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/MediatorFaultHandler.java Mon Mar  5 00:44:56 2007
@@ -35,4 +35,12 @@
     public void handleFault(MessageContext synCtx) throws SynapseException {
         this.faultMediator.mediate(synCtx);
     }
+
+    public Mediator getFaultMediator() {
+        return faultMediator;
+    }
+
+    public void setFaultMediator(Mediator faultMediator) {
+        this.faultMediator = faultMediator;
+    }
 }



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