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