A few more changes and unit tests.. before code is checked into main..
asankha
Index: etc/project.properties
===================================================================
--- etc/project.properties (revision 399600)
+++ etc/project.properties (working copy)
@@ -18,9 +18,12 @@
# -------------------------------------------------------------------
# JUnit
# -------------------------------------------------------------------
-maven.junit.jvmargs=-Djava.awt.headless=true
+# explicit setting of Sax parser as below is a hack to avoid Junit from
loading its own parsers ignoring maven.test.excludeXmlApis
+maven.junit.jvmargs=-Djava.awt.headless=true
-Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl
maven.junit.fork=true
+#maven.junit.dir=${basedir}/modules/core
+
# -------------------------------------------------------------------
# Compile
# -------------------------------------------------------------------
Index: modules/core/src/org/apache/synapse/config/xml/ClassMediatorFactory.java
===================================================================
--- modules/core/src/org/apache/synapse/config/xml/ClassMediatorFactory.java
(revision 400001)
+++ modules/core/src/org/apache/synapse/config/xml/ClassMediatorFactory.java
(working copy)
@@ -23,35 +23,51 @@
import org.apache.synapse.mediators.ext.ClassMediator;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMAttribute;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import java.util.Iterator;
+
/**
+ * Creates an instance of a Class mediator using XML configuration specified
*
- * <xmp><synapse:classmediator name="nm"
class="org.fremantle.mediator"</synapse:classmediator></xmp>
- * TODO add ability to configure properties with Strings/OMElements based on
children.
+ * <class name="class-name">
+ * <property name="string" (value="literal" | expression="xpath")/>*
+ * </class>
*/
public class ClassMediatorFactory extends AbstractMediatorFactory {
- private static final QName CLM_Q = new QName(Constants.SYNAPSE_NAMESPACE,
- "classmediator");
- public Mediator createMediator(OMElement el) {
- ClassMediator cmp = new ClassMediator();
- OMAttribute clsName = el.getAttribute(new QName("class"));
- if (clsName == null)
- throw new SynapseException("missing class attribute on element"
- + el.toString());
+
+ private static final Log log = LogFactory.getLog(LogMediatorFactory.class);
+
+ private static final QName CLASS_Q = new
QName(Constants.SYNAPSE_NAMESPACE, "class");
+
+ public Mediator createMediator(OMElement elem) {
+
+ ClassMediator classMediator = new ClassMediator();
+
+ OMAttribute name = elem.getAttribute(new
QName(Constants.NULL_NAMESPACE, "name"));
+ if (name == null) {
+ String msg = "The name of the actual mediator class is a required
attribute";
+ log.error(msg);
+ throw new SynapseException(msg);
+ }
+
try {
- //TODO replace this hack to get the classloader from the synapse
env - temp fix
- Class clazz =
getClass().getClassLoader().loadClass(clsName.getAttributeValue());
- cmp.setClazz(clazz);
+ Class clazz =
getClass().getClassLoader().loadClass(name.getAttributeValue());
+ classMediator.setClazz(clazz);
} catch (ClassNotFoundException e) {
- throw new SynapseException("class loading error", e);
+ String msg = "Cannot find class : " + name.getAttributeValue();
+ log.error(msg, e);
+ throw new SynapseException(msg, e);
}
- return cmp;
+
classMediator.addAllProperties(MediatorPropertyFactory.getMediatorProperties(elem));
+
+ return classMediator;
}
public QName getTagQName() {
- return CLM_Q;
+ return CLASS_Q;
}
-
}
Index: modules/core/src/org/apache/synapse/config/xml/LogMediatorFactory.java
===================================================================
--- modules/core/src/org/apache/synapse/config/xml/LogMediatorFactory.java
(revision 400001)
+++ modules/core/src/org/apache/synapse/config/xml/LogMediatorFactory.java
(working copy)
@@ -30,6 +30,7 @@
import org.jaxen.JaxenException;
import java.util.Iterator;
+import java.util.List;
/**
* Created a Log mediator that logs messages using commons-logging.
@@ -76,62 +77,8 @@
logMediator.setSeperator(seperator.getAttributeValue());
}
- // parse custom properties and set them into the mediator
- Iterator iter = elem.getChildrenWithName(new
QName(Constants.NULL_NAMESPACE, "property"));
- while (iter.hasNext()) {
+
logMediator.addAllProperties(MediatorPropertyFactory.getMediatorProperties(elem));
- OMElement propEle = (OMElement) iter.next();
- OMAttribute attName =
propEle.getAttribute(MediatorProperty.ATT_NAME_Q);
- OMAttribute attValue =
propEle.getAttribute(MediatorProperty.ATT_VALUE_Q);
- OMAttribute attExpr =
propEle.getAttribute(MediatorProperty.ATT_EXPR_Q);
-
- MediatorProperty prop = new MediatorProperty();
-
- if (attName == null || attName.getAttributeValue() == null ||
attName.getAttributeValue().trim().length() == 0) {
- String msg = "Property name is a required attribute for a Log
property";
- log.error(msg);
- throw new SynapseException(msg);
- } else {
- prop.setName(attName.getAttributeValue());
- }
-
- // if a value is specified, use it, else look for an expression
- if (attValue != null) {
- if (attValue.getAttributeValue() == null ||
attValue.getAttributeValue().trim().length() == 0) {
- String msg = "Property attribute value (if specified) is
required for a Log property";
- log.error(msg);
- throw new SynapseException(msg);
- } else {
- prop.setValue(attValue.getAttributeValue());
- }
-
- } else if (attExpr != null) {
-
- if (attExpr.getAttributeValue() == null ||
attExpr.getAttributeValue().trim().length() == 0) {
- String msg = "Property attribute expression (if specified)
is required for a Log property";
- log.error(msg);
- throw new SynapseException(msg);
-
- } else {
- try {
- prop.setExpression(new
AXIOMXPath(attExpr.getAttributeValue()));
-
- } catch (JaxenException e) {
- String msg = "Invalid XPapth expression : " +
attExpr.getAttributeValue();
- log.error(msg);
- throw new SynapseException(msg, e);
- }
- }
-
- } else {
- String msg = "Property attribute value OR expression must be
specified for a Log property";
- log.error(msg);
- throw new SynapseException(msg);
- }
-
- logMediator.addProperty(prop);
- }
-
return logMediator;
}
Index:
modules/core/src/org/apache/synapse/config/xml/MediatorPropertyFactory.java
===================================================================
--- modules/core/src/org/apache/synapse/config/xml/MediatorPropertyFactory.java
(revision 0)
+++ modules/core/src/org/apache/synapse/config/xml/MediatorPropertyFactory.java
(revision 0)
@@ -0,0 +1,106 @@
+/*
+* 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.OMElement;
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.xpath.AXIOMXPath;
+import org.apache.synapse.mediators.MediatorProperty;
+import org.apache.synapse.SynapseException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jaxen.JaxenException;
+
+import javax.xml.namespace.QName;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+/**
+ * A utility class capable of creating instances of MediatorProperty objects
by reading
+ * through a given XML configuration
+ *
+ * <element>
+ * <property name="string" (value="literal" | expression="xpath")/>*
+ * </element>
+ */
+public class MediatorPropertyFactory {
+
+ private static final Log log =
LogFactory.getLog(MediatorPropertyFactory.class);
+
+ public static List getMediatorProperties(OMElement elem) {
+
+ List propertyList = new ArrayList();
+
+ Iterator iter = elem.getChildrenWithName(new
QName(Constants.NULL_NAMESPACE, "property"));
+ while (iter.hasNext()) {
+
+ OMElement propEle = (OMElement) iter.next();
+ OMAttribute attName =
propEle.getAttribute(MediatorProperty.ATT_NAME_Q);
+ OMAttribute attValue =
propEle.getAttribute(MediatorProperty.ATT_VALUE_Q);
+ OMAttribute attExpr =
propEle.getAttribute(MediatorProperty.ATT_EXPR_Q);
+
+ MediatorProperty prop = new MediatorProperty();
+
+ if (attName == null || attName.getAttributeValue() == null ||
+ attName.getAttributeValue().trim().length() == 0) {
+ String msg = "Property name is a required attribute for a Log
property";
+ log.error(msg);
+ throw new SynapseException(msg);
+ } else {
+ prop.setName(attName.getAttributeValue());
+ }
+
+ // if a value is specified, use it, else look for an expression
+ if (attValue != null) {
+ if (attValue.getAttributeValue() == null ||
attValue.getAttributeValue().trim().length() == 0) {
+ String msg = "Property attribute value (if specified) is
required for a Log property";
+ log.error(msg);
+ throw new SynapseException(msg);
+ } else {
+ prop.setValue(attValue.getAttributeValue());
+ }
+
+ } else if (attExpr != null) {
+
+ if (attExpr.getAttributeValue() == null ||
attExpr.getAttributeValue().trim().length() == 0) {
+ String msg = "Property attribute expression (if specified)
is required for a mediator property";
+ log.error(msg);
+ throw new SynapseException(msg);
+
+ } else {
+ try {
+ prop.setExpression(new
AXIOMXPath(attExpr.getAttributeValue()));
+
+ } catch (JaxenException e) {
+ String msg = "Invalid XPapth expression : " +
attExpr.getAttributeValue();
+ log.error(msg);
+ throw new SynapseException(msg, e);
+ }
+ }
+
+ } else {
+ String msg = "Property attribute value OR expression must be
specified for a mediator property";
+ log.error(msg);
+ throw new SynapseException(msg);
+ }
+
+ propertyList.add(prop);
+ }
+
+ return propertyList;
+ }
+}
Index: modules/core/src/org/apache/synapse/mediators/builtin/LogMediator.java
===================================================================
--- modules/core/src/org/apache/synapse/mediators/builtin/LogMediator.java
(revision 404940)
+++ modules/core/src/org/apache/synapse/mediators/builtin/LogMediator.java
(working copy)
@@ -153,4 +153,8 @@
properties.add(p);
}
+ public void addAllProperties(List list) {
+ properties.addAll(list);
+ }
+
}
Index:
modules/core/src/org/apache/synapse/mediators/builtin/ValidateMediator.java
===================================================================
--- modules/core/src/org/apache/synapse/mediators/builtin/ValidateMediator.java
(revision 404940)
+++ modules/core/src/org/apache/synapse/mediators/builtin/ValidateMediator.java
(working copy)
@@ -88,7 +88,7 @@
}
try {
- Object o = source.evaluate(synMsg.getEnvelope());;
+ Object o = source.evaluate(synMsg.getEnvelope());
if (o instanceof OMNode) {
return (OMNode) o;
} else if (o instanceof List && !((List) o).isEmpty()) {
Index: modules/core/src/org/apache/synapse/mediators/ext/ClassMediator.java
===================================================================
--- modules/core/src/org/apache/synapse/mediators/ext/ClassMediator.java
(revision 404940)
+++ modules/core/src/org/apache/synapse/mediators/ext/ClassMediator.java
(working copy)
@@ -13,47 +13,86 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.synapse.mediators.ext;
-
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.SynapseContext;
import org.apache.synapse.SynapseException;
-import org.apache.synapse.SynapseContext;
+import org.apache.synapse.Util;
import org.apache.synapse.api.Mediator;
import org.apache.synapse.mediators.AbstractMediator;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import org.apache.synapse.mediators.MediatorProperty;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.lang.reflect.Method;
/**
- * This executes the "mediate" operation on a new instance of the specified
class
- * <p/>
- * TODO add support for simple properties to be set
- * TODO Requires refactoring and cleanup - revisit later
+ * The class mediator delegates the mediation to a new instance of a specified
class. The specified class
+ * must implement the Mediator interface
+ *
+ * @see Mediator
*/
public class ClassMediator extends AbstractMediator {
+ private static final Log log = LogFactory.getLog(ClassMediator.class);
+
private Class clazz = null;
+ private List properties = new ArrayList();
- private static final Log log = LogFactory.getLog(ClassMediator.class);
+ /**
+ * Delegate mediation to a new instance of the specified class
+ * @param synCtx the message context
+ * @return as per standard semantics
+ */
+ public boolean mediate(SynapseContext synCtx) {
- public boolean mediate(SynapseContext smc) {
log.debug(getType() + " mediate()");
Mediator m = null;
+ try {
+ m = (Mediator) clazz.newInstance();
- try {
- m = (Mediator) getClazz().newInstance();
} catch (Exception e) {
- throw new SynapseException(e);
+ String msg = "Error while creating an instance of the specified
mediator class : " + clazz.getName();
+ log.error(msg, e);
+ throw new SynapseException(msg, e);
}
- /*if (EnvironmentAware.class.isAssignableFrom(m.getClass())) {
- ((EnvironmentAware) m).initializeSynapse(se);
- }*/
- return m.mediate(smc);
+ setProperties(m, synCtx);
+
+ return m.mediate(synCtx);
}
+ /**
+ * Only String properties are supported
+ * @param m the mediator
+ */
+ private void setProperties(Mediator m, SynapseContext 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);
+ String value = (mProp.getValue() != null ?
+ mProp.getValue() :
+ Util.getStringValue(mProp.getExpression(), synCtx));
+
+
+ try {
+ Method method = m.getClass().getMethod(mName, new Class[]
{String.class});
+ method.invoke(m, new Object[] { value });
+
+ } catch (Exception e) {
+ String msg = "Error setting property : " + mProp.getName() + "
as a String property into class" +
+ " mediator : " + m.getClass() + " : " + e.getMessage();
+ log.error(msg);
+ throw new SynapseException(msg, e);
+ }
+ }
+ }
+
public void setClazz(Class clazz) {
this.clazz = clazz;
}
@@ -62,4 +101,12 @@
return clazz;
}
+ public void addProperty(MediatorProperty p) {
+ properties.add(p);
+ }
+
+ public void addAllProperties(List list) {
+ properties.addAll(list);
+ }
+
}
Index: modules/core/test-resources/misc/validate.xsd
===================================================================
--- modules/core/test-resources/misc/validate.xsd (revision 0)
+++ modules/core/test-resources/misc/validate.xsd (revision 0)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.apache-synapse.org/test" elementFormDefault="qualified"
attributeFormDefault="unqualified"
targetNamespace="http://www.apache-synapse.org/test">
+ <xs:element name="CheckPriceRequest">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Code" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
\ No newline at end of file
Index: modules/core/test-resources/misc/validate.xsd
===================================================================
--- modules/core/test-resources/misc/validate.xsd (revision 0)
+++ modules/core/test-resources/misc/validate.xsd (revision 0)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.apache-synapse.org/test" elementFormDefault="qualified"
attributeFormDefault="unqualified"
targetNamespace="http://www.apache-synapse.org/test">
+ <xs:element name="CheckPriceRequest">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Code" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
\ No newline at end of file
Index: modules/core/test/org/apache/synapse/mediators/TestMediator.java
===================================================================
--- modules/core/test/org/apache/synapse/mediators/TestMediator.java
(revision 0)
+++ modules/core/test/org/apache/synapse/mediators/TestMediator.java
(revision 0)
@@ -0,0 +1,49 @@
+/*
+* 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;
+
+import org.apache.synapse.api.Mediator;
+import org.apache.synapse.SynapseContext;
+
+/**
+ * Test mediator class.
+ */
+public class TestMediator implements Mediator {
+
+ private TestMediateHandler handlerTest = null;
+
+ public TestMediator() {
+ }
+
+ public boolean mediate(SynapseContext synCtx) {
+ if (handlerTest != null) {
+ handlerTest.handle(synCtx);
+ }
+ return true;
+ }
+
+ public String getType() {
+ return null;
+ }
+
+ public TestMediateHandler getHandler() {
+ return handlerTest;
+ }
+
+ public void setHandler(TestMediateHandler handlerTest) {
+ this.handlerTest = handlerTest;
+ }
+}
\ No newline at end of file
Index: modules/core/test/org/apache/synapse/mediators/TestMediateHandler.java
===================================================================
--- modules/core/test/org/apache/synapse/mediators/TestMediateHandler.java
(revision 0)
+++ modules/core/test/org/apache/synapse/mediators/TestMediateHandler.java
(revision 0)
@@ -0,0 +1,23 @@
+/*
+* 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;
+
+import org.apache.synapse.SynapseContext;
+
+public interface TestMediateHandler {
+
+ public void handle(SynapseContext synCtx);
+}
Index:
modules/core/test/org/apache/synapse/mediators/builtin/ValidateMediatorTest.java
===================================================================
---
modules/core/test/org/apache/synapse/mediators/builtin/ValidateMediatorTest.java
(revision 0)
+++
modules/core/test/org/apache/synapse/mediators/builtin/ValidateMediatorTest.java
(revision 0)
@@ -0,0 +1,127 @@
+/*
+* 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.builtin;
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.*;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.xpath.AXIOMXPath;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.synapse.SynapseContext;
+import org.apache.synapse.TestSynapseMessage;
+import org.apache.synapse.TestSynapseMessageContext;
+import org.apache.synapse.mediators.TestMediateHandler;
+import org.apache.synapse.mediators.TestMediator;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+import java.io.StringReader;
+import java.io.File;
+
+public class ValidateMediatorTest extends TestCase implements
TestMediateHandler {
+
+ private static final String VALID_ENVELOPE =
+ "<m0:CheckPriceRequest
xmlns:m0=\"http://www.apache-synapse.org/test\">\n" +
+ "\t<m0:Code>String</m0:Code>\n" +
+ "</m0:CheckPriceRequest>\n";
+
+ private static final String IN_VALID_ENVELOPE =
+ "<m0:CheckPriceRequest
xmlns:m0=\"http://www.apache-synapse.org/test\">\n" +
+ "\t<m0:Codes>String</m0:Codes>\n" +
+ "</m0:CheckPriceRequest>\n";
+
+ private boolean onFailInvoked = false;
+ private TestMediator testMediator = null;
+
+ public void setUp() {
+ testMediator = new TestMediator();
+ testMediator.setHandler(this);
+ }
+
+ public void handle(SynapseContext synCtx) {
+ onFailInvoked = true;
+ }
+
+ public void setOnFailInvoked(boolean onFailInvoked) {
+ this.onFailInvoked = onFailInvoked;
+ }
+
+ public void testValidateMedaitorValidCase() throws Exception {
+ setOnFailInvoked(false);
+
+ // create a validate mediator
+ ValidateMediator validate = new ValidateMediator();
+
+ // set the schema url, source xpath and any name spaces
+ System.out.println("Current Dir : " + new File(".").getAbsolutePath());
+ validate.setSchemaUrl("test-resources/misc/validate.xsd");
+ AXIOMXPath source = new AXIOMXPath("//m0:CheckPriceRequest");
+ source.addNamespace("m0", "http://www.apache-synapse.org/test");
+ validate.setSource(source);
+
+ // set dummy mediator to be called on fail
+ validate.addChild(testMediator);
+
+ // test validate mediator, with static enveope
+ validate.mediate(getTestContext(VALID_ENVELOPE));
+
+ assertTrue(!onFailInvoked);
+ }
+
+ public void testValidateMedaitorInvalidCase() throws Exception {
+ setOnFailInvoked(false);
+
+ // create a validate mediator
+ ValidateMediator validate = new ValidateMediator();
+
+ // set the schema url, source xpath and any name spaces
+ validate.setSchemaUrl("modules/core/test-resources/misc/validate.xsd");
+ AXIOMXPath source = new AXIOMXPath("//m0:CheckPriceRequest");
+ source.addNamespace("m0", "http://www.apache-synapse.org/test");
+ validate.setSource(source);
+
+ // set dummy mediator to be called on fail
+ validate.addChild(testMediator);
+
+ // test validate mediator, with static enveope
+ validate.mediate(getTestContext(IN_VALID_ENVELOPE));
+
+ assertTrue(onFailInvoked);
+ }
+
+ private TestSynapseMessageContext getTestContext(String bodyText) throws
Exception {
+
+ // create a test synapse context
+ TestSynapseMessageContext synCtx = new TestSynapseMessageContext();
+ TestSynapseMessage synMsg = new TestSynapseMessage();
+
+ 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());
+
+ synMsg.setEnvelope(envelope);
+ synCtx.setSynapseMessage(synMsg);
+ return synCtx;
+ }
+
+}
Index:
modules/core/test/org/apache/synapse/mediators/builtin/ValidateMediatorTest.java
===================================================================
---
modules/core/test/org/apache/synapse/mediators/builtin/ValidateMediatorTest.java
(revision 0)
+++
modules/core/test/org/apache/synapse/mediators/builtin/ValidateMediatorTest.java
(revision 0)
@@ -0,0 +1,127 @@
+/*
+* 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.builtin;
+
+import junit.framework.TestCase;
+import org.apache.axiom.om.*;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.xpath.AXIOMXPath;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.synapse.SynapseContext;
+import org.apache.synapse.TestSynapseMessage;
+import org.apache.synapse.TestSynapseMessageContext;
+import org.apache.synapse.mediators.TestMediateHandler;
+import org.apache.synapse.mediators.TestMediator;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+import java.io.StringReader;
+import java.io.File;
+
+public class ValidateMediatorTest extends TestCase implements
TestMediateHandler {
+
+ private static final String VALID_ENVELOPE =
+ "<m0:CheckPriceRequest
xmlns:m0=\"http://www.apache-synapse.org/test\">\n" +
+ "\t<m0:Code>String</m0:Code>\n" +
+ "</m0:CheckPriceRequest>\n";
+
+ private static final String IN_VALID_ENVELOPE =
+ "<m0:CheckPriceRequest
xmlns:m0=\"http://www.apache-synapse.org/test\">\n" +
+ "\t<m0:Codes>String</m0:Codes>\n" +
+ "</m0:CheckPriceRequest>\n";
+
+ private boolean onFailInvoked = false;
+ private TestMediator testMediator = null;
+
+ public void setUp() {
+ testMediator = new TestMediator();
+ testMediator.setHandler(this);
+ }
+
+ public void handle(SynapseContext synCtx) {
+ onFailInvoked = true;
+ }
+
+ public void setOnFailInvoked(boolean onFailInvoked) {
+ this.onFailInvoked = onFailInvoked;
+ }
+
+ public void testValidateMedaitorValidCase() throws Exception {
+ setOnFailInvoked(false);
+
+ // create a validate mediator
+ ValidateMediator validate = new ValidateMediator();
+
+ // set the schema url, source xpath and any name spaces
+ System.out.println("Current Dir : " + new File(".").getAbsolutePath());
+ validate.setSchemaUrl("test-resources/misc/validate.xsd");
+ AXIOMXPath source = new AXIOMXPath("//m0:CheckPriceRequest");
+ source.addNamespace("m0", "http://www.apache-synapse.org/test");
+ validate.setSource(source);
+
+ // set dummy mediator to be called on fail
+ validate.addChild(testMediator);
+
+ // test validate mediator, with static enveope
+ validate.mediate(getTestContext(VALID_ENVELOPE));
+
+ assertTrue(!onFailInvoked);
+ }
+
+ public void testValidateMedaitorInvalidCase() throws Exception {
+ setOnFailInvoked(false);
+
+ // create a validate mediator
+ ValidateMediator validate = new ValidateMediator();
+
+ // set the schema url, source xpath and any name spaces
+ validate.setSchemaUrl("modules/core/test-resources/misc/validate.xsd");
+ AXIOMXPath source = new AXIOMXPath("//m0:CheckPriceRequest");
+ source.addNamespace("m0", "http://www.apache-synapse.org/test");
+ validate.setSource(source);
+
+ // set dummy mediator to be called on fail
+ validate.addChild(testMediator);
+
+ // test validate mediator, with static enveope
+ validate.mediate(getTestContext(IN_VALID_ENVELOPE));
+
+ assertTrue(onFailInvoked);
+ }
+
+ private TestSynapseMessageContext getTestContext(String bodyText) throws
Exception {
+
+ // create a test synapse context
+ TestSynapseMessageContext synCtx = new TestSynapseMessageContext();
+ TestSynapseMessage synMsg = new TestSynapseMessage();
+
+ 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());
+
+ synMsg.setEnvelope(envelope);
+ synCtx.setSynapseMessage(synMsg);
+ return synCtx;
+ }
+
+}
Index:
modules/core/test/org/apache/synapse/mediators/ext/ClassMediatorTestMediator.java
===================================================================
---
modules/core/test/org/apache/synapse/mediators/ext/ClassMediatorTestMediator.java
(revision 0)
+++
modules/core/test/org/apache/synapse/mediators/ext/ClassMediatorTestMediator.java
(revision 0)
@@ -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.mediators.ext;
+
+import org.apache.synapse.api.Mediator;
+import org.apache.synapse.SynapseContext;
+
+/**
+ * Since the class mediator always "instantiates" a new instance of a class
+ * use a static member variable just to test this.. This class is not nice..
:-)
+ * but does what is expected... :-(
+ */
+public class ClassMediatorTestMediator implements Mediator {
+
+ public static boolean invoked = false;
+
+ public static String testProp = null;
+
+ public boolean mediate(SynapseContext synCtx) {
+ invoked = true;
+ return false;
+ }
+
+ public String getType() {
+ return null;
+ }
+
+ public void setTestProp(String s) {
+ testProp = s;
+ }
+
+ public String getTestProp() {
+ return testProp;
+ }
+}
Index: modules/core/test/org/apache/synapse/mediators/ext/ClassMediatorTest.java
===================================================================
--- modules/core/test/org/apache/synapse/mediators/ext/ClassMediatorTest.java
(revision 0)
+++ modules/core/test/org/apache/synapse/mediators/ext/ClassMediatorTest.java
(revision 0)
@@ -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.mediators.ext;
+
+import junit.framework.TestCase;
+import org.apache.synapse.TestSynapseMessageContext;
+import org.apache.synapse.mediators.MediatorProperty;
+import org.apache.axiom.om.xpath.AXIOMXPath;
+
+/**
+ * Tests the class mediator instantiation and setting of literal and
+ * XPath parameters at runtime.
+ */
+public class ClassMediatorTest extends TestCase {
+
+ public void testCreationWithoutProperties() throws Exception {
+ ClassMediator cm = new ClassMediator();
+ cm.setClazz(ClassMediatorTestMediator.class);
+ cm.mediate(new TestSynapseMessageContext());
+ assertTrue(ClassMediatorTestMediator.invoked);
+ }
+
+ public void testCreationWithLiteralProperties() throws Exception {
+ ClassMediator cm = new ClassMediator();
+ MediatorProperty mp = new MediatorProperty();
+ mp.setName("testProp");
+ mp.setValue("testValue");
+ cm.addProperty(mp);
+ cm.setClazz(ClassMediatorTestMediator.class);
+ cm.mediate(new TestSynapseMessageContext());
+ assertTrue(ClassMediatorTestMediator.testProp.equals("testValue"));
+ }
+
+ public void testCreationWithXPathProperties() throws Exception {
+ ClassMediator cm = new ClassMediator();
+ MediatorProperty mp = new MediatorProperty();
+ mp.setName("testProp");
+ mp.setExpression(new AXIOMXPath("concat('XPath ','is ','FUN!')"));
+ cm.addProperty(mp);
+ cm.setClazz(ClassMediatorTestMediator.class);
+ cm.mediate(new TestSynapseMessageContext());
+ assertTrue(ClassMediatorTestMediator.testProp.equals("XPath is FUN!"));
+ }
+
+}
Index: modules/core/test/org/apache/synapse/mediators/ext/ClassMediatorTest.java
===================================================================
--- modules/core/test/org/apache/synapse/mediators/ext/ClassMediatorTest.java
(revision 0)
+++ modules/core/test/org/apache/synapse/mediators/ext/ClassMediatorTest.java
(revision 0)
@@ -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.mediators.ext;
+
+import junit.framework.TestCase;
+import org.apache.synapse.TestSynapseMessageContext;
+import org.apache.synapse.mediators.MediatorProperty;
+import org.apache.axiom.om.xpath.AXIOMXPath;
+
+/**
+ * Tests the class mediator instantiation and setting of literal and
+ * XPath parameters at runtime.
+ */
+public class ClassMediatorTest extends TestCase {
+
+ public void testCreationWithoutProperties() throws Exception {
+ ClassMediator cm = new ClassMediator();
+ cm.setClazz(ClassMediatorTestMediator.class);
+ cm.mediate(new TestSynapseMessageContext());
+ assertTrue(ClassMediatorTestMediator.invoked);
+ }
+
+ public void testCreationWithLiteralProperties() throws Exception {
+ ClassMediator cm = new ClassMediator();
+ MediatorProperty mp = new MediatorProperty();
+ mp.setName("testProp");
+ mp.setValue("testValue");
+ cm.addProperty(mp);
+ cm.setClazz(ClassMediatorTestMediator.class);
+ cm.mediate(new TestSynapseMessageContext());
+ assertTrue(ClassMediatorTestMediator.testProp.equals("testValue"));
+ }
+
+ public void testCreationWithXPathProperties() throws Exception {
+ ClassMediator cm = new ClassMediator();
+ MediatorProperty mp = new MediatorProperty();
+ mp.setName("testProp");
+ mp.setExpression(new AXIOMXPath("concat('XPath ','is ','FUN!')"));
+ cm.addProperty(mp);
+ cm.setClazz(ClassMediatorTestMediator.class);
+ cm.mediate(new TestSynapseMessageContext());
+ assertTrue(ClassMediatorTestMediator.testProp.equals("XPath is FUN!"));
+ }
+
+}
Index:
modules/core/test/org/apache/synapse/mediators/ext/ClassMediatorTestMediator.java
===================================================================
---
modules/core/test/org/apache/synapse/mediators/ext/ClassMediatorTestMediator.java
(revision 0)
+++
modules/core/test/org/apache/synapse/mediators/ext/ClassMediatorTestMediator.java
(revision 0)
@@ -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.mediators.ext;
+
+import org.apache.synapse.api.Mediator;
+import org.apache.synapse.SynapseContext;
+
+/**
+ * Since the class mediator always "instantiates" a new instance of a class
+ * use a static member variable just to test this.. This class is not nice..
:-)
+ * but does what is expected... :-(
+ */
+public class ClassMediatorTestMediator implements Mediator {
+
+ public static boolean invoked = false;
+
+ public static String testProp = null;
+
+ public boolean mediate(SynapseContext synCtx) {
+ invoked = true;
+ return false;
+ }
+
+ public String getType() {
+ return null;
+ }
+
+ public void setTestProp(String s) {
+ testProp = s;
+ }
+
+ public String getTestProp() {
+ return testProp;
+ }
+}
Index: modules/core/test/org/apache/synapse/mediators/TestMediateHandler.java
===================================================================
--- modules/core/test/org/apache/synapse/mediators/TestMediateHandler.java
(revision 0)
+++ modules/core/test/org/apache/synapse/mediators/TestMediateHandler.java
(revision 0)
@@ -0,0 +1,23 @@
+/*
+* 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;
+
+import org.apache.synapse.SynapseContext;
+
+public interface TestMediateHandler {
+
+ public void handle(SynapseContext synCtx);
+}
Index: modules/core/test/org/apache/synapse/mediators/TestMediator.java
===================================================================
--- modules/core/test/org/apache/synapse/mediators/TestMediator.java
(revision 0)
+++ modules/core/test/org/apache/synapse/mediators/TestMediator.java
(revision 0)
@@ -0,0 +1,49 @@
+/*
+* 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;
+
+import org.apache.synapse.api.Mediator;
+import org.apache.synapse.SynapseContext;
+
+/**
+ * Test mediator class.
+ */
+public class TestMediator implements Mediator {
+
+ private TestMediateHandler handlerTest = null;
+
+ public TestMediator() {
+ }
+
+ public boolean mediate(SynapseContext synCtx) {
+ if (handlerTest != null) {
+ handlerTest.handle(synCtx);
+ }
+ return true;
+ }
+
+ public String getType() {
+ return null;
+ }
+
+ public TestMediateHandler getHandler() {
+ return handlerTest;
+ }
+
+ public void setHandler(TestMediateHandler handlerTest) {
+ this.handlerTest = handlerTest;
+ }
+}
\ No newline at end of file
Index: modules/core/test/org/apache/synapse/TestSynapseMessage.java
===================================================================
--- modules/core/test/org/apache/synapse/TestSynapseMessage.java
(revision 0)
+++ modules/core/test/org/apache/synapse/TestSynapseMessage.java
(revision 0)
@@ -0,0 +1,141 @@
+/*
+* 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.soap.SOAPFactory;
+import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.addressing.RelatesTo;
+
+public class TestSynapseMessage implements SynapseMessage {
+
+ SOAPEnvelope envelope = null;
+
+ 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 null;
+ }
+
+ public void setTo(EndpointReference 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 false;
+ }
+
+ public void setResponse(boolean b) {
+ }
+
+ public boolean isResponse() {
+ return false;
+ }
+
+ public void setFaultResponse(boolean b) {
+ }
+
+ public boolean isFaultResponse() {
+ return false;
+ }
+
+ public SynapseContext getSynapseContext() {
+ return null;
+ }
+
+ public void setSynapseContext(SynapseContext env) {
+ }
+}
Index: modules/core/test/org/apache/synapse/TestSynapseMessageContext.java
===================================================================
--- modules/core/test/org/apache/synapse/TestSynapseMessageContext.java
(revision 0)
+++ modules/core/test/org/apache/synapse/TestSynapseMessageContext.java
(revision 0)
@@ -0,0 +1,56 @@
+/*
+* 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;
+
+public class TestSynapseMessageContext implements SynapseContext {
+
+ private SynapseMessage synMsg = null;
+
+ public SynapseConfiguration getConfiguration() {
+ return null;
+ }
+
+ public void setConfiguration(SynapseConfiguration cfg) {
+ }
+
+ public SynapseEnvironment getSynapseEnvironment() {
+ return null;
+ }
+
+ public void setSynapseEnvironment(SynapseEnvironment se) {
+ }
+
+ public void setSynapseMessage(SynapseMessage sm) {
+ synMsg = sm;
+ }
+
+ public SynapseMessage getSynapseMessage() {
+ if (synMsg == null)
+ return new TestSynapseMessage();
+ else
+ return synMsg;
+ }
+
+ public Object getProperty(String key) {
+ return null;
+ }
+
+ public void setProperty(String key, Object value) {
+ }
+}
Index: modules/samples/src/sampleMediators/InjectRedirect.java
===================================================================
--- modules/samples/src/sampleMediators/InjectRedirect.java (revision
399600)
+++ modules/samples/src/sampleMediators/InjectRedirect.java (working copy)
@@ -16,22 +16,21 @@
package sampleMediators;
import org.apache.axis2.addressing.EndpointReference;
-import org.apache.synapse.SynapseMessage;
+import org.apache.synapse.SynapseContext;
import org.apache.synapse.mediators.AbstractMediator;
-import org.apache.synapse.api.Mediator;
public class InjectRedirect extends AbstractMediator {
- private String uri = null;
+ private String uri = null;
- public void setUri(String uri) {
- this.uri = uri;
- }
+ public void setUri(String uri) {
+ this.uri = uri;
+ }
- public boolean mediate(SynapseMessage mc) {
+ public boolean mediate(SynapseContext mc) {
- System.out.println("Redirect.mediate: " + uri);
+ System.out.println("Redirect.mediate: " + uri);
- mc.setTo(new EndpointReference(uri));
- return true;
- }
+ mc.getSynapseMessage().setTo(new EndpointReference(uri));
+ return true;
+ }
}
\ No newline at end of file
Index: modules/samples/src/sampleMediators/Logger.java
===================================================================
--- modules/samples/src/sampleMediators/Logger.java (revision 399600)
+++ modules/samples/src/sampleMediators/Logger.java (working copy)
@@ -15,9 +15,9 @@
*/
package sampleMediators;
+import org.apache.synapse.SynapseContext;
import org.apache.synapse.SynapseMessage;
import org.apache.synapse.mediators.AbstractMediator;
-import org.apache.synapse.api.Mediator;
import org.apache.axiom.soap.SOAPEnvelope;
/**
@@ -33,7 +33,8 @@
*
* @see
org.apache.synapse.mediator.Mediator#mediate(org.apache.axis2.context.MessageContext)
*/
- public boolean mediate(SynapseMessage mc) {
+ public boolean mediate(SynapseContext mctx) {
+ SynapseMessage mc = mctx.getSynapseMessage();
System.out.println("Logger.mediate:");
if (mc.getTo() != null && mc.getTo().getAddress() != null)
System.out.println("Logger.mediate to:" + mc.getTo().getAddress());
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]