You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by sa...@apache.org on 2006/05/18 10:18:37 UTC
svn commit: r407499 [1/2] - in /incubator/synapse/trunk/java: etc/
modules/core/conf/ modules/core/src/org/apache/synapse/
modules/core/src/org/apache/synapse/config/
modules/core/src/org/apache/synapse/config/xml/
modules/core/src/org/apache/synapse/m...
Author: saminda
Date: Thu May 18 01:18:34 2006
New Revision: 407499
URL: http://svn.apache.org/viewvc?rev=407499&view=rev
Log:
committing for asankha
Enhanced Spring support and mediator log statements
Added:
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/Configuration.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/ConfigurationFactory.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/ConfigurationFactoryFinder.java
incubator/synapse/trunk/java/modules/extensions/src/META-INF/services/org.apache.synapse.config.xml.ConfigurationFactory
incubator/synapse/trunk/java/modules/extensions/src/META-INF/services/org.apache.synapse.config.xml.MediatorFactory
- copied, changed from r405612, incubator/synapse/trunk/java/modules/extensions/src/META-INF/services/org.apache.synapse.xml.MediatorFactory
incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/config/
incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/config/SpringConfiguration.java
incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/config/xml/
incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/config/xml/SpringConfigurationFactory.java
incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/config/xml/SpringMediatorFactory.java
incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/mediators/ext/
incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/mediators/ext/spring/
- copied from r405612, incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/mediators/spring/
incubator/synapse/trunk/java/modules/extensions/test/org/apache/synapse/TestMessageContext.java
incubator/synapse/trunk/java/modules/extensions/test/org/apache/synapse/TestUtils.java
incubator/synapse/trunk/java/modules/extensions/test/org/apache/synapse/spring/
incubator/synapse/trunk/java/modules/extensions/test/org/apache/synapse/spring/SpringMediatorTest.java
incubator/synapse/trunk/java/modules/extensions/test/org/apache/synapse/spring/SpringTestBean.java
incubator/synapse/trunk/java/modules/extensions/test/org/apache/synapse/spring/TestMediateHandler.java
incubator/synapse/trunk/java/modules/extensions/test/org/apache/synapse/spring/TestMediateHandlerImpl.java
incubator/synapse/trunk/java/repository/conf/sample/springsample.xml
incubator/synapse/trunk/java/repository/conf/sample/synapse_sample_3.xml
Removed:
incubator/synapse/trunk/java/modules/extensions/src/META-INF/services/org.apache.synapse.xml.MediatorFactory
incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/mediators/ext/spring/SpringMediatorFactory.java
incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/mediators/spring/
incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/processors/
incubator/synapse/trunk/java/modules/extensions/test/org/apache/synapse/extensions/
incubator/synapse/trunk/java/modules/extensions/test/org/apache/synapse/spi/
Modified:
incubator/synapse/trunk/java/etc/project.properties
incubator/synapse/trunk/java/modules/core/conf/log4j.properties
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/Constants.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/HeaderType.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/SynapseConfiguration.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/Constants.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/MediatorFactoryFinder.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/SynapseConfigurationBuilder.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/AbstractListMediator.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/AbstractMediator.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/base/SequenceMediator.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/base/SynapseMediator.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/DropMediator.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/LogMediator.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/PropertyMediator.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/SendMediator.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/ValidateMediator.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/ext/ClassMediator.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/FilterMediator.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/InMediator.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/OutMediator.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/SwitchCaseMediator.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/SwitchMediator.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/transform/FaultMediator.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/transform/HeaderMediator.java
incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/transform/TransformMediator.java
incubator/synapse/trunk/java/modules/extensions/project.xml
incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/mediators/ext/spring/SpringMediator.java
incubator/synapse/trunk/java/modules/samples/src/samples/mediation/AdvancedQuoteClient.java
Modified: incubator/synapse/trunk/java/etc/project.properties
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/etc/project.properties?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/etc/project.properties (original)
+++ incubator/synapse/trunk/java/etc/project.properties Thu May 18 01:18:34 2006
@@ -82,7 +82,7 @@
modules/core/project.xml,\
#modules/mediators/project.xml,\
modules/samples/project.xml,\
-#modules/extensions/project.xml,\
+modules/extensions/project.xml,\
${optional.includes}
# -------------------------------------------------------------------
Modified: incubator/synapse/trunk/java/modules/core/conf/log4j.properties
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/conf/log4j.properties?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/conf/log4j.properties (original)
+++ incubator/synapse/trunk/java/modules/core/conf/log4j.properties Thu May 18 01:18:34 2006
@@ -8,7 +8,7 @@
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=[%t] %-5p %-20c{2} - %m %n
+log4j.appender.stdout.layout.ConversionPattern=[%t] %-5p %C{1} - %m %n
#### appender writes to a file
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
@@ -21,4 +21,4 @@
log4j.appender.logfile.MaxBackupIndex=10
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
-log4j.appender.logfile.layout.ConversionPattern=%6r %5p [%t] (%F:%L) - %m%n
\ No newline at end of file
+log4j.appender.logfile.layout.ConversionPattern=%6r [%t] %5p %C{1} (%F:%L) - %m%n
\ No newline at end of file
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/Constants.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/Constants.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/Constants.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/Constants.java Thu May 18 01:18:34 2006
@@ -18,7 +18,7 @@
import javax.xml.namespace.QName;
/**
- * <p> Global constants for the Synapse project
+ * Global constants for the Synapse project
*/
public interface Constants {
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/HeaderType.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/HeaderType.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/HeaderType.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/HeaderType.java Thu May 18 01:18:34 2006
@@ -165,4 +165,30 @@
}
}
}
+
+ /**
+ * The header type this describes
+ * @return the header type as a string
+ */
+ public String getHeaderType() {
+ switch (headerType) {
+ case TO: {
+ return STR_TO;
+ }
+ case FROM: {
+ return STR_FROM;
+ }
+ case REPLYTO: {
+ return STR_REPLY_TO;
+ }
+ case ACTION: {
+ return STR_ACTION;
+ }
+ default: {
+ String msg = "Unknown header type : " + headerType;
+ log.error(msg);
+ throw new SynapseException(msg);
+ }
+ }
+ }
}
Added: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/Configuration.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/Configuration.java?rev=407499&view=auto
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/Configuration.java (added)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/Configuration.java Thu May 18 01:18:34 2006
@@ -0,0 +1,58 @@
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.synapse.config;
+
+import java.util.Map;
+import java.util.HashMap;
+
+public class Configuration {
+
+ /** The name of this configuration */
+ private String name;
+ /** The type of this named Configuration */
+ private String type;
+
+ /**
+ * Custom (extensible properties of this configuration
+ * e.g. type=Spring, file=url etc
+ */
+ private Map properties = new HashMap();
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public void addProperty(String name, String value) {
+ properties.put(name, value);
+ }
+
+ public String getProperty(String name) {
+ return (String) properties.get(name);
+ }
+}
+
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/SynapseConfiguration.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/SynapseConfiguration.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/SynapseConfiguration.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/SynapseConfiguration.java Thu May 18 01:18:34 2006
@@ -34,6 +34,9 @@
/** Holds named endpoints (which results into absolute EPRs) for reuse */
private Map namedEndpoints = new HashMap();
+ /** Holds named configurations (such as Spring configurations) */
+ private Map namedConfigurations = new HashMap();
+
/** Holds global (system-wide) properties that apply to the synapse instance and every message */
private Map globalProps = new HashMap();
@@ -110,5 +113,23 @@
*/
public Endpoint getNamedEndpoint(String name) {
return (Endpoint) namedEndpoints.get(name);
+ }
+
+ /**
+ * Define a named Configuration with the given name
+ * @param name the name of the Configuration
+ * @param config the Configuration definition
+ */
+ public void addNamedConfiguration(String name, Configuration config) {
+ namedConfigurations.put(name, config);
+ }
+
+ /**
+ * Get the configuration definition with the given name
+ * @param name to be looked up
+ * @return the Configuration which maps to this name
+ */
+ public Configuration getNamedConfiguration(String name) {
+ return (Configuration) namedConfigurations.get(name);
}
}
Added: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/ConfigurationFactory.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/ConfigurationFactory.java?rev=407499&view=auto
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/ConfigurationFactory.java (added)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/ConfigurationFactory.java Thu May 18 01:18:34 2006
@@ -0,0 +1,41 @@
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.synapse.config.xml;
+
+import org.apache.synapse.config.Configuration;
+import org.apache.axiom.om.OMElement;
+
+
+/**
+ * A configuration factory that is capable of creating an instance of a
+ * named Configuration, through a given XML, should implement this interface
+ */
+
+public interface ConfigurationFactory {
+ /**
+ * Creates an instance of a named Configuration using the OMElement
+ * @param elem
+ * @return the created named Configuration
+ */
+ public Configuration createConfiguration(OMElement elem);
+
+ /**
+ * The type attribute of a configuration definition, that this factory could handle
+ * @return the type of configuration definition
+ */
+ public String getType();
+
+}
Added: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/ConfigurationFactoryFinder.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/ConfigurationFactoryFinder.java?rev=407499&view=auto
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/ConfigurationFactoryFinder.java (added)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/ConfigurationFactoryFinder.java Thu May 18 01:18:34 2006
@@ -0,0 +1,122 @@
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.synapse.config.xml;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.config.Configuration;
+import org.apache.synapse.SynapseException;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMAttribute;
+
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import sun.misc.Service;
+
+import javax.xml.namespace.QName;
+
+/**
+ *
+ *
+ * This class is based on J2SE Service Provider model
+ * http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html#Service%20Provider
+ */
+
+public class ConfigurationFactoryFinder {
+
+ private static Map factoryMap = new HashMap();
+ private static final Log log = LogFactory.getLog(ConfigurationFactoryFinder.class);
+ private static ConfigurationFactoryFinder instance = null;
+
+ public static synchronized ConfigurationFactoryFinder getInstance() {
+ if (instance == null) {
+ instance = new ConfigurationFactoryFinder();
+ }
+ return instance;
+ }
+
+ /**
+ * Force re initialization next time
+ */
+ public synchronized void reset() {
+ factoryMap.clear();
+ instance = null;
+ }
+
+ private ConfigurationFactoryFinder() {
+ factoryMap = new HashMap();
+ // now iterate through the available pluggable mediator factories
+ registerExtensions();
+ }
+
+ /**
+ * Register pluggable Configuration factories from the classpath
+ *
+ * This looks for JAR files containing a META-INF/services that adheres to the following
+ * http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html#Service%20Provider
+ */
+ private void registerExtensions() {
+
+ log.debug("registering extensions found in the classpath : " + System.getProperty("java.class.path"));
+
+ // register ConfigurationFactory extensions
+ Iterator it = Service.providers(ConfigurationFactory.class);
+ while (it.hasNext()) {
+ ConfigurationFactory cf = (ConfigurationFactory) it.next();
+ String type = cf.getType();
+ factoryMap.put(type, cf.getClass());
+ log.debug("Added ConfigurationFactory " + cf.getClass() +
+ " to handle '" + type + "' configuration definitions");
+ }
+ }
+
+ /**
+ * This method returns a Configuration of the correct type given an OMElement.
+ *
+ * @param elem an OMElement defining a named Configuration definition
+ * @return a correct Configuration object
+ */
+ public Configuration getConfiguration(OMElement elem) {
+
+ OMAttribute type = elem.getAttribute(new QName(Constants.NULL_NAMESPACE, "type"));
+ log.debug("getConfiguration( type = " + type.getAttributeValue() + " )");
+
+ Class cls = (Class) factoryMap.get(type.getAttributeValue());
+
+ if (cls == null) {
+ String msg = "Unknown Configuration factory referenced by type : " + type.getAttributeValue();
+ log.error(msg);
+ throw new SynapseException(msg);
+ }
+
+ try {
+ ConfigurationFactory cf = (ConfigurationFactory) cls.newInstance();
+ return cf.createConfiguration(elem);
+
+ } catch (InstantiationException e) {
+ String msg = "Error initializing Configuration factory : " + cls;
+ log.error(msg);
+ throw new SynapseException(msg, e);
+
+ } catch (IllegalAccessException e) {
+ String msg = "Error initializing Configuration factory : " + cls;
+ log.error(msg);
+ throw new SynapseException(msg, e);
+ }
+ }
+}
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/Constants.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/Constants.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/Constants.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/Constants.java Thu May 18 01:18:34 2006
@@ -25,6 +25,7 @@
public static final QName DEFINITIONS_ELT = new QName("definitions");
public static final QName SEQUENCE_ELT = new QName("sequence");
public static final QName ENDPOINT_ELT = new QName("endpoint");
+ public static final QName CONFIG_ELT = new QName("configuration");
public static final QName PROPERTY_ELT = new QName("set-property");
public static final QName RULES_ELT = new QName("rules");
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/MediatorFactoryFinder.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/MediatorFactoryFinder.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/MediatorFactoryFinder.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/MediatorFactoryFinder.java Thu May 18 01:18:34 2006
@@ -93,20 +93,27 @@
throw new SynapseException("Error instantiating " + c.getName(), e);
}
}
- // TODO revisit later registerExtensions();
+ // now iterate through the available pluggable mediator factories
+ registerExtensions();
}
- //TODO revist later
+ /**
+ * Register pluggable mediator factories from the classpath
+ *
+ * This looks for JAR files containing a META-INF/services that adheres to the following
+ * http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html#Service%20Provider
+ */
private void registerExtensions() {
- log.debug("registering extensions");
- log.debug(System.getProperty("java.class.path"));
- // now try additional processors
+
+ log.debug("registering extensions found in the classpath : " + System.getProperty("java.class.path"));
+
+ // register MediatorFactory extensions
Iterator it = Service.providers(MediatorFactory.class);
while (it.hasNext()) {
MediatorFactory mf = (MediatorFactory) it.next();
QName tag = mf.getTagQName();
factoryMap.put(tag, mf.getClass());
- log.debug("added MediatorFactory " + mf.getClass() + " to handle " + tag);
+ log.debug("Added MediatorFactory " + mf.getClass() + " to handle " + tag);
}
}
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/SynapseConfigurationBuilder.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/SynapseConfigurationBuilder.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/SynapseConfigurationBuilder.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/config/xml/SynapseConfigurationBuilder.java Thu May 18 01:18:34 2006
@@ -22,6 +22,7 @@
import org.apache.synapse.SynapseException;
import org.apache.synapse.config.SynapseConfiguration;
import org.apache.synapse.config.Endpoint;
+import org.apache.synapse.config.Configuration;
import org.apache.synapse.mediators.base.SequenceMediator;
import org.apache.synapse.mediators.base.SynapseMediator;
import org.apache.commons.logging.Log;
@@ -43,6 +44,7 @@
private static Log log = LogFactory.getLog(SynapseConfigurationBuilder.class);
private SynapseConfiguration config = new SynapseConfiguration();
+ ConfigurationFactoryFinder configFacFinder = ConfigurationFactoryFinder.getInstance();
public SynapseConfigurationBuilder() {}
@@ -56,9 +58,7 @@
try {
root = new StAXOMBuilder(is).getDocumentElement();
} catch (XMLStreamException e) {
- String msg = "Error parsing Synapse configuration : " + e.getMessage();
- log.error(msg);
- throw new SynapseException(msg);
+ handleException("Error parsing Synapse configuration : " + e.getMessage(), e);
}
root.build();
@@ -79,6 +79,13 @@
defineEndpoint(elt);
}
+ // digest defined named Configurations
+ iter = definitions.getChildrenWithName(Constants.CONFIG_ELT);
+ while (iter.hasNext()) {
+ OMElement elt = (OMElement) iter.next();
+ defineConfiguration(elt);
+ }
+
// digest defined Global properties
iter = definitions.getChildrenWithName(Constants.PROPERTY_ELT);
while (iter.hasNext()) {
@@ -89,15 +96,11 @@
OMElement elem = root.getFirstChildWithName(Constants.RULES_ELT);
if (elem == null) {
- String msg = "A valid Synapse configuration MUST specify the main mediator using the <rules> element";
- log.error(msg);
- throw new SynapseException(msg);
+ handleException("A valid Synapse configuration MUST specify the main mediator using the <rules> element");
} else {
SynapseMediator sm = (SynapseMediator) MediatorFactoryFinder.getInstance().getMediator(elem);
if (sm.getList().isEmpty()) {
- String msg = "Invalid configuration, the main mediator specified by the <rules> element is empty";
- log.error(msg);
- throw new SynapseException(msg);
+ handleException("Invalid configuration, the main mediator specified by the <rules> element is empty");
} else {
config.setMainMediator(sm);
}
@@ -118,9 +121,7 @@
OMAttribute name = elem.getAttribute(new QName(Constants.NULL_NAMESPACE, "name"));
OMAttribute value = elem.getAttribute(new QName(Constants.NULL_NAMESPACE, "value"));
if (name == null || value == null) {
- String msg = "The 'name' and 'value' attributes are required";
- log.error(msg);
- throw new SynapseException(msg);
+ handleException("The 'name' and 'value' attributes are required");
}
config.addProperty(name.getAttributeValue(), value.getAttributeValue());
}
@@ -142,10 +143,7 @@
OMAttribute name = ele.getAttribute(new QName(Constants.NULL_NAMESPACE, "name"));
if (name == null) {
- String msg = "The 'name' attribute is required for a named endpoint definition";
- log.error(msg);
- throw new SynapseException(msg);
-
+ handleException("The 'name' attribute is required for a named endpoint definition");
} else {
Endpoint endpoint = new Endpoint();
endpoint.setName(name.getAttributeValue());
@@ -156,12 +154,43 @@
endpoint.setAddress(new URL(address.getAttributeValue()));
config.addNamedEndpoint(endpoint.getName(), endpoint);
} catch (MalformedURLException e) {
- String msg = "Invalid URL specified for 'address' : " + address.getAttributeValue();
- log.error(msg, e);
- throw new SynapseException(msg, e);
+ handleException("Invalid URL specified for 'address' : " + address.getAttributeValue(), e);
}
}
}
}
+
+ /**
+ * Digest a named configuratino definition and add it to the SynapseConfiguration
+ *
+ * <configuration name="string" type="string">
+ * <property name="string" value="string"/>*
+ * </configuration>
+ * @param elem the XML element defining the configuration
+ */
+ private void defineConfiguration(OMElement elem) {
+
+ OMAttribute name = elem.getAttribute(new QName(Constants.NULL_NAMESPACE, "name"));
+ OMAttribute type = elem.getAttribute(new QName(Constants.NULL_NAMESPACE, "type"));
+
+ if (name == null) {
+ handleException("The 'name' attribute is required for a named configuration definition");
+ } else if (type == null) {
+ handleException("The 'type' attribute is required for a named configuration definition");
+ } else {
+ config.addNamedConfiguration(name.getAttributeValue(), configFacFinder.getConfiguration(elem));
+ }
+ }
+
+ private void handleException(String msg) {
+ log.error(msg);
+ throw new SynapseException(msg);
+ }
+
+ private void handleException(String msg, Exception e) {
+ log.error(msg, e);
+ throw new SynapseException(msg, e);
+ }
+
}
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/AbstractListMediator.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/AbstractListMediator.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/AbstractListMediator.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/AbstractListMediator.java Thu May 18 01:18:34 2006
@@ -38,7 +38,7 @@
protected List mediators = new ArrayList();
public boolean mediate(MessageContext synCtx) {
- log.debug(getType() + " mediate()");
+ log.debug("Implicit Sequence <" + getType() + "> :: mediate()");
Iterator it = mediators.iterator();
while (it.hasNext()) {
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/AbstractMediator.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/AbstractMediator.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/AbstractMediator.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/AbstractMediator.java Thu May 18 01:18:34 2006
@@ -30,6 +30,11 @@
* @return the class name of the mediator
*/
public String getType() {
- return getClass().getName();
+ String cls = getClass().getName();
+ int p = cls.lastIndexOf(".");
+ if (p == -1)
+ return cls;
+ else
+ return cls.substring(p+1);
}
}
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/base/SequenceMediator.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/base/SequenceMediator.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/base/SequenceMediator.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/base/SequenceMediator.java Thu May 18 01:18:34 2006
@@ -44,7 +44,7 @@
* @return as per standard mediator result
*/
public boolean mediate(MessageContext synCtx) {
- log.debug(getType() + " mediate()");
+ log.debug("Sequence mediator <" + (name == null? "anonymous" : name ) +"> :: mediate()");
if (ref == null) {
return super.mediate(synCtx);
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/base/SynapseMediator.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/base/SynapseMediator.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/base/SynapseMediator.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/base/SynapseMediator.java Thu May 18 01:18:34 2006
@@ -17,6 +17,9 @@
package org.apache.synapse.mediators.base;
import org.apache.synapse.mediators.AbstractListMediator;
+import org.apache.synapse.MessageContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
/**
* The SynapseMediator is the "mainmediator" of the synapse engine. It is
@@ -28,4 +31,16 @@
* @see org.apache.synapse.config.SynapseConfiguration#getMainMediator()
*/
public class SynapseMediator extends AbstractListMediator {
+
+ private static final Log log = LogFactory.getLog(SynapseMediator.class);
+
+ /**
+ * Perform the mediation specified by the rule set
+ * @param synCtx the message context
+ * @return as per standard mediate() semantics
+ */
+ public boolean mediate(MessageContext synCtx) {
+ log.debug("Synapse main mediator :: mediate()");
+ return super.mediate(synCtx);
+ }
}
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/DropMediator.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/DropMediator.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/DropMediator.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/DropMediator.java Thu May 18 01:18:34 2006
@@ -34,7 +34,7 @@
* @return false always
*/
public boolean mediate(MessageContext synCtx) {
- log.debug(getType() + " mediate()");
+ log.debug("Drop mediator :: mediate()");
if (synCtx.getTo() == null) {
return false;
} else {
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/LogMediator.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/LogMediator.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/LogMediator.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/LogMediator.java Thu May 18 01:18:34 2006
@@ -54,7 +54,7 @@
* @return true always
*/
public boolean mediate(MessageContext synCtx) {
- log.debug(getType() + " mediate()");
+ log.debug("Log mediator :: mediate()");
log.info(getLogMessage(synCtx));
return true;
}
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/PropertyMediator.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/PropertyMediator.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/PropertyMediator.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/PropertyMediator.java Thu May 18 01:18:34 2006
@@ -19,6 +19,8 @@
import org.apache.synapse.MessageContext;
import org.apache.synapse.Util;
import org.apache.axiom.om.xpath.AXIOMXPath;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
/**
* The property mediator would save a named property as a local property
@@ -31,14 +33,18 @@
private String value = null;
private AXIOMXPath expression = null;
+ private static final Log log = LogFactory.getLog(PropertyMediator.class);
+
/**
* Sets a property into the current (local) Synapse Context
* @param smc the message context
* @return true always
*/
public boolean mediate(MessageContext smc) {
- smc.setProperty(getName(),
- (value != null ? getValue() : Util.getStringValue(getExpression(), smc)));
+ log.debug("Set-Property mediator :: mediate()");
+ String value = (getValue() != null ? getValue() : Util.getStringValue(getExpression(), smc));
+ log.debug("Setting property : " + getName() + " = " + value);
+ smc.setProperty(getName(), value);
return true;
}
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/SendMediator.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/SendMediator.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/SendMediator.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/SendMediator.java Thu May 18 01:18:34 2006
@@ -50,7 +50,7 @@
* @return false always as this is a leaf mediator
*/
public boolean mediate(MessageContext synCtx) {
- log.debug(getType() + " mediate()");
+ log.debug("Send mediator :: mediate()");
// TODO this may be really strange but true.. unless you call the below, sometimes it
// results in an unbound URI exception for no credible reason - needs more investigation
@@ -59,6 +59,7 @@
// if no endpoints are defined, send where implicitly stated
if (endpoints.isEmpty()) {
+ log.debug("Sending message using implicit message properties..");
log.debug("Sending To: " + (synCtx.getTo() != null ?
synCtx.getTo().getAddress() : "null"));
log.debug("SOAPAction: " + (synCtx.getWSAAction() != null ?
@@ -76,6 +77,9 @@
singleEndpoint.getRef());
eprAddress = singleEndpoint.getAddress().toString();
}
+
+ log.debug("Sending message to endpoint :: name = " +
+ singleEndpoint.getName() + " resolved address = " + eprAddress);
synCtx.setTo(new EndpointReference(eprAddress));
log.debug("Sending To: " + (synCtx.getTo() != null ?
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/ValidateMediator.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/ValidateMediator.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/ValidateMediator.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/ValidateMediator.java Thu May 18 01:18:34 2006
@@ -75,7 +75,7 @@
/**
* Default schema language (http://www.w3.org/2001/XMLSchema).
*/
- private static final String DEFAULT_SCHEMA_LANGUAGE = XMLConstants.W3C_XML_SCHEMA_NS_URI;
+ private static final String DEFAULT_SCHEMA_LANGUAGE = "http://www.w3.org/2001/XMLSchema";
public String getSchemaUrl() {
@@ -102,10 +102,15 @@
*/
private OMNode getValidateSource(MessageContext synCtx) {
- if (source == null) {
+ AXIOMXPath sourceXPath = source;
+ // do not change the source XPath if not specified, as it is shared..
+ // and will cause confusion to concurrent messages and erroneous results
+
+ if (sourceXPath == null) {
+ log.debug("validation source was not specified.. defaulting to SOAP Body");
try {
- source = new AXIOMXPath("//SOAP-ENV:Body/child::*");
- source.addNamespace("SOAP-ENV", synCtx.isSOAP11() ?
+ sourceXPath = new AXIOMXPath("//SOAP-ENV:Body/child::*");
+ sourceXPath.addNamespace("SOAP-ENV", synCtx.isSOAP11() ?
SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI : SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
} catch (JaxenException e) {
// this should not cause a runtime exception!
@@ -113,7 +118,7 @@
}
try {
- Object o = source.evaluate(synCtx.getEnvelope());
+ Object o = sourceXPath.evaluate(synCtx.getEnvelope());
if (o instanceof OMNode) {
return (OMNode) o;
} else if (o instanceof List && !((List) o).isEmpty()) {
@@ -168,6 +173,7 @@
int sourceCount = st.countTokens();
if (sourceCount == 0) {
+ log.debug("Schemas have not been specified..");
schema = factory.newSchema();
} else {
StreamSource[] sources = new StreamSource[sourceCount];
@@ -177,6 +183,7 @@
schema = factory.newSchema(sources);
}
} else {
+ log.debug("Schemas have not been specified..");
schema = factory.newSchema();
}
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/ext/ClassMediator.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/ext/ClassMediator.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/ext/ClassMediator.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/ext/ClassMediator.java Thu May 18 01:18:34 2006
@@ -49,7 +49,7 @@
*/
public boolean mediate(MessageContext synCtx) {
- log.debug(getType() + " mediate()");
+ log.debug("Class mediator <" + clazz.getName() + ">:: mediate()");
Mediator m = null;
try {
m = (Mediator) clazz.newInstance();
@@ -70,8 +70,10 @@
* @param m the mediator
*/
private void setProperties(Mediator m, MessageContext synCtx) {
+
Iterator iter = properties.iterator();
while (iter.hasNext()) {
+
MediatorProperty mProp = (MediatorProperty) iter.next();
String mName = "set" + Character.toUpperCase(mProp.getName().charAt(0)) + mProp.getName().substring(1);
@@ -79,9 +81,9 @@
mProp.getValue() :
Util.getStringValue(mProp.getExpression(), synCtx));
-
try {
Method method = m.getClass().getMethod(mName, new Class[] {String.class});
+ log.debug("Setting property :: invoking method " + mName + "(" + value + ")");
method.invoke(m, new Object[] { value });
} catch (Exception e) {
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/FilterMediator.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/FilterMediator.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/FilterMediator.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/FilterMediator.java Thu May 18 01:18:34 2006
@@ -43,10 +43,12 @@
* @return true if filter condition fails. else returns as per List mediator semantics
*/
public boolean mediate(MessageContext synCtx) {
- log.debug(getType() + " mediate()");
+ log.debug("Filter mediator mediate()");
if (test(synCtx)) {
+ log.debug("Filter condition satisfied.. executing child mediators");
return super.mediate(synCtx);
} else {
+ log.debug("Filter condition failed.. will skip executing child mediators");
return true;
}
}
@@ -62,9 +64,11 @@
public boolean test(MessageContext synCtx) {
try {
if (xpath != null) {
+ log.debug("Evaluating XPath expression : " + xpath);
return xpath.booleanValueOf(synCtx.getEnvelope());
} else if (source != null && regex != null) {
+ log.debug("Evaluating regular expression : " + regex + " against source : " + source);
return regex.matcher(Util.getStringValue(source, synCtx)).matches();
} else {
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/InMediator.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/InMediator.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/InMediator.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/InMediator.java Thu May 18 01:18:34 2006
@@ -37,10 +37,12 @@
* @return true if filter condition fails. else returns as per List mediator semantics
*/
public boolean mediate(MessageContext synCtx) {
- log.debug(getType() + " mediate()");
+ log.debug("In mediator mediate()");
if (test(synCtx)) {
+ log.debug("Current message is incoming.. executing child mediators");
return super.mediate(synCtx);
} else {
+ log.debug("Current message is not incoming.. skip executing child mediators");
return true;
}
}
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/OutMediator.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/OutMediator.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/OutMediator.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/OutMediator.java Thu May 18 01:18:34 2006
@@ -37,10 +37,12 @@
* @return true if filter condition fails. else returns as per List mediator semantics
*/
public boolean mediate(MessageContext synCtx) {
- log.debug(getType() + " mediate()");
+ log.debug("Out mediator mediate()");
if (test(synCtx)) {
+ log.debug("Current message is outgoing.. executing child mediators");
return super.mediate(synCtx);
} else {
+ log.debug("Current message is not outgoing.. executing child mediators");
return true;
}
}
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/SwitchCaseMediator.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/SwitchCaseMediator.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/SwitchCaseMediator.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/SwitchCaseMediator.java Thu May 18 01:18:34 2006
@@ -16,6 +16,8 @@
package org.apache.synapse.mediators.filters;
import org.apache.synapse.mediators.AbstractListMediator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import java.util.regex.Pattern;
import java.util.List;
@@ -26,7 +28,11 @@
*/
public class SwitchCaseMediator extends AbstractListMediator {
+ private static final Log log = LogFactory.getLog(SwitchCaseMediator.class);
+
+ /** The regular expression pattern to be used */
private Pattern regex = null;
+ /** Is this the default case? */
private boolean defaultCase = false;
public SwitchCaseMediator() {}
@@ -54,8 +60,12 @@
}
public boolean matches(String value) {
- if (isDefaultCase())
+ if (isDefaultCase()) {
+ log.debug("This is the default case of the switch");
return true;
- return regex.matcher(value).matches();
+ }
+ boolean retVal = regex.matcher(value).matches();
+ log.debug("Case : " + regex + " evaluated to : " + retVal);
+ return retVal;
}
}
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/SwitchMediator.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/SwitchMediator.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/SwitchMediator.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/filters/SwitchMediator.java Thu May 18 01:18:34 2006
@@ -36,8 +36,11 @@
private static final Log log = LogFactory.getLog(SwitchMediator.class);
+ /** The XPath expression specifying the source element to apply the switch case expressions against */
private AXIOMXPath source = null;
+ /** The list of switch cases */
private List cases = new ArrayList();
+ /** The default switch case, if any */
private SwitchCaseMediator defaultCase = null;
/**
@@ -47,7 +50,9 @@
*/
public boolean mediate(MessageContext synCtx) {
+ log.debug("Switch mediator :: mediate()");
String sourceText = Util.getStringValue(source, synCtx);
+ log.debug("Applying switch case regex patterns against evaluated source value : " + sourceText);
Iterator iter = cases.iterator();
while (iter.hasNext()) {
@@ -58,6 +63,7 @@
}
if (defaultCase != null) {
+ log.debug("Executing default switch case");
return defaultCase.mediate(synCtx);
}
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/transform/FaultMediator.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/transform/FaultMediator.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/transform/FaultMediator.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/transform/FaultMediator.java Thu May 18 01:18:34 2006
@@ -69,7 +69,7 @@
private String faultDetail = null;
public boolean mediate(MessageContext synCtx) {
- log.debug(getType() + " mediate()");
+ log.debug("Fault mediator mediate()");
SOAPEnvelope envelop = synCtx.getEnvelope();
switch (soapVersion) {
@@ -93,6 +93,7 @@
private boolean makeSOAPFault(MessageContext synCtx, int soapVersion) {
+ log.debug("Creating a SOAP fault using SOAP " + (soapVersion == SOAP11 ? "1.1" : "1.2"));
// get the correct SOAP factory to be used
SOAPFactory factory = (
soapVersion == SOAP11 ? OMAbstractFactory.getSOAP11Factory() : OMAbstractFactory.getSOAP12Factory());
@@ -114,6 +115,7 @@
// set the fault element
faultEnvelope.getBody().setFirstChild(fault);
+ log.debug("Setting the fault message as : " + fault);
// set the fault message "to" header to the "faultTo" of the original message if
// such a header existed on the original message, else set it to the "replyTo" of the original
@@ -121,10 +123,14 @@
EndpointReference toEPR = synCtx.getTo();
EndpointReference faultToEPR = synCtx.getFaultTo();
if (faultToEPR != null) {
+ log.debug("Setting fault message To : " + faultToEPR);
+ log.debug("Setting fault message ReplyTo : " + toEPR);
synCtx.setTo(faultToEPR);
synCtx.setReplyTo(toEPR);
} else {
EndpointReference replyToEPR = synCtx.getReplyTo();
+ log.debug("Setting fault message To : " + replyToEPR);
+ log.debug("Setting fault message ReplyTo : " + toEPR);
synCtx.setTo(replyToEPR);
synCtx.setReplyTo(toEPR);
}
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/transform/HeaderMediator.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/transform/HeaderMediator.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/transform/HeaderMediator.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/transform/HeaderMediator.java Thu May 18 01:18:34 2006
@@ -47,7 +47,7 @@
private int action = ACTION_SET;
/** An expression which should be evaluated, and the result set as the header value */
private AXIOMXPath expression = null;
-
+ /** The header type to which this mediator applies to */
private HeaderType headerType = new HeaderType();
/**
@@ -57,15 +57,16 @@
* @return true always
*/
public boolean mediate(MessageContext synCtx) {
- log.debug(getType() + " mediate()");
+ log.debug("Header mediator <" + (action == ACTION_SET ? "Set" : "Remove") + "> :: mediate()");
if (action == ACTION_SET) {
- headerType.setHeader(
- synCtx,
- (getValue() != null ? getValue() :
- Util.getStringValue(getExpression(), synCtx)));
+ String value = (getValue() != null ? getValue() :
+ Util.getStringValue(getExpression(), synCtx));
+ log.debug("Setting header : " + headerType.getHeaderType() + " to : " + value);
+ headerType.setHeader(synCtx, value);
} else {
+ log.debug("Removing header : " + headerType.getHeaderType() + " from current message");
headerType.removeHeader(synCtx);
}
return true;
Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/transform/TransformMediator.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/transform/TransformMediator.java?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/transform/TransformMediator.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/transform/TransformMediator.java Thu May 18 01:18:34 2006
@@ -3,6 +3,7 @@
import org.apache.axiom.om.OMNode;
import org.apache.axiom.om.OMContainer;
+import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.impl.builder.StAXOMBuilder;
import org.apache.axiom.om.xpath.AXIOMXPath;
import org.apache.axiom.soap.SOAPEnvelope;
@@ -52,16 +53,17 @@
* @return true always
*/
public boolean mediate(MessageContext synCtx) {
- log.debug(getType() + " mediate()");
+ log.debug("Transform mediator mediate()");
if (xsltUrl != null) {
+ log.debug("Performing XSLT transformation against : " + xsltUrl);
performXLST(synCtx);
return true;
} else if (xQueryUrl != null) {
//TODO later revisit later
- System.err.println("Unimplemented functionality..");
- return true;
+ log.error("Unimplemented functionality : XQuery transformation");
+ throw new UnsupportedOperationException("XQuery transformation is not yet supported");
} else {
log.error("Invalid configuration - xslt/xq not specified");
@@ -80,6 +82,7 @@
XMLStreamWriter xsWriterForSource = XMLOutputFactory.newInstance().createXMLStreamWriter(baosForSource);
OMNode sourceNode = getTransformSource(synCtx);
+ log.debug("Transformation source : " + sourceNode);
sourceNode.serialize(xsWriterForSource);
Source transformSrc = new StreamSource(new ByteArrayInputStream(baosForSource.toByteArray()));
@@ -92,13 +95,15 @@
StAXOMBuilder builder = new StAXOMBuilder(new ByteArrayInputStream(baosForTarget.toByteArray()));
OMContainer parent = sourceNode.getParent();
+ OMElement result = builder.getDocumentElement();
+ log.debug("Transformation result : " + result);
if (parent instanceof SOAPEnvelope) {
((SOAPEnvelope) parent).getBody().getFirstOMChild().detach();
- ((SOAPEnvelope) parent).getBody().setFirstChild(builder.getDocumentElement());
+ ((SOAPEnvelope) parent).getBody().setFirstChild(result);
} else {
parent.getFirstOMChild().detach();
- parent.addChild(builder.getDocumentElement());
+ parent.addChild(result);
}
} catch (MalformedURLException mue) {
@@ -116,16 +121,22 @@
private OMNode getTransformSource(MessageContext synCtx) {
- if (source == null) {
+ // Do not change source, if none was specified. else will cause issues
+ // for concurrent messages and reuse of the mediator instance
+ AXIOMXPath sourceXPath = source;
+
+ if (sourceXPath == null) {
try {
- source = new AXIOMXPath("//SOAP-ENV:Body");
- source.addNamespace("SOAP-ENV", synCtx.isSOAP11() ?
+ log.debug("Transform source XPath was not specified.. defaulting to SOAP Body");
+ sourceXPath = new AXIOMXPath("//SOAP-ENV:Body");
+ sourceXPath.addNamespace("SOAP-ENV", synCtx.isSOAP11() ?
SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI : SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
} catch (JaxenException e) {}
}
try {
- Object o = source.evaluate(synCtx.getEnvelope());;
+ log.debug("Transformation against source element evaluated by : " + sourceXPath);
+ Object o = sourceXPath.evaluate(synCtx.getEnvelope());
if (o instanceof OMNode) {
return (OMNode) o;
} else if (o instanceof List && !((List) o).isEmpty()) {
Modified: incubator/synapse/trunk/java/modules/extensions/project.xml
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/extensions/project.xml?rev=407499&r1=407498&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/extensions/project.xml (original)
+++ incubator/synapse/trunk/java/modules/extensions/project.xml Thu May 18 01:18:34 2006
@@ -44,7 +44,8 @@
<resource>
<directory>src</directory>
<includes>
- <include>**/org.apache.synapse.xml.MediatorFactory</include>
+ <include>**/org.apache.synapse.config.xml.MediatorFactory</include>
+ <include>**/org.apache.synapse.config.xml.ConfigurationFactory</include>
</includes>
</resource>
</resources>
Added: incubator/synapse/trunk/java/modules/extensions/src/META-INF/services/org.apache.synapse.config.xml.ConfigurationFactory
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/extensions/src/META-INF/services/org.apache.synapse.config.xml.ConfigurationFactory?rev=407499&view=auto
==============================================================================
--- incubator/synapse/trunk/java/modules/extensions/src/META-INF/services/org.apache.synapse.config.xml.ConfigurationFactory (added)
+++ incubator/synapse/trunk/java/modules/extensions/src/META-INF/services/org.apache.synapse.config.xml.ConfigurationFactory Thu May 18 01:18:34 2006
@@ -0,0 +1 @@
+org.apache.synapse.config.xml.SpringConfigurationFactory
\ No newline at end of file
Copied: incubator/synapse/trunk/java/modules/extensions/src/META-INF/services/org.apache.synapse.config.xml.MediatorFactory (from r405612, incubator/synapse/trunk/java/modules/extensions/src/META-INF/services/org.apache.synapse.xml.MediatorFactory)
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/extensions/src/META-INF/services/org.apache.synapse.config.xml.MediatorFactory?p2=incubator/synapse/trunk/java/modules/extensions/src/META-INF/services/org.apache.synapse.config.xml.MediatorFactory&p1=incubator/synapse/trunk/java/modules/extensions/src/META-INF/services/org.apache.synapse.xml.MediatorFactory&r1=405612&r2=407499&rev=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/extensions/src/META-INF/services/org.apache.synapse.xml.MediatorFactory (original)
+++ incubator/synapse/trunk/java/modules/extensions/src/META-INF/services/org.apache.synapse.config.xml.MediatorFactory Thu May 18 01:18:34 2006
@@ -1 +1 @@
-org.apache.synapse.mediators.spring.SpringMediatorFactory
\ No newline at end of file
+org.apache.synapse.config.xml.SpringMediatorFactory
\ No newline at end of file
Added: incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/config/SpringConfiguration.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/config/SpringConfiguration.java?rev=407499&view=auto
==============================================================================
--- incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/config/SpringConfiguration.java (added)
+++ incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/config/SpringConfiguration.java Thu May 18 01:18:34 2006
@@ -0,0 +1,48 @@
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.synapse.config;
+
+import org.springframework.context.support.GenericApplicationContext;
+import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
+import org.springframework.core.io.FileSystemResource;
+import org.apache.synapse.config.xml.SpringConfigurationFactory;
+
+public class SpringConfiguration extends Configuration {
+
+ /** This is the Spring ApplicationContext/BeanFactory */
+ GenericApplicationContext appContext = null;
+
+ public static final String SPRING_TYPE = "spring";
+
+ /**
+ * Create a Spring configuration from the given configuration
+ * @param configFile the configuration file to be used
+ */
+ public SpringConfiguration(String name, String configFile) {
+ super.setName(name);
+ super.setType(SPRING_TYPE);
+ appContext = new GenericApplicationContext();
+ XmlBeanDefinitionReader xbdr = new XmlBeanDefinitionReader(appContext);
+ xbdr.setValidating(false);
+ xbdr.loadBeanDefinitions(new FileSystemResource(configFile));
+ appContext.refresh();
+ }
+
+ public GenericApplicationContext getAppContext() {
+ return appContext;
+ }
+
+}
Added: incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/config/xml/SpringConfigurationFactory.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/config/xml/SpringConfigurationFactory.java?rev=407499&view=auto
==============================================================================
--- incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/config/xml/SpringConfigurationFactory.java (added)
+++ incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/config/xml/SpringConfigurationFactory.java Thu May 18 01:18:34 2006
@@ -0,0 +1,64 @@
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.synapse.config.xml;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.config.Configuration;
+import org.apache.synapse.config.SpringConfiguration;
+
+import javax.xml.namespace.QName;
+import java.util.Iterator;
+
+public class SpringConfigurationFactory implements ConfigurationFactory {
+
+ private static final Log log = LogFactory.getLog(SpringConfigurationFactory.class);
+
+ private static final String CONFIG_NAME = "config_name";
+
+ /**
+ * <configuration name="string" type="spring">
+ * <property name="config_src" value="string"/>
+ * <property>*
+ * </configuration>
+ *
+ * @param elem
+ * @return A named Spring Configuration
+ */
+ public Configuration createConfiguration(OMElement elem) {
+
+ Iterator iter = elem.getChildrenWithName(new QName(Constants.NULL_NAMESPACE, "property"));
+ while (iter.hasNext()) {
+ Object o = iter.next();
+ if (o instanceof OMElement) {
+ OMElement prop = (OMElement) o;
+ OMAttribute name = prop.getAttribute(new QName(Constants.NULL_NAMESPACE, "name"));
+ OMAttribute value = prop.getAttribute(new QName(Constants.NULL_NAMESPACE, "value"));
+
+ if (name != null && value != null && CONFIG_NAME.equals(name.getAttributeValue())) {
+ return new SpringConfiguration(name.getAttributeValue(), value.getAttributeValue());
+ }
+ }
+ }
+ return null;
+ }
+
+ public String getType() {
+ return SpringConfiguration.SPRING_TYPE;
+ }
+}
Added: incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/config/xml/SpringMediatorFactory.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/config/xml/SpringMediatorFactory.java?rev=407499&view=auto
==============================================================================
--- incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/config/xml/SpringMediatorFactory.java (added)
+++ incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/config/xml/SpringMediatorFactory.java Thu May 18 01:18:34 2006
@@ -0,0 +1,69 @@
+package org.apache.synapse.config.xml;
+
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.SynapseException;
+import org.apache.synapse.config.SpringConfiguration;
+import org.apache.synapse.api.Mediator;
+import org.apache.synapse.mediators.ext.spring.SpringMediator;
+
+import javax.xml.namespace.QName;
+
+/**
+ * Creates an instance of a Spring mediator that refers to the given Spring
+ * configuration and bean.
+ * <p/>
+ * <spring ref_bean="exampleBean1" (config_name="spring1" | config_src="spring.xml)"/>
+ */
+public class SpringMediatorFactory implements MediatorFactory {
+
+ private static final Log log = LogFactory.getLog(SpringMediatorFactory.class);
+
+ private static final QName tagName = new QName(Constants.SYNAPSE_NAMESPACE, "spring");
+
+ /**
+ * Create a Spring mediator instance referring to the bean and configuration given
+ * by the OMElement declaration
+ *
+ * @param elem the OMElement that specifies the Spring mediator configuration
+ * @return the Spring mediator instance created
+ */
+ public Mediator createMediator(OMElement elem) {
+
+ SpringMediator sm = new SpringMediator();
+ OMAttribute ref = elem.getAttribute(new QName(Constants.NULL_NAMESPACE, "ref_bean"));
+ OMAttribute cfg = elem.getAttribute(new QName(Constants.NULL_NAMESPACE, "config_name"));
+ OMAttribute src = elem.getAttribute(new QName(Constants.NULL_NAMESPACE, "config_src"));
+
+ if (ref == null) {
+ handleException("The 'ref_bean' attribute is required for a Spring mediator definition");
+ } else if (cfg == null && src == null) {
+ handleException("A 'config_name' or 'config_src' attribute is required for a Spring mediator definition");
+
+ } else {
+ sm.setBeanName(ref.getAttributeValue());
+ if (cfg != null) {
+ sm.setConfigName(cfg.getAttributeValue());
+
+ } else {
+ log.debug("Creating an anonymous Spring configuration using source : " + src.getAttributeValue());
+ SpringConfiguration sc = new SpringConfiguration("anonymous", src.getAttributeValue());
+ sm.setAppContext(sc.getAppContext());
+ }
+ return sm;
+ }
+ return null;
+ }
+
+ private void handleException(String msg) {
+ log.error(msg);
+ throw new SynapseException(msg);
+ }
+
+ public QName getTagQName() {
+ return tagName;
+ }
+
+}
Modified: incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/mediators/ext/spring/SpringMediator.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/mediators/ext/spring/SpringMediator.java?rev=407499&r1=405612&r2=407499&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/mediators/ext/spring/SpringMediator.java (original)
+++ incubator/synapse/trunk/java/modules/extensions/src/org/apache/synapse/mediators/ext/spring/SpringMediator.java Thu May 18 01:18:34 2006
@@ -1,15 +1,32 @@
-package org.apache.synapse.mediators.spring;
-
-import org.apache.synapse.SynapseMessage;
-
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.synapse.mediators.ext.spring;
+
+import org.apache.synapse.MessageContext;
+import org.apache.synapse.SynapseException;
+import org.apache.synapse.config.Configuration;
+import org.apache.synapse.config.SpringConfiguration;
import org.apache.synapse.api.Mediator;
-
-import org.springframework.context.support.GenericApplicationContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.context.ApplicationContext;
/**
- *
- * @see org.apache.synapse.mediators.base.builtin.xslt.XSLTProcessorConfigurator
- * <p> This class is the class that "plugs" Spring-based mediators into Synapse.
+ * This mediator allows
+ * <p> This class is the class that "plugs" Spring-based mediators into Synapse.
* <p> A spring based mediator is any object that implements mediator and can be instantiated by
* Spring (see www.springframework.org). The mediator definition is set up using the
* SpringMediatorProcessorConfigurator class.
@@ -19,36 +36,93 @@
*
*/
public class SpringMediator implements Mediator {
-
- private GenericApplicationContext ctx = null;
-
- private String beanName = null;
-
- public boolean mediate(SynapseMessage smc) {
- Mediator m = (Mediator) getContext().getBean(getBeanName());
-/* if (EnvironmentAware.class.isAssignableFrom(m.getClass())) {
- ((EnvironmentAware) m).setSynapseEnvironment(se);
- }*/
- return m.mediate(smc);
-
- }
-
-
-
- public void setContext(GenericApplicationContext ctx) {
- this.ctx = ctx;
- }
-
- public GenericApplicationContext getContext() {
- return ctx;
- }
-
- public void setBeanName(String beanName) {
- this.beanName = beanName;
- }
- public String getBeanName() {
- return beanName;
- }
+ private static final Log log = LogFactory.getLog(SpringMediator.class);
+ /** The Spring bean ref to be used */
+ private String beanName = null;
+ /** The named Spring configName to be used */
+ private String configName = null;
+ /** The Spring ApplicationContext to be used */
+ private ApplicationContext appContext = null;
+
+ public boolean mediate(MessageContext synCtx) {
+
+ if (beanName == null) {
+ handleException("The bean name for the Spring mediator has not been specified");
+ }
+
+ // if a named configuration is referenced, use it
+ if (configName != null) {
+ // get named Spring configName
+ Configuration config = synCtx.getConfiguration().getNamedConfiguration(configName);
+
+ if (config != null && config instanceof SpringConfiguration) {
+
+ ApplicationContext appContext = ((SpringConfiguration) config).getAppContext();
+ Object o = appContext.getBean(beanName);
+
+ if (o != null && Mediator.class.isAssignableFrom(o.getClass())) {
+ Mediator m = (Mediator) o;
+ return m.mediate(synCtx);
+
+ } else {
+ handleException("Could not find the bean named : " + beanName +
+ " from the Spring configuration named : " + configName);
+ }
+ } else {
+ handleException("Could not get a reference to the Spring configuration named : " + configName);
+ }
+
+ } else if (appContext != null) {
+
+ Object o = appContext.getBean(beanName);
+
+ if (o != null && Mediator.class.isAssignableFrom(o.getClass())) {
+ Mediator m = (Mediator) o;
+ return m.mediate(synCtx);
+
+ } else {
+ handleException("Could not find the bean named : " + beanName +
+ " from the anonymous Spring configuration");
+ }
+
+ } else {
+ handleException("A named Spring configuration or an ApplicationContext has not been specified");
+ }
+ return true;
+ }
+
+ private void handleException(String msg) {
+ log.error(msg);
+ throw new SynapseException(msg);
+ }
+
+ public void setBeanName(String beanName) {
+ this.beanName = beanName;
+ }
+
+ public String getBeanName() {
+ return beanName;
+ }
+
+ public String getConfigName() {
+ return configName;
+ }
+
+ public void setConfigName(String configName) {
+ this.configName = configName;
+ }
+
+ public ApplicationContext getAppContext() {
+ return appContext;
+ }
+
+ public void setAppContext(ApplicationContext appContext) {
+ this.appContext = appContext;
+ }
+
+ public String getType() {
+ return "SpringMediator";
+ }
}
Added: incubator/synapse/trunk/java/modules/extensions/test/org/apache/synapse/TestMessageContext.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/extensions/test/org/apache/synapse/TestMessageContext.java?rev=407499&view=auto
==============================================================================
--- incubator/synapse/trunk/java/modules/extensions/test/org/apache/synapse/TestMessageContext.java (added)
+++ incubator/synapse/trunk/java/modules/extensions/test/org/apache/synapse/TestMessageContext.java Thu May 18 01:18:34 2006
@@ -0,0 +1,189 @@
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.synapse;
+
+import org.apache.synapse.config.SynapseConfiguration;
+import org.apache.synapse.core.SynapseEnvironment;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.addressing.RelatesTo;
+import org.apache.axis2.AxisFault;
+
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Set;
+
+public class TestMessageContext implements MessageContext {
+
+ private Map properties = new HashMap();
+
+ private SynapseConfiguration synCfg = null;
+
+ SOAPEnvelope envelope = null;
+
+ private EndpointReference to = null;
+
+ public SynapseConfiguration getConfiguration() {
+ return synCfg;
+ }
+
+ public void setConfiguration(SynapseConfiguration cfg) {
+ this.synCfg = cfg;
+ }
+
+ public SynapseEnvironment getEnvironment() {
+ return null;
+ }
+
+ public void setEnvironment(SynapseEnvironment se) {
+ }
+
+ public Object getProperty(String key) {
+ Object ret = properties.get(key);
+ if (ret != null) {
+ return ret;
+ } else if (getConfiguration() != null) {
+ return getConfiguration().getProperty(key);
+ } else {
+ return null;
+ }
+ }
+
+ public void setProperty(String key, Object value) {
+ properties.put(key, value);
+ }
+
+ public Set getPropertyKeySet() {
+ return properties.keySet();
+ }
+
+ //---------
+ public SOAPEnvelope getEnvelope() {
+ if (envelope == null)
+ return OMAbstractFactory.getSOAP11Factory().getDefaultEnvelope();
+ else
+ return envelope;
+ }
+
+ public void setEnvelope(SOAPEnvelope envelope) throws AxisFault {
+ this.envelope = envelope;
+ }
+
+ public EndpointReference getFaultTo() {
+ return null;
+ }
+
+ public void setFaultTo(EndpointReference reference) {
+ }
+
+ public EndpointReference getFrom() {
+ return null;
+ }
+
+ public void setFrom(EndpointReference reference) {
+ }
+
+ public String getMessageID() {
+ return null;
+ }
+
+ public void setMessageID(String string) {
+ }
+
+ public RelatesTo getRelatesTo() {
+ return null;
+ }
+
+ public void setRelatesTo(RelatesTo[] reference) {
+ }
+
+ public EndpointReference getReplyTo() {
+ return null;
+ }
+
+ public void setReplyTo(EndpointReference reference) {
+ }
+
+ public EndpointReference getTo() {
+ return to;
+ }
+
+ public void setTo(EndpointReference reference) {
+ to = reference;
+ }
+
+ public void setWSAAction(String actionURI) {
+ }
+
+ public String getWSAAction() {
+ return null;
+ }
+
+ public String getSoapAction() {
+ return null;
+ }
+
+ public void setSoapAction(String string) {
+ }
+
+ public void setMessageId(String messageID) {
+ }
+
+ public String getMessageId() {
+ return null;
+ }
+
+ public boolean isDoingMTOM() {
+ return false;
+ }
+
+ public void setDoingMTOM(boolean b) {
+ }
+
+ public boolean isDoingREST() {
+ return false;
+ }
+
+ public void setDoingREST(boolean b) {
+ }
+
+ public boolean isSOAP11() {
+ return envelope.getNamespace().getName().equals(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+ }
+
+ public void setResponse(boolean b) {
+ }
+
+ public boolean isResponse() {
+ return false;
+ }
+
+ public void setFaultResponse(boolean b) {
+ }
+
+ public boolean isFaultResponse() {
+ return false;
+ }
+
+ public MessageContext getSynapseContext() {
+ return null;
+ }
+
+ public void setSynapseContext(MessageContext env) {
+ }
+}
Added: incubator/synapse/trunk/java/modules/extensions/test/org/apache/synapse/TestUtils.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/extensions/test/org/apache/synapse/TestUtils.java?rev=407499&view=auto
==============================================================================
--- incubator/synapse/trunk/java/modules/extensions/test/org/apache/synapse/TestUtils.java (added)
+++ incubator/synapse/trunk/java/modules/extensions/test/org/apache/synapse/TestUtils.java Thu May 18 01:18:34 2006
@@ -0,0 +1,48 @@
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.synapse;
+
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMDocument;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLInputFactory;
+import java.io.StringReader;
+
+public class TestUtils {
+
+ public static TestMessageContext getTestContext(String bodyText) throws Exception {
+
+ // create a test synapse context
+ TestMessageContext synCtx = new TestMessageContext();
+
+ SOAPEnvelope envelope = OMAbstractFactory.getSOAP11Factory().getDefaultEnvelope();
+ OMDocument omDoc = OMAbstractFactory.getSOAP11Factory().createOMDocument();
+ omDoc.addChild(envelope);
+
+ XMLStreamReader parser = XMLInputFactory.newInstance().
+ createXMLStreamReader(new StringReader(bodyText));
+ StAXOMBuilder builder = new StAXOMBuilder(parser);
+
+ // set a dummy static message
+ envelope.getBody().addChild(builder.getDocumentElement());
+
+ synCtx.setEnvelope(envelope);
+ return synCtx;
+ }
+}
Added: incubator/synapse/trunk/java/modules/extensions/test/org/apache/synapse/spring/SpringMediatorTest.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/extensions/test/org/apache/synapse/spring/SpringMediatorTest.java?rev=407499&view=auto
==============================================================================
--- incubator/synapse/trunk/java/modules/extensions/test/org/apache/synapse/spring/SpringMediatorTest.java (added)
+++ incubator/synapse/trunk/java/modules/extensions/test/org/apache/synapse/spring/SpringMediatorTest.java Thu May 18 01:18:34 2006
@@ -0,0 +1,48 @@
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.synapse.spring;
+
+import junit.framework.TestCase;
+import org.apache.synapse.MessageContext;
+import org.apache.synapse.config.xml.SynapseConfigurationBuilder;
+import org.apache.synapse.TestUtils;
+
+import java.io.FileInputStream;
+
+/**
+ * This unit test is a different 'type' of a unit test, such that it tests end-to-end
+ * like scenario of using Spring extensions! First it tests that the configuration
+ * builder properly looks up specified named and anonymous spring configurations
+ * and mediates properly to Spring mediator beans. The public static invokeCounter field
+ * though ugly, serves the purpose to test that the Spring beans were properly created
+ * and invoked
+ */
+public class SpringMediatorTest extends TestCase {
+
+ public void testSpringBean() throws Exception {
+
+ SynapseConfigurationBuilder synCfgBuilder = new SynapseConfigurationBuilder();
+ synCfgBuilder.setConfiguration(
+ new FileInputStream("./../../repository/conf/sample/synapse_sample_3.xml"));
+
+ MessageContext msgCtx = TestUtils.getTestContext("<dummy/>");
+ msgCtx.setConfiguration(synCfgBuilder.getConfig());
+ msgCtx.getConfiguration().getMainMediator().mediate(msgCtx);
+
+ assertEquals(TestMediateHandlerImpl.invokeCount, 2);
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org