Now you could perform a dist-bin (skipping the unit tests - they do not
compile yet) and build Synapse and run it with the sample configuration
in the new format .. (i.e. the StockQuoteClient)
asankha
e.g.
<synapse xmlns="http://ws.apache.org/ns/synapse">
<definitions>
<sequence name="registration_flow">
<filter xpath="//[EMAIL PROTECTED]'GOLD']">
<log level="full">
<property name="category" value="GOLD"/>
</log>
<drop/>
</filter>
<sequence ref="fault_flow"/>
</sequence>
<sequence name="fault_flow">
<log level="full">
<property name="application" value="Hello World"/>
</log>
<drop/>
</sequence>
<sequence name="stockquote">
<log level="full">
<property name="application" value="StockQuote"/>
</log>
<filter xpath="//*[wsx:symbol='MSFT']"
xmlns:wsx="http://www.webserviceX.NET/">
<log>
<property name="Stock" value="IS MSFT"/>
</log>
<makefault>
<reason>Sorry the requested stock is no longer
available</reason>
</makefault>
</filter>
<header name="to"
value="http://www.webservicex.net/stockquote.asmx"/>
</sequence>
</definitions>
<rules>
<filter source="//wsa:To" regex=".*/StockQuote.*"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
<sequence ref="stockquote"/>
</filter>
<send/>
</rules>
</synapse>
Index: bin/synapse.bat
===================================================================
--- bin/synapse.bat (revision 398812)
+++ bin/synapse.bat (working copy)
@@ -74,7 +74,7 @@
:runSynapse
@echo on
-"%_JAVACMD%" -Djava.ext.dirs=%SYNAPSE_HOME%\lib;%SYNAPSE_HOME% -cp
%SYNAPSE_HOME%\lib org.apache.axis2.transport.http.SimpleHTTPServer
%SYNAPSE_CMD_LINE_ARGS%
+"%_JAVACMD%" -Daxis2.xml=%SYNAPSE_HOME%\synapse_repository\conf\axis2.xml
-Djava.ext.dirs=%SYNAPSE_HOME%\lib;%SYNAPSE_HOME% -cp %SYNAPSE_HOME%\lib
org.apache.axis2.transport.http.SimpleHTTPServer %SYNAPSE_CMD_LINE_ARGS%
goto end
:end
Index: bin/synapse.sh
===================================================================
--- bin/synapse.sh (revision 398812)
+++ bin/synapse.sh (working copy)
@@ -89,4 +89,4 @@
echo "Using $SYNAPSE_HOME: $SYNAPSE_HOME"
echo "Using JAVA_HOME: $JAVA_HOME"
-$JAVA_HOME/bin/java -classpath $SYNAPSE_CLASSPATH
org.apache.axis2.transport.http.SimpleHTTPServer
$SYNAPSE_HOME/synapse_repository -p8080
+$JAVA_HOME/bin/java
-Daxis2.xml=$SYNAPSE_HOME/synapse_repository/conf/axis2.xml -classpath
$SYNAPSE_CLASSPATH org.apache.axis2.transport.http.SimpleHTTPServer
$SYNAPSE_HOME/synapse_repository -p8080
Index: etc/project.properties
===================================================================
--- etc/project.properties (revision 398812)
+++ etc/project.properties (working copy)
@@ -32,11 +32,13 @@
# -------------------------------------------------------------------
ant.version=1.6.5
axis.wsdl4j.version=1.2
-axis2.version=SNAPSHOT
-axiom.version=SNAPSHOT
+axis2.version=1.0-RC5
+axis2.wsdl.version=SNAPSHOT
+axiom.version=1.0
policy.version=SNAPSHOT
+#XmlSchema.version=1.0.2
XmlSchema.version=SNAPSHOT
-wss4j.version=SNAPSHOT
+wss4j.version=1.5.0
commons.codec.version=1.3
commons.discovery.version=0.2
commons.httpclient.version=3.0
@@ -46,20 +48,20 @@
geronimo.spec.servlet.version=2.4-rc4
servletapi.version=2.3
groovy.all.version=1.0-jsr-01
-jaxen.version=1.1-beta-7
+jaxen.version=1.1-beta-8
junit.version=3.8.1
-log4j.version=1.2.12
+log4j.version=1.2.13
opensaml.version=1.0.1
-stax.api.version=1.0
stax.impl.groupid=woodstox
stax.impl.artifactid=wstx
-stax.impl.version=asl-2.8.1
-xalan.version=2.6.0
-xerces.version=2.6.2
+stax.impl.version=asl-2.9.3
+stax.api.version=1.0
+xalan.version=2.7.0
+xerces.version=2.7.1
xmlunit.version=1.0
annogen.version=0.1.0
geronimo.spec.jms.version=1.1-rc4
-backport_util_concurrent.version=2.0_01_pd
+backport_util_concurrent.version=2.1
spring.version=1.2.6
@@ -70,12 +72,12 @@
optional.includes=
maven.multiproject.includes=\
modules/core/project.xml,\
-modules/mediators/project.xml,\
+#modules/mediators/project.xml,\
modules/samples/project.xml,\
-modules/extensions/project.xml,\
+#modules/extensions/project.xml,\
${optional.includes}
# -------------------------------------------------------------------
# Addressing Version
# -------------------------------------------------------------------
-addressing.version=0.95
+addressing.version=1.0
Index: etc/project.xml
===================================================================
--- etc/project.xml (revision 398812)
+++ etc/project.xml (working copy)
@@ -69,7 +69,7 @@
<dependency>
<groupId>axis2</groupId>
<artifactId>axis2-wsdl</artifactId>
- <version>${axis2.version}</version>
+ <version>${axis2.wsdl.version}</version>
</dependency>
<dependency>
Index: maven.xml
===================================================================
--- maven.xml (revision 399114)
+++ maven.xml (working copy)
@@ -335,7 +335,7 @@
<ant:mkdir dir="${bin.dist.dir}/xdocs"/>
<ant:mkdir dir="${bin.dist.dir}/synapse_repository"/>
<ant:mkdir dir="${bin.dist.dir}/samples"/>
- <ant:mkdir dir="${bin.dist.dir}/mediators"/>
+ <!--<ant:mkdir dir="${bin.dist.dir}/mediators"/>-->
<ant:mkdir dir="target/temp/"/>
@@ -360,13 +360,13 @@
<ant:fileset dir="modules/core/target/synapse-repository"/>
</ant:copy>
- <ant:copy todir="${bin.dist.dir}/samples" flatten="false">
+ <!--<ant:copy todir="${bin.dist.dir}/samples" flatten="false">
<ant:fileset dir="modules/samples/target/dist-bin/samples"/>
</ant:copy>
<ant:copy todir="${bin.dist.dir}/mediators" flatten="false">
<ant:fileset dir="modules/mediators/target/dist-bin/mediators"/>
- </ant:copy>
+ </ant:copy>-->
<ant:copy todir="target/temp/">
<ant:fileset dir="target/dist-bin/">
Index: modules/core/maven.xml
===================================================================
--- modules/core/maven.xml (revision 399112)
+++ modules/core/maven.xml (working copy)
@@ -40,145 +40,7 @@
</jar>
- <echo message="----------------Creating NPE aar----------------"/>
- <mkdir dir="target/services/npe/META-INF"/>
- <mkdir dir="target/services/npe/org/apache/axis2/test"/>
- <copy file="test-resources/org/apache/axis2/META-INF/services.xml"
- tofile="target/services/npe/META-INF/services.xml"/>
- <copy file="target/test-classes/org/apache/axis2/test/Echo.class"
- tofile="target/services/npe/org/apache/axis2/test/Echo.class"/>
- <jar jarfile="target/npe.aar"
- basedir="target/services/npe">
- <include name="**"/>
- </jar>
- <echo message="----------------Creating test-mediator
aar----------------"/>
- <mkdir dir="target/services/test-mediator/META-INF"/>
- <mkdir dir="target/services/test-mediator/org/apache/axis2/test"/>
- <copy
file="test-resources/org/apache/axis2/META-INF/service-mediator.xml"
- tofile="target/services/test-mediator/META-INF/services.xml"/>
- <copy
file="target/test-classes/org/apache/axis2/test/TestMediator.class"
-
tofile="target/services/test-mediator/org/apache/axis2/test/TestMediator.class"/>
- <jar jarfile="target/test-mediator.aar"
- basedir="target/services/test-mediator">
- <include name="**"/>
- </jar>
- <!--echo message="Creating EnvironmentAware-Mediator aar"/>
- <mkdir dir="target/services/environmentaware-mediator/META-INF"/>
- <mkdir
dir="target/services/environmentaware-mediator/org/apache/axis2/test"/>
- <copy
file="test-resources/org/apache/axis2/META-INF/environmentaware-service.xml"
-
tofile="target/services/environmentaware-mediator/META-INF/services.xml"/>
- <copy
file="target/test-classes/org/apache/axis2/test/EnvironmentAwareMediator.class"
-
tofile="target/services/environmentaware-mediator/org/apache/axis2/test/EnvironmentAwareMediator.class"/>
- <jar jarfile="target/environmentaware-mediator.aar"
- basedir="target/services/environmentaware-mediator">
- <include name="**"/>
- </jar-->
-
- <echo message="-----------Creating Testing Repository - SendOn
----------"/>
- <mkdir dir="target/synapse-repository-sendon"/>
- <copy file="target/synapse.aar"
- tofile="target/synapse-repository-sendon/services/synapse.aar"/>
- <copy file="target/npe.aar"
- tofile="target/synapse-repository-sendon/services/npe.aar"/>
- <copy file="target/emptymediator.aar"
-
tofile="target/synapse-repository-sendon/services/emptymediator.aar"/>
- <mkdir dir="target/synapse-repository-sendon/modules"/>
- <copy
file="../../repository/modules/addressing-${addressing.version}.mar"
-
tofile="target/synapse-repository-sendon/modules/addressing-${addressing.version}.mar"/>
- <copy file="../../repository/conf/axis2.xml"
- tofile="target/synapse-repository-sendon/conf/axis2.xml"/>
- <copy file="test/rules/synapse-sendon.xml"
- tofile="target/synapse-repository-sendon/conf/synapse.xml"/>
-
-
- <echo message="-----------Creating Testing Repository - SendNow
----------"/>
- <mkdir dir="target/synapse-repository-sendnow"/>
- <copy file="target/synapse.aar"
-
tofile="target/synapse-repository-sendnow/services/synapse.aar"/>
- <copy file="target/npe.aar"
- tofile="target/synapse-repository-sendnow/services/npe.aar"/>
- <copy file="target/emptymediator.aar"
-
tofile="target/synapse-repository-sendnow/services/emptymediator.aar"/>
- <mkdir dir="target/synapse-repository-sendnow/modules"/>
- <copy
file="../../repository/modules/addressing-${addressing.version}.mar"
-
tofile="target/synapse-repository-sendnow/modules/addressing-${addressing.version}.mar"/>
- <copy file="../../repository/conf/axis2.xml"
- tofile="target/synapse-repository-sendnow/conf/axis2.xml"/>
- <copy file="test/rules/synapse-sendnow.xml"
- tofile="target/synapse-repository-sendnow/conf/synapse.xml"/>
-
- <echo message="-----------Creating Testing Repository - SendOnAxis2
----------"/>
- <mkdir dir="target/synapse-repository-sendonAxis2"/>
-
- <copy file="target/npe.aar"
- tofile="target/synapse-repository-sendonAxis2/services/npe.aar"/>
- <copy file="target/test-mediator.aar"
-
tofile="target/synapse-repository-sendonAxis2/services/test-mediator.aar"/>
- <copy file="target/emptymediator.aar"
-
tofile="target/synapse-repository-sendonAxis2/services/emptymediator.aar"/>
- <copy
file="../../repository/modules/addressing-${addressing.version}.mar"
-
tofile="target/synapse-repository-sendonAxis2/modules/addressing-${addressing.version}.mar"/>
- <copy file="test-resources/axis2/conf/axis2.xml"
- tofile="target/synapse-repository-sendonAxis2/conf/axis2.xml"/>
-
- <echo message="-----------Creating Testing Repository - SendonAxis2Tcp
----------"/>
- <mkdir dir="target/synapse-repository-sendonAxis2"/>
-
- <copy file="target/npe.aar"
-
tofile="target/synapse-repository-sendonAxis2Tcp/services/npe.aar"/>
- <copy
file="../../repository/modules/addressing-${addressing.version}.mar"
-
tofile="target/synapse-repository-sendonAxis2Tcp/modules/addressing-${addressing.version}.mar"/>
- <copy file="test-resources/tcp/axis2-tcp.xml"
-
tofile="target/synapse-repository-sendonAxis2Tcp/conf/axis2.xml"/>
-
- <echo message="-----------Creating Testing Repository - HttpTcp
----------"/>
- <mkdir dir="target/synapse-repository-httptcp"/>
-
- <copy file="target/emptymediator.aar"
-
tofile="target/synapse-repository-httptcp/services/emptymediator.aar"/>
- <copy file="target/synapse.aar"
- tofile="target/synapse-repository-httptcp/services/synapse.aar"/>
- <copy
file="../../repository/modules/addressing-${addressing.version}.mar"
-
tofile="target/synapse-repository-httptcp/modules/addressing-${addressing.version}.mar"/>
- <copy file="../../repository/conf/axis2.xml"
- tofile="target/synapse-repository-httptcp/conf/axis2.xml"/>
- <copy file="test/rules/synapse-httptcp.xml"
- tofile="target/synapse-repository-httptcp/conf/synapse.xml"/>
-
- <echo message="-----------Creating Testing Repository -
EnvironmentAware ----------"/>
- <!--mkdir dir="target/synapse-repository-environmentaware"/>
-
- <copy file="target/environmentaware-mediator.aar"
-
tofile="target/synapse-repository-environmentaware/services/environmentaware-mediator.aar"/>
- <copy file="target/emptymediator.aar"
-
tofile="target/synapse-repository-sendon/services/emptymediator.aar"/>
- <copy file="target/synapse.aar"
-
tofile="target/synapse-repository-environmentaware/services/synapse.aar"/>
- <copy
file="../../repository/modules/addressing-${addressing.version}.mar"
-
tofile="target/synapse-repository-environmentaware/modules/addressing-${addressing.version}.mar"/>
- <copy file="../../repository/conf/axis2.xml"
-
tofile="target/synapse-repository-environmentaware/conf/axis2.xml"/>
- <copy file="test/rules/synapse-environmentaware.xml"
-
tofile="target/synapse-repository-environmentaware/conf/synapse.xml"/-->
-
- <echo message="-----------Creating Testing Repository - Simple REST
Repository ----------"/>
- <mkdir dir="target/synapse-repository-resources"/>
-
- <copy file="target/npe.aar"
- tofile="target/synapse-repository-resources/services/npe.aar"/>
- <copy
file="../../repository/modules/addressing-${addressing.version}.mar"
-
tofile="target/synapse-repository-resources/modules/addressing-${addressing.version}.mar"/>
- <copy file="test-resources/rest/conf/axis2-rest.xml"
- tofile="target/synapse-repository-resources/conf/axis2.xml"/>
-
- <ant:delete file="target/npe.aar"/>
- <ant:delete file="target/test-mediator.aar"/>
- <ant:delete dir="target/test-mediator"/>
- <ant:delete dir="target/environmentaware-mediator.aar"/>
- <ant:delete dir="target/environmentaware-mediator"/>
-
-
<echo message="-----------Creating Testing Repository -
Genral----------"/>
<mkdir dir="target/synapse-repository"/>
<copy file="target/synapse.aar"
Index: modules/core/src/org/apache/synapse/axis2/Axis2FlexibleMEPClient.java
===================================================================
--- modules/core/src/org/apache/synapse/axis2/Axis2FlexibleMEPClient.java
(revision 398818)
+++ modules/core/src/org/apache/synapse/axis2/Axis2FlexibleMEPClient.java
(working copy)
@@ -123,7 +123,7 @@
+ UUIDGenerator.getUUID()));
if (smc.getReplyTo() != null)
mc.setReplyTo(smc.getReplyTo());
- if (smc.getRelatesTo() != null)
+ //if (smc.getRelatesTo() != null)
//mc.setRelatesTo(smc.getRelatesTo());
if (smc.getTo() != null) {
mc.setTo(smc.getTo());
Index: modules/core/src/org/apache/synapse/axis2/SynapseMessageReceiver.java
===================================================================
--- modules/core/src/org/apache/synapse/axis2/SynapseMessageReceiver.java
(revision 399252)
+++ modules/core/src/org/apache/synapse/axis2/SynapseMessageReceiver.java
(working copy)
@@ -34,7 +34,7 @@
private Log log = LogFactory.getLog(getClass());
public void receive(MessageContext mc) throws AxisFault {
- log.debug("receiving message");
+ log.debug("Synapse received message");
SynapseContext synCtx = Axis2SynapseContextFinder
.getSynapseContext(mc);
////////////////////////////////////////////////////////////////////////
Index: modules/core/src/org/apache/synapse/config/FaultMediatorFactory.java
===================================================================
--- modules/core/src/org/apache/synapse/config/FaultMediatorFactory.java
(revision 399252)
+++ modules/core/src/org/apache/synapse/config/FaultMediatorFactory.java
(working copy)
@@ -33,7 +33,7 @@
*/
public class FaultMediatorFactory extends AbstractMediatorFactory {
- private static final QName HEADER_Q = new
QName(Constants.SYNAPSE_NAMESPACE, "fault");
+ private static final QName HEADER_Q = new
QName(Constants.SYNAPSE_NAMESPACE, "makefault");
private static final QName ATT_VERSION_Q = new
QName(Constants.NULL_NAMESPACE, "version");
private static final QName CODE_Q = new
QName(Constants.SYNAPSE_NAMESPACE, "code");
Index: modules/core/src/org/apache/synapse/config/FilterMediatorFactory.java
===================================================================
--- modules/core/src/org/apache/synapse/config/FilterMediatorFactory.java
(revision 399252)
+++ modules/core/src/org/apache/synapse/config/FilterMediatorFactory.java
(working copy)
@@ -21,12 +21,14 @@
import org.apache.synapse.mediators.filters.FilterMediator;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.xpath.AXIOMXPath;
import org.jaxen.JaxenException;
import javax.xml.namespace.QName;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
+import java.util.Iterator;
public class FilterMediatorFactory extends AbstractListMediatorFactory {
@@ -55,6 +57,7 @@
throw new SynapseException(msg);
}
}
+ addNameSpaces(elem, filter.getXpath());
} else if (attSource != null && attRegex != null) {
@@ -81,6 +84,7 @@
throw new SynapseException(msg);
}
}
+ addNameSpaces(elem, filter.getSource());
} else {
String msg = "An xpath or (source, regex) attributes are required
for a filter";
@@ -93,4 +97,18 @@
public QName getTagQName() {
return FILTER_Q;
}
+
+ private void addNameSpaces(OMElement elem, AXIOMXPath xp) {
+ try {
+ Iterator it = elem.getAllDeclaredNamespaces();
+ while (it.hasNext()) {
+ OMNamespace n = (OMNamespace) it.next();
+ xp.addNamespace(n.getPrefix(), n.getName());
+ }
+ } catch (JaxenException je) {
+ String msg = "Error adding declared name spaces " + elem;
+ log.error(msg);
+ throw new SynapseException(msg, je);
+ }
+ }
}
Index: modules/core/src/org/apache/synapse/config/HeaderMediatorFactory.java
===================================================================
--- modules/core/src/org/apache/synapse/config/HeaderMediatorFactory.java
(revision 399252)
+++ modules/core/src/org/apache/synapse/config/HeaderMediatorFactory.java
(working copy)
@@ -21,37 +21,57 @@
import org.apache.synapse.SynapseException;
import org.apache.synapse.config.Constants;
import org.apache.synapse.api.Mediator;
-import org.apache.synapse.mediators.builtin.HeaderMediator;
+import org.apache.synapse.mediators.transform.HeaderMediator;
+import org.apache.synapse.mediators.transform.HeaderMediator;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMAttribute;
/**
*
- * <p>
- * <xmp><synapse:header name="optional"
type="to|from|faultto|replyto|action"
- * value="newvalue"/> </xmp>
- *
- *
*/
public class HeaderMediatorFactory extends AbstractMediatorFactory {
- private static final QName HEADER_Q = new QName(
- Constants.SYNAPSE_NAMESPACE, "header");
+ private static final QName HEADER_Q = new
QName(Constants.SYNAPSE_NAMESPACE, "header");
- private static final QName TYPE_ATT_Q = new QName("type"),
- VALUE_ATT_Q = new QName("value");
+ public Mediator createMediator(SynapseContext synCtx, OMElement elem) {
- public Mediator createMediator(SynapseContext se, OMElement el) {
- HeaderMediator hm = new HeaderMediator();
- OMAttribute val = el.getAttribute(VALUE_ATT_Q);
- OMAttribute type = el.getAttribute(TYPE_ATT_Q);
- if (val == null || type == null) {
- throw new SynapseException("<header> must have both " +
VALUE_ATT_Q
- + " and " + TYPE_ATT_Q + " attributes: " + el.toString());
- }
- hm.setHeaderType(type.getAttributeValue());
- hm.setValue( val.getAttributeValue());
- return hm;
+ HeaderMediator headerMediator = new HeaderMediator();
+ OMAttribute name = elem.getAttribute(new
QName(Constants.NULL_NAMESPACE, "name"));
+ OMAttribute value = elem.getAttribute(new
QName(Constants.NULL_NAMESPACE, "value"));
+ OMAttribute exprn = elem.getAttribute(new
QName(Constants.NULL_NAMESPACE, "expression"));
+ OMAttribute action = elem.getAttribute(new
QName(Constants.NULL_NAMESPACE, "action"));
+
+ if (name == null || name.getAttributeValue() == null) {
+ String msg = "A valid name attribute is required for the header
mediator";
+ log.error(msg);
+ throw new SynapseException(msg);
+ } else {
+ headerMediator.setName(name.getAttributeValue());
+ }
+
+ // The action attribute is optional, if provided and equals to
'remove' the
+ // header mediator will act as a header remove mediator
+ if (action != null && "remove".equals(action.getAttributeValue())) {
+ headerMediator.setAction(HeaderMediator.ACTION_REMOVE);
+ }
+
+ if (value == null && exprn == null) {
+ String msg = "A 'value' or 'expression' attribute is required for
a header mediator";
+ log.error(msg);
+ throw new SynapseException(msg);
+ }
+
+ if (value != null && value.getAttributeValue() != null) {
+ headerMediator.setValue(value.getAttributeValue());
+ } else if (exprn != null && exprn.getAttributeValue() != null) {
+ headerMediator.setExpression(exprn.getAttributeValue());
+ } else {
+ String msg = "Invalid attribute value for the attribute
'expression' or 'value'";
+ log.error(msg);
+ throw new SynapseException(msg);
+ }
+
+ return headerMediator;
}
public QName getTagQName() {
Index: modules/core/src/org/apache/synapse/config/MediatorFactoryFinder.java
===================================================================
--- modules/core/src/org/apache/synapse/config/MediatorFactoryFinder.java
(revision 399252)
+++ modules/core/src/org/apache/synapse/config/MediatorFactoryFinder.java
(working copy)
@@ -54,7 +54,9 @@
SendMediatorFactory.class,
FilterMediatorFactory.class,
SynapseMediatorFactory.class,
- DropMediatorFactory.class
+ DropMediatorFactory.class,
+ HeaderMediatorFactory.class,
+ FaultMediatorFactory.class
};
private static MediatorFactoryFinder instance = null;
Index: modules/core/src/org/apache/synapse/HeaderType.java
===================================================================
--- modules/core/src/org/apache/synapse/HeaderType.java (revision 398818)
+++ modules/core/src/org/apache/synapse/HeaderType.java (working copy)
@@ -45,7 +45,7 @@
else if (header.equalsIgnoreCase(STRREPLYTO))
headerType = REPLYTO;
else
- throw new SynapseException("unknown header type");
+ throw new SynapseException("Unknown header : " + header);
}
public String getHeaderType() {
Index: modules/core/src/org/apache/synapse/mediators/builtin/HeaderMediator.java
===================================================================
--- modules/core/src/org/apache/synapse/mediators/builtin/HeaderMediator.java
(revision 399252)
+++ modules/core/src/org/apache/synapse/mediators/builtin/HeaderMediator.java
(working copy)
@@ -1,58 +0,0 @@
-/*
- * 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 org.apache.synapse.HeaderType;
-import org.apache.synapse.SynapseMessage;
-import org.apache.synapse.mediators.AbstractMediator;
-
-
-/**
- * @see org.apache.synapse.HeaderType
- * <p> Sets aspects of the header to new values.
- * Uses HeaderType to set header values
- */
-public class HeaderMediator extends AbstractMediator {
-
- private HeaderType headerType = new HeaderType();
-
- private String value = null;
-
- public void setHeaderType(String ht) {
- headerType.setHeaderType(ht);
- }
-
- public String getHeaderType() {
- return headerType.getHeaderType();
- }
-
- public boolean mediate(SynapseMessage sm) {
- log.debug(getType() + " mediate()");
- headerType.setHeader(sm, getValue());
- return true;
- }
-
- public void setValue(String value) {
- this.value = value;
- }
-
- public String getValue() {
- return value;
- }
-
-}
Index: modules/core/src/org/apache/synapse/mediators/builtin/SendMediator.java
===================================================================
--- modules/core/src/org/apache/synapse/mediators/builtin/SendMediator.java
(revision 399252)
+++ modules/core/src/org/apache/synapse/mediators/builtin/SendMediator.java
(working copy)
@@ -17,6 +17,7 @@
package org.apache.synapse.mediators.builtin;
import org.apache.synapse.SynapseMessage;
+import org.apache.synapse.Constants;
import org.apache.synapse.mediators.AbstractMediator;
/**
@@ -36,6 +37,9 @@
*/
public boolean mediate(SynapseMessage synMsg) {
log.debug(getType() + " mediate()");
+ log.debug("Sending To: " + (synMsg.getTo() != null ?
synMsg.getTo().getAddress() : "null"));
+ log.debug("Body : \n" + synMsg.getEnvelope());
+ //synMsg.setProperty(Constants.ENGAGE_ADDRESSING_OUT_BOUND_MESSAGE,
Boolean.TRUE);
synMsg.getSynapseContext().send(synMsg);
return false;
}
Index: modules/core/src/org/apache/synapse/mediators/filters/FilterMediator.java
===================================================================
--- modules/core/src/org/apache/synapse/mediators/filters/FilterMediator.java
(revision 399252)
+++ modules/core/src/org/apache/synapse/mediators/filters/FilterMediator.java
(working copy)
@@ -17,11 +17,16 @@
package org.apache.synapse.mediators.filters;
import org.apache.axiom.om.xpath.AXIOMXPath;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.llom.OMTextImpl;
+import org.apache.axiom.om.impl.llom.OMElementImpl;
import org.apache.synapse.SynapseMessage;
import org.apache.synapse.mediators.AbstractListMediator;
import org.jaxen.JaxenException;
import java.util.regex.Pattern;
+import java.util.List;
+import java.util.Iterator;
/**
@@ -49,9 +54,25 @@
return xpath.booleanValueOf(synMsg.getEnvelope());
} else if (source != null && regex != null) {
+
Object result = source.evaluate(synMsg.getEnvelope());
- return regex.matcher(result.toString()).matches();
+ String textValue = "";
+ if (result instanceof List) {
+ Iterator iter = ((List) result).iterator();
+ while (iter.hasNext()) {
+ Object o = iter.next();
+ if (o instanceof OMTextImpl) {
+ textValue += ((OMTextImpl) o).getText();
+ } else if (o instanceof OMElementImpl) {
+ textValue += ((OMElementImpl) o).getText();
+ }
+ }
+ } else {
+ textValue = result.toString();
+ }
+ return regex.matcher(textValue).matches();
+
} else {
log.error("Invalid configuration specified");
return false;
Index:
modules/core/src/org/apache/synapse/mediators/transform/FaultMediator.java
===================================================================
--- modules/core/src/org/apache/synapse/mediators/transform/FaultMediator.java
(revision 399252)
+++ modules/core/src/org/apache/synapse/mediators/transform/FaultMediator.java
(working copy)
@@ -72,14 +72,19 @@
}
}
- // TODO : Figure out how to easily gen the correct fault
- // Replace this
OMDocument soapFaultDocument = factory.createOMDocument();
- SOAPEnvelope faultEnvelope = factory.getDefaultFaultEnvelope();
- //SOAPFault fault = factory.createSOAPFault();
- //faultEnvelope.setFirstChild(fault);
+ SOAPEnvelope faultEnvelope = factory.getDefaultFaultEnvelope();
soapFaultDocument.addChild(faultEnvelope);
+ /*SOAPFaultReason reason = factory.createSOAPFaultReason();
+ reason.setText(getReason());
+
+ SOAPFault fault = factory.createSOAPFault();
+ fault.setReason(reason);
+
+ SOAPEnvelope faultEnvelope = factory.getDefaultFaultEnvelope();
+ faultEnvelope.getBody().addFault(fault);*/
+
// set the fault message to the "faultTo" of the original message if
it exists
// else to the "replyTo"
EndpointReference toEPR = synMsg.getTo();
Index:
modules/core/src/org/apache/synapse/mediators/transform/HeaderMediator.java
===================================================================
--- modules/core/src/org/apache/synapse/mediators/transform/HeaderMediator.java
(revision 398818)
+++ modules/core/src/org/apache/synapse/mediators/transform/HeaderMediator.java
(working copy)
@@ -1,58 +1,77 @@
/*
- * 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.
- */
+* 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.transform;
-
-package org.apache.synapse.mediators.builtin;
-
+import org.apache.synapse.mediators.AbstractMediator;
+import org.apache.synapse.SynapseMessage;
import org.apache.synapse.HeaderType;
-import org.apache.synapse.SynapseMessage;
-import org.apache.synapse.mediators.AbstractMediator;
-
-/**
- * @see org.apache.synapse.HeaderType
- * <p> Sets aspects of the header to new values.
- * Uses HeaderType to set header values
- */
public class HeaderMediator extends AbstractMediator {
- private HeaderType headerType = new HeaderType();
+ public static final int ACTION_SET = 0;
+ public static final int ACTION_REMOVE = 1;
+ private String name = null;
private String value = null;
+ private int action = ACTION_SET;
- public void setHeaderType(String ht) {
- headerType.setHeaderType(ht);
+ private String expression = null; //TODO handle this case later
+ private HeaderType headerType = new HeaderType();
+
+ public boolean mediate(SynapseMessage synMsg) {
+ log.debug(getType() + " mediate()");
+ if (action == ACTION_SET) {
+ headerType.setHeader(synMsg, getValue());
+ //TODO support exprns later
+ } else {
+ //TODO remove header later
+ }
+ return true;
}
- public String getHeaderType() {
- return headerType.getHeaderType();
+ public int getAction() {
+ return action;
}
- public boolean mediate(SynapseMessage sm) {
- log.debug(getType() + " mediate()");
- headerType.setHeader(sm, getValue());
- return true;
+ public void setAction(int action) {
+ this.action = action;
}
- public void setValue(String value) {
- this.value = value;
+ public String getName() {
+ return name;
}
+ public void setName(String name) {
+ this.name = name;
+ this.headerType.setHeaderType(name);
+ }
+
public String getValue() {
return value;
}
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getExpression() {
+ return expression;
+ }
+
+ public void setExpression(String expression) {
+ this.expression = expression;
+ }
}
Index: modules/samples/project.xml
===================================================================
--- modules/samples/project.xml (revision 398812)
+++ modules/samples/project.xml (working copy)
@@ -17,6 +17,7 @@
<artifactId>synapse-core</artifactId>
<version>${pom.currentVersion}</version>
</dependency>
+<!--
<dependency>
<groupId>synapse</groupId>
<artifactId>synapse-mediators</artifactId>
@@ -26,7 +27,7 @@
<groupId>synapse</groupId>
<artifactId>synapse-extensions</artifactId>
<version>${pom.currentVersion}</version>
- </dependency>
+ </dependency>-->
<!-- external JARs -->
<dependency>
<groupId>axis2</groupId>
Index: modules/samples/src/sampleMediators/InjectRedirect.java
===================================================================
--- modules/samples/src/sampleMediators/InjectRedirect.java (revision
398812)
+++ modules/samples/src/sampleMediators/InjectRedirect.java (working copy)
@@ -17,9 +17,10 @@
import org.apache.axis2.addressing.EndpointReference;
import org.apache.synapse.SynapseMessage;
+import org.apache.synapse.mediators.AbstractMediator;
import org.apache.synapse.api.Mediator;
-public class InjectRedirect implements Mediator {
+public class InjectRedirect extends AbstractMediator {
private String uri = null;
public void setUri(String uri) {
Index: modules/samples/src/sampleMediators/Logger.java
===================================================================
--- modules/samples/src/sampleMediators/Logger.java (revision 398812)
+++ modules/samples/src/sampleMediators/Logger.java (working copy)
@@ -16,6 +16,7 @@
package sampleMediators;
import org.apache.synapse.SynapseMessage;
+import org.apache.synapse.mediators.AbstractMediator;
import org.apache.synapse.api.Mediator;
import org.apache.axiom.soap.SOAPEnvelope;
@@ -25,7 +26,7 @@
* <p>A sample Mediator that logs the message
*
*/
-public class Logger implements Mediator {
+public class Logger extends AbstractMediator {
/*
* (non-Javadoc)
Index: repository/conf/axis2.xml
===================================================================
--- repository/conf/axis2.xml (revision 398812)
+++ repository/conf/axis2.xml (working copy)
@@ -4,7 +4,7 @@
<!-- ================================================= -->
<parameter name="hotdeployment" locked="false">true</parameter>
<parameter name="hotupdate" locked="false">false</parameter>
- <parameter name="enableMTOM" locked="false">true</parameter>
+ <parameter name="enableMTOM" locked="false">false</parameter>
<parameter name="sendStacktraceDetailsWithFaults"
locked="false">true</parameter>
<!-- Uncomment this to enable REST support -->
@@ -16,6 +16,8 @@
<parameter name="userName" locked="false">admin</parameter>
<parameter name="password" locked="false">axis2</parameter>
+
+ <module ref="addressing"/>
<!-- ================================================= -->
<!-- Message Receivers -->
Index: repository/conf/synapse.xml
===================================================================
--- repository/conf/synapse.xml (revision 398812)
+++ repository/conf/synapse.xml (working copy)
@@ -1,37 +1,41 @@
-<synapse xmlns="http://ws.apache.org/ns/synapse">
- <!-- start by reading ws-a headers if they exist -->
- <engage-addressing-in/>
-
- <!-- now log the message using log4j -->
- <log/>
-
- <!-- Check if the URL matches the stockquote gateway/dumb case -->
- <regex message-address="to" pattern=".*/StockQuote.*">
- <ref ref="stockquote"/>
- </regex>
-
- <!-- check if the URL matches the virtual url - either the proxy or
ws-add case -->
- <regex message-address="to" pattern="http://stockquote.*">
- <ref ref="stockquote"/>
- </regex>
-
- <!-- send the message on -->
- <send/>
-
- <!-- these are only called if referenced above-->
- <never>
- <stage name="stockquote">
- <!-- set the To address to the real endpoint -->
- <header type="to"
value="http://www.webservicex.net/stockquote.asmx"/>
- <!-- check if the symbol is MSFT -->
- <xpath expr="//*[wsx:symbol='MSFT']"
xmlns:wsx="http://www.webserviceX.NET/">
- <!-- if it is throw a fault -->
- <fault>
- <reason>Isn't there a Windows API for that?</reason>
- </fault>
- </xpath>
- </stage>
-
- </never>
-</synapse>
-
+ <synapse xmlns="http://ws.apache.org/ns/synapse">
+ <definitions>
+ <sequence name="registration_flow">
+ <filter xpath="//[EMAIL PROTECTED]'GOLD']">
+ <log level="full">
+ <property name="category" value="GOLD"/>
+ </log>
+ <drop/>
+ </filter>
+ <sequence ref="fault_flow"/>
+ </sequence>
+
+ <sequence name="fault_flow">
+ <log level="full">
+ <property name="application" value="Hello World"/>
+ </log>
+ <drop/>
+ </sequence>
+
+ <sequence name="stockquote">
+ <log level="full">
+ <property name="application" value="StockQuote"/>
+ </log>
+ <filter xpath="//*[wsx:symbol='MSFT']"
xmlns:wsx="http://www.webserviceX.NET/">
+ <makefault>
+ <reason>Sorry the requested stock is no longer
available</reason>
+ </makefault>
+ </filter>
+ <header name="to" value="http://www.webservicex.net/stockquote.asmx"/>
+ </sequence>
+
+ </definitions>
+
+ <rules>
+ <filter source="//wsa:To" regex=".*/StockQuote.*"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
+ <sequence ref="stockquote"/>
+ </filter>
+ <send/>
+ </rules>
+
+ </synapse>
\ No newline at end of file
Index: repository/modules/addressing-0.95.mar
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: repository/modules/addressing-1.0.mar
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]