Author: saminda
Date: Sat Feb 11 02:01:47 2006
New Revision: 376959
URL: http://svn.apache.org/viewcvs?rev=376959&view=rev
Log:
1.Implementation of <drop/> and <sendnow/> as Paul has suggested.
2.DynamicAxisOperation, the class that dynamically decide which MEP to use when
Synapse runs as the client. Currently
this class has been tested with <sendnow/>. Soon i will integrate it with
<send/>.
3.Full implementation of <define/> mediator. When witting rules one can have N
number of define mediators, with
different @name. <define/> is not an in-line mediator. It has to be referenced.
The reference mediator is
<refdefine/> with @ref.
4.Added test cases to test <drop/> and <sendnow/> mediators. These mediators
use the latest of <define/> and
<refdefine/>.
Added:
incubator/synapse/trunk/java/src/org/apache/synapse/axis2/DynamicAxisOperation.java
incubator/synapse/trunk/java/src/org/apache/synapse/processors/RefDefineProcessor.java
incubator/synapse/trunk/java/src/org/apache/synapse/processors/builtin/DropProcessor.java
incubator/synapse/trunk/java/src/org/apache/synapse/processors/builtin/SendNowProcessor.java
incubator/synapse/trunk/java/src/org/apache/synapse/xml/DropProcessorConfigurator.java
incubator/synapse/trunk/java/src/org/apache/synapse/xml/RefDefineProcessorConfigurator.java
incubator/synapse/trunk/java/src/org/apache/synapse/xml/SendNowProcessorConfigurator.java
incubator/synapse/trunk/java/test/org/apache/synapse/spi/injection/SendNowProcessorWithRuleTest.java
incubator/synapse/trunk/java/test/rules/synapse-sendnow.xml
Modified:
incubator/synapse/trunk/java/maven.xml
incubator/synapse/trunk/java/repository/synapse.xml
incubator/synapse/trunk/java/scripts/samples/deprecation_mediator/synapse.xml
incubator/synapse/trunk/java/src/org/apache/synapse/axis2/Axis2FlexibleMEPClient.java
incubator/synapse/trunk/java/src/org/apache/synapse/processors/DefineProcessor.java
incubator/synapse/trunk/java/src/org/apache/synapse/xml/ProcessorConfiguratorFinder.java
incubator/synapse/trunk/java/test/org/apache/axis2/META-INF/services.xml
incubator/synapse/trunk/java/test/org/apache/axis2/test/Echo.java
incubator/synapse/trunk/java/test/org/apache/synapse/spi/injection/DefineProcessorwithRuleTest.java
incubator/synapse/trunk/java/test/org/apache/synapse/util/Axis2EnvSetup.java
Modified: incubator/synapse/trunk/java/maven.xml
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/maven.xml?rev=376959&r1=376958&r2=376959&view=diff
==============================================================================
--- incubator/synapse/trunk/java/maven.xml (original)
+++ incubator/synapse/trunk/java/maven.xml Sat Feb 11 02:01:47 2006
@@ -113,6 +113,22 @@
<copy file="test/rules/synapse-sendon.xml"
tofile="target/synapse-repository-sendon/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="synapse-test-resources/axis2/modules/addressing-0.94.mar"
+
tofile="target/synapse-repository-sendnow/modules/addressing-0.94.mar"/>
+ <copy file="synapse-test-resources/axis2/axis2.xml"
+ tofile="target/synapse-repository-sendnow/axis2.xml"/>
+ <copy file="test/rules/synapse-sendnow.xml"
+ tofile="target/synapse-repository-sendnow/synapse.xml"/>
+
<echo message="-----------Creating Testing Repository -
SendOnAxis2 ----------"/>
<mkdir dir="target/synapse-repository-sendonAxis2"/>
Modified: incubator/synapse/trunk/java/repository/synapse.xml
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/repository/synapse.xml?rev=376959&r1=376958&r2=376959&view=diff
==============================================================================
--- incubator/synapse/trunk/java/repository/synapse.xml (original)
+++ incubator/synapse/trunk/java/repository/synapse.xml Sat Feb 11 02:01:47 2006
@@ -19,16 +19,17 @@
<send/>
<!-- these are only called if referenced above-->
- <define name="stockquote">
+ <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/>
+ </xpath>
+ </stage>
- <!-- 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/>
- </xpath>
-
- </define>
+ </never>
</synapse>
Modified:
incubator/synapse/trunk/java/scripts/samples/deprecation_mediator/synapse.xml
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/scripts/samples/deprecation_mediator/synapse.xml?rev=376959&r1=376958&r2=376959&view=diff
==============================================================================
---
incubator/synapse/trunk/java/scripts/samples/deprecation_mediator/synapse.xml
(original)
+++
incubator/synapse/trunk/java/scripts/samples/deprecation_mediator/synapse.xml
Sat Feb 11 02:01:47 2006
@@ -20,13 +20,17 @@
<send/>
- <!-- these are only called if referenced above-->
- <define name="stockquote">
- <header type="to" value="http://www.webservicex.net/stockquote.asmx"/>
- <xpath expr="//*[wsx:symbol='MSFT']"
- xmlns:wsx="http://www.webserviceX.NET/">
- <fault/>
- </xpath>
- </define>
+ <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/>
+ </xpath>
+ </stage>
+
+ </never>
</synapse>
Modified:
incubator/synapse/trunk/java/src/org/apache/synapse/axis2/Axis2FlexibleMEPClient.java
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/src/org/apache/synapse/axis2/Axis2FlexibleMEPClient.java?rev=376959&r1=376958&r2=376959&view=diff
==============================================================================
---
incubator/synapse/trunk/java/src/org/apache/synapse/axis2/Axis2FlexibleMEPClient.java
(original)
+++
incubator/synapse/trunk/java/src/org/apache/synapse/axis2/Axis2FlexibleMEPClient.java
Sat Feb 11 02:01:47 2006
@@ -49,7 +49,7 @@
*/
public class Axis2FlexibleMEPClient {
- private static SOAPEnvelope outEnvelopeConfiguration(MessageContext smc) {
+ public static SOAPEnvelope outEnvelopeConfiguration(MessageContext smc) {
SOAPEnvelope env = smc.getEnvelope();
SOAPHeader soapHeader = env.getHeader();
ArrayList addressingHeaders;
Added:
incubator/synapse/trunk/java/src/org/apache/synapse/axis2/DynamicAxisOperation.java
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/src/org/apache/synapse/axis2/DynamicAxisOperation.java?rev=376959&view=auto
==============================================================================
---
incubator/synapse/trunk/java/src/org/apache/synapse/axis2/DynamicAxisOperation.java
(added)
+++
incubator/synapse/trunk/java/src/org/apache/synapse/axis2/DynamicAxisOperation.java
Sat Feb 11 02:01:47 2006
@@ -0,0 +1,151 @@
+package org.apache.synapse.axis2;
+
+import org.apache.axis2.description.*;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.engine.AxisEngine;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.OperationClient;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.client.async.Callback;
+import org.apache.synapse.SynapseException;
+import org.apache.wsdl.WSDLConstants;
+
+import javax.xml.namespace.QName;
+import java.util.HashMap;
+
+/**
+ */
+public class DynamicAxisOperation extends InOutAxisOperation {
+ public DynamicAxisOperation() {
+ super();
+ }
+
+ public DynamicAxisOperation(QName name) {
+ super(name);
+ }
+
+ public void addMessageContext(MessageContext msgContext,
+ OperationContext opContext) throws AxisFault
{
+ HashMap mep = opContext.getMessageContexts();
+ MessageContext immsgContext = (MessageContext) mep
+ .get(MESSAGE_LABEL_IN_VALUE);
+ MessageContext outmsgContext = (MessageContext) mep
+ .get(MESSAGE_LABEL_OUT_VALUE);
+
+ if ((immsgContext != null) && (outmsgContext != null)) {
+ throw new AxisFault(
+ "Invalid message addition , operation context completed");
+ }
+
+ if (outmsgContext == null) {
+ mep.put(MESSAGE_LABEL_OUT_VALUE, msgContext);
+ } else {
+ mep.put(MESSAGE_LABEL_IN_VALUE, msgContext);
+ opContext.setComplete(true);
+ }
+ }
+
+
+ public OperationClient createClient(ServiceContext sc, Options options) {
+ return new DynamicOperationClient(this,sc,options);
+ }
+
+}
+
+class DynamicOperationClient implements OperationClient {
+ private DynamicAxisOperation axisOp;
+ private ServiceContext sc;
+ private OperationContext oc;
+ private Options options;
+
+ public DynamicOperationClient(DynamicAxisOperation axisOp, ServiceContext
sc, Options options){
+ this.options = options;
+ this.axisOp = axisOp;
+ this.sc = sc;
+ this.oc = new OperationContext(axisOp,sc);
+ this.oc.setParent(this.sc);
+ }
+
+ public void setOptions(Options options) {
+ // Not supported
+ }
+
+ public Options getOptions() {
+ throw new SynapseException("Not Supported");
+ }
+
+ public void addMessageContext(MessageContext mc) throws AxisFault {
+ mc.setServiceContext(sc);
+ axisOp.registerOperationContext(mc, oc);
+ }
+
+ public MessageContext getMessageContext(String messageLabel) throws
AxisFault {
+ return oc.getMessageContext(messageLabel);
+ }
+
+ public void setCallback(Callback callback) {
+ // Not supported
+ }
+
+ public void execute(boolean block) throws AxisFault {
+ if (block) {
+ ConfigurationContext cc = sc.getConfigurationContext();
+
+ // copy interesting info from options to message context.
+ MessageContext mc = oc
+ .getMessageContext(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+ if (mc == null) {
+ throw new AxisFault(
+ "Out message context is null ,"
+ + " please set the out message context before
calling this method");
+ }
+
+ EndpointReference toEPR = mc.getTo();
+
+ TransportOutDescription transportOut =
ClientUtils.inferOutTransport(cc
+ .getAxisConfiguration(), toEPR);
+ mc.setTransportOut(transportOut);
+
+ /*
+ Options need to Infer TransportInDescription
+ */
+ if (mc.getTransportIn() == null) {
+ TransportInDescription transportIn = options.getTransportIn();
+ if (transportIn == null) {
+ mc.setTransportIn(ClientUtils.inferInTransport(cc
+ .getAxisConfiguration(), options, mc
+ .getServiceContext()));
+ } else {
+ mc.setTransportIn(transportIn);
+ }
+ }
+
+ if (mc.getSoapAction() == null || "".equals(mc.getSoapAction())) {
+ Parameter soapaction =
axisOp.getParameter(AxisOperation.SOAP_ACTION);
+ if (soapaction != null) {
+ mc.setSoapAction((String) soapaction.getValue());
+ }
+ }
+
+ oc.addMessageContext(mc);
+ // ship it out
+ AxisEngine engine = new AxisEngine(cc);
+ engine.send(mc);
+ }
+
+ }
+
+ public void reset() throws AxisFault {
+ // Not supported
+ }
+
+ public void complete(MessageContext msgCtxt) throws AxisFault {
+ // Not supported
+ }
+
+
+}
Modified:
incubator/synapse/trunk/java/src/org/apache/synapse/processors/DefineProcessor.java
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/src/org/apache/synapse/processors/DefineProcessor.java?rev=376959&r1=376958&r2=376959&view=diff
==============================================================================
---
incubator/synapse/trunk/java/src/org/apache/synapse/processors/DefineProcessor.java
(original)
+++
incubator/synapse/trunk/java/src/org/apache/synapse/processors/DefineProcessor.java
Sat Feb 11 02:01:47 2006
@@ -22,11 +22,23 @@
*
*/
public class DefineProcessor extends ListProcessor {
- /*
- <define/> tag will not execute in-line. It has to be refernced with
- <ref/>
- */
+
public boolean process(SynapseEnvironment se, SynapseMessage sm) {
return true;
+ }
+
+ /*
+ Thre Processor.process() is common to every one. Define Processor is a
unique
+ mediator that is not run in-line. It should always reference by some
entity. This
+ Entity is "<refdefine/>. <refdefine/> has the @ref which will reference to
the
+ <define/>.
+
+ The Following method processRef(SynapseEnvironment se, SynapseMessage sm);
will
+ allow to refernce the <define/> process and, will not allow the <define/>
to be a inline
+ process either.
+ */
+
+ public boolean processRef(SynapseEnvironment se, SynapseMessage sm) {
+ return super.process(se,sm);
}
}
Added:
incubator/synapse/trunk/java/src/org/apache/synapse/processors/RefDefineProcessor.java
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/src/org/apache/synapse/processors/RefDefineProcessor.java?rev=376959&view=auto
==============================================================================
---
incubator/synapse/trunk/java/src/org/apache/synapse/processors/RefDefineProcessor.java
(added)
+++
incubator/synapse/trunk/java/src/org/apache/synapse/processors/RefDefineProcessor.java
Sat Feb 11 02:01:47 2006
@@ -0,0 +1,34 @@
+package org.apache.synapse.processors;
+
+import org.apache.synapse.SynapseEnvironment;
+import org.apache.synapse.SynapseMessage;
+import org.apache.synapse.Processor;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/*
+ */
+public class RefDefineProcessor extends AbstractProcessor{
+ private Log log = LogFactory.getLog(getClass());
+ private String refDefine = null;
+
+ public boolean process(SynapseEnvironment se, SynapseMessage sm) {
+ log.debug("RefDfineProcessor-Process");
+ Processor p = se.lookupProcessor(getRefDefine());
+ if (p==null) log.debug("processor with name
"+this.getRefDefine()+" not found");
+ else if (p instanceof DefineProcessor) {
+ DefineProcessor defp = (DefineProcessor)p;
+ return defp.processRef(se,sm);
+ }
+ return true;
+ }
+
+ public void setRefDefine(String refDefine) {
+ this.refDefine = refDefine;
+ }
+
+ public String getRefDefine() {
+ return this.refDefine;
+ }
+
+}
Added:
incubator/synapse/trunk/java/src/org/apache/synapse/processors/builtin/DropProcessor.java
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/src/org/apache/synapse/processors/builtin/DropProcessor.java?rev=376959&view=auto
==============================================================================
---
incubator/synapse/trunk/java/src/org/apache/synapse/processors/builtin/DropProcessor.java
(added)
+++
incubator/synapse/trunk/java/src/org/apache/synapse/processors/builtin/DropProcessor.java
Sat Feb 11 02:01:47 2006
@@ -0,0 +1,19 @@
+package org.apache.synapse.processors.builtin;
+
+import org.apache.synapse.processors.AbstractProcessor;
+import org.apache.synapse.SynapseEnvironment;
+import org.apache.synapse.SynapseMessage;
+
+/**
+ */
+public class DropProcessor extends AbstractProcessor {
+
+ public boolean process(SynapseEnvironment se, SynapseMessage sm) {
+ if (sm.getTo() == null) {
+ return false;
+ }else{
+ sm.setTo(null);
+ return false;
+ }
+ }
+}
Added:
incubator/synapse/trunk/java/src/org/apache/synapse/processors/builtin/SendNowProcessor.java
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/src/org/apache/synapse/processors/builtin/SendNowProcessor.java?rev=376959&view=auto
==============================================================================
---
incubator/synapse/trunk/java/src/org/apache/synapse/processors/builtin/SendNowProcessor.java
(added)
+++
incubator/synapse/trunk/java/src/org/apache/synapse/processors/builtin/SendNowProcessor.java
Sat Feb 11 02:01:47 2006
@@ -0,0 +1,151 @@
+package org.apache.synapse.processors.builtin;
+
+import org.apache.synapse.processors.AbstractProcessor;
+import org.apache.synapse.SynapseEnvironment;
+import org.apache.synapse.SynapseMessage;
+import org.apache.synapse.SynapseException;
+import org.apache.synapse.axis2.Axis2SynapseMessage;
+import org.apache.synapse.axis2.Axis2FlexibleMEPClient;
+import org.apache.synapse.axis2.DynamicAxisOperation;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ServiceGroupContext;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.transport.TransportUtils;
+import org.apache.axis2.soap.SOAPEnvelope;
+import org.apache.axis2.client.OperationClient;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.util.UUIDGenerator;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.deployment.util.PhasesInfo;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.AxisEngine;
+import org.apache.wsdl.WSDLConstants;
+
+import javax.xml.namespace.QName;
+
+/**
+ */
+public class SendNowProcessor extends AbstractProcessor {
+ public boolean process(SynapseEnvironment se, SynapseMessage sm) {
+ MessageContext mc = ((Axis2SynapseMessage)sm).getMessageContext();
+
+ try {
+ MessageContext response = send(mc);
+ if (response.getProperty(MessageContext.TRANSPORT_IN) !=null) {
+ SOAPEnvelope resenvelope = TransportUtils.createSOAPMessage(
+ response, mc.getEnvelope().getNamespace()
+ .getName());
+
+ response.setEnvelope(resenvelope);
+ outMessageSerialization(response,mc,sm);
+ }
+
+
+ } catch (AxisFault axisFault) {
+ throw new SynapseException(axisFault);
+ }
+ // this will stop processing message and what User
+ return false;
+ }
+
+ public MessageContext send(MessageContext smc) throws AxisFault {
+ ConfigurationContext cc = smc.getConfigurationContext();
+ AxisConfiguration ac = cc.getAxisConfiguration();
+ PhasesInfo phasesInfo = ac.getPhasesInfo();
+
+ // setting operation default chains
+ if (ac.getService("__ANONYMOUS_SERVICE__") == null) {
+ DynamicAxisOperation operation = new DynamicAxisOperation(new
QName(
+ "__DYNAMIC_OPERATION__"));
+ AxisService axisAnonymousService =
+ new AxisService("__ANONYMOUS_SERVICE__");
+ axisAnonymousService.addOperation(operation);
+ ac.addService(axisAnonymousService);
+ phasesInfo.setOperationPhases(operation);
+ }
+ ServiceGroupContext sgc = new ServiceGroupContext(cc,
+ ac.getService("__ANONYMOUS_SERVICE__").getParent());
+ ServiceContext sc =
+ sgc.getServiceContext(new
AxisService("__ANONYMOUS_SERVICE__"));
+
+ MessageContext mc = new MessageContext();
+ mc.setConfigurationContext(sc.getConfigurationContext());
+ ///////////////////////////////////////////////////////////////////////
+ // filtering properties
+ if (smc.getSoapAction() != null)
+ mc.setSoapAction(smc.getSoapAction());
+ if (smc.getWSAAction() != null)
+ mc.setWSAAction(smc.getWSAAction());
+ if (smc.getFrom() != null)
+ mc.setFrom(smc.getFrom());
+ if (smc.getMessageID() != null)
+ mc.setMessageID(smc.getMessageID());
+ else
+ mc.setMessageID(String.valueOf("uuid:"
+ + UUIDGenerator.getUUID()));
+ if (smc.getReplyTo() != null)
+ mc.setReplyTo(smc.getReplyTo());
+ if (smc.getRelatesTo() != null)
+ mc.setRelatesTo(smc.getRelatesTo());
+ if (smc.getTo() != null) {
+ mc.setTo(smc.getTo());
+ } else {
+ throw new AxisFault(
+ "To canno't be null, if null Synapse can't infer the
transport");
+ }
+ if (smc.isDoingREST()) {
+ mc.setDoingREST(true);
+ }
+ mc.setEnvelope(Axis2FlexibleMEPClient.outEnvelopeConfiguration(smc));
+
+ AxisOperation axisAnonymousOperation =
+ ac.getService("__ANONYMOUS_SERVICE__")
+ .getOperation(new QName("__DYNAMIC_OPERATION__"));
+
+ Options options = new Options();
+ OperationClient mepClient =
+ axisAnonymousOperation.createClient(sc,options);
+
+ mepClient.addMessageContext(mc);
+ mepClient.execute(true);
+ MessageContext response = mepClient
+ .getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+
+
+ response.setProperty(MessageContext.TRANSPORT_OUT,
+ smc.getProperty(MessageContext.TRANSPORT_OUT));
+ response.setProperty(org.apache.axis2.Constants.OUT_TRANSPORT_INFO,
+ smc.getProperty(
+ org.apache.axis2.Constants.OUT_TRANSPORT_INFO));
+
+ // If request is REST we assume the response is REST, so set the
+ // variable
+ response.setDoingREST(smc.isDoingREST());
+
+ return response;
+ }
+
+ private void outMessageSerialization(MessageContext mcn,MessageContext
mco,SynapseMessage sm) throws AxisFault {
+
+ // copying important configuration stuff
+ sm.setResponse(true);
+ // as agreed upone
+ mcn.setTo(null);
+ Object os = mco
+ .getProperty(MessageContext.TRANSPORT_OUT);
+ mcn.setProperty(MessageContext.TRANSPORT_OUT, os);
+ TransportInDescription ti = mco.getTransportIn();
+ mcn.setTransportIn(ti);
+ mcn.setServerSide(true);
+
+ AxisEngine ae = new AxisEngine(mco.getConfigurationContext());
+ ae.send(mcn);
+
+
+ }
+
+}
Added:
incubator/synapse/trunk/java/src/org/apache/synapse/xml/DropProcessorConfigurator.java
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/src/org/apache/synapse/xml/DropProcessorConfigurator.java?rev=376959&view=auto
==============================================================================
---
incubator/synapse/trunk/java/src/org/apache/synapse/xml/DropProcessorConfigurator.java
(added)
+++
incubator/synapse/trunk/java/src/org/apache/synapse/xml/DropProcessorConfigurator.java
Sat Feb 11 02:01:47 2006
@@ -0,0 +1,23 @@
+package org.apache.synapse.xml;
+
+import org.apache.synapse.Processor;
+import org.apache.synapse.SynapseEnvironment;
+import org.apache.synapse.processors.builtin.DropProcessor;
+import org.apache.axis2.om.OMElement;
+
+import javax.xml.namespace.QName;
+
+/**
+ */
+public class DropProcessorConfigurator extends AbstractProcessorConfigurator{
+
+ private static final QName DROP_Q = new QName(Constants.SYNAPSE_NAMESPACE,
+ "drop");
+ public Processor createProcessor(SynapseEnvironment se, OMElement el) {
+ return new DropProcessor();
+ }
+
+ public QName getTagQName() {
+ return DROP_Q;
+ }
+}
Modified:
incubator/synapse/trunk/java/src/org/apache/synapse/xml/ProcessorConfiguratorFinder.java
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/src/org/apache/synapse/xml/ProcessorConfiguratorFinder.java?rev=376959&r1=376958&r2=376959&view=diff
==============================================================================
---
incubator/synapse/trunk/java/src/org/apache/synapse/xml/ProcessorConfiguratorFinder.java
(original)
+++
incubator/synapse/trunk/java/src/org/apache/synapse/xml/ProcessorConfiguratorFinder.java
Sat Feb 11 02:01:47 2006
@@ -61,7 +61,9 @@
AddressingProcessorConfigurator.class,
InProcessorConfigurator.class,
OutProcessorConfigurator.class,
NeverProcessorConfigurator.class,
RefProcessorConfigurator.class,
- XSLTProcessorConfigurator.class,DefineProcessorConfigurator.class};
+ XSLTProcessorConfigurator.class,DefineProcessorConfigurator.class,
+ SendNowProcessorConfigurator.class,DropProcessorConfigurator.class,
+ RefDefineProcessorConfigurator.class};
private static void initialise() {
Added:
incubator/synapse/trunk/java/src/org/apache/synapse/xml/RefDefineProcessorConfigurator.java
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/src/org/apache/synapse/xml/RefDefineProcessorConfigurator.java?rev=376959&view=auto
==============================================================================
---
incubator/synapse/trunk/java/src/org/apache/synapse/xml/RefDefineProcessorConfigurator.java
(added)
+++
incubator/synapse/trunk/java/src/org/apache/synapse/xml/RefDefineProcessorConfigurator.java
Sat Feb 11 02:01:47 2006
@@ -0,0 +1,30 @@
+package org.apache.synapse.xml;
+
+import org.apache.synapse.Processor;
+import org.apache.synapse.SynapseEnvironment;
+import org.apache.synapse.SynapseException;
+import org.apache.synapse.processors.RefDefineProcessor;
+import org.apache.axis2.om.OMElement;
+import org.apache.axis2.om.OMAttribute;
+
+import javax.xml.namespace.QName;
+
+/*
+ */
+public class RefDefineProcessorConfigurator extends
AbstractProcessorConfigurator{
+ private static final QName REF_DEFINE_Q = new
QName(Constants.SYNAPSE_NAMESPACE,
+ "refdefine");
+
+ public Processor createProcessor(SynapseEnvironment se, OMElement el) {
+ RefDefineProcessor rdp = new RefDefineProcessor();
+ super.setNameOnProcessor(se, el, rdp);
+ OMAttribute attr = el.getAttribute(new QName("ref"));
+ if (attr==null) throw new SynapseException("<ref> must have
attribute ref");
+ rdp.setRefDefine(attr.getAttributeValue());
+ return rdp;
+ }
+
+ public QName getTagQName() {
+ return REF_DEFINE_Q;
+ }
+}
Added:
incubator/synapse/trunk/java/src/org/apache/synapse/xml/SendNowProcessorConfigurator.java
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/src/org/apache/synapse/xml/SendNowProcessorConfigurator.java?rev=376959&view=auto
==============================================================================
---
incubator/synapse/trunk/java/src/org/apache/synapse/xml/SendNowProcessorConfigurator.java
(added)
+++
incubator/synapse/trunk/java/src/org/apache/synapse/xml/SendNowProcessorConfigurator.java
Sat Feb 11 02:01:47 2006
@@ -0,0 +1,22 @@
+package org.apache.synapse.xml;
+
+import org.apache.synapse.Processor;
+import org.apache.synapse.SynapseEnvironment;
+import org.apache.synapse.processors.builtin.SendNowProcessor;
+import org.apache.axis2.om.OMElement;
+
+import javax.xml.namespace.QName;
+
+/**
+ */
+public class SendNowProcessorConfigurator extends
AbstractProcessorConfigurator{
+ private static final QName SEND_NOW_Q = new
QName(Constants.SYNAPSE_NAMESPACE,
+ "sendnow");
+ public Processor createProcessor(SynapseEnvironment se, OMElement el) {
+ return new SendNowProcessor();
+ }
+
+ public QName getTagQName() {
+ return SEND_NOW_Q;
+ }
+}
Modified:
incubator/synapse/trunk/java/test/org/apache/axis2/META-INF/services.xml
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/test/org/apache/axis2/META-INF/services.xml?rev=376959&r1=376958&r2=376959&view=diff
==============================================================================
--- incubator/synapse/trunk/java/test/org/apache/axis2/META-INF/services.xml
(original)
+++ incubator/synapse/trunk/java/test/org/apache/axis2/META-INF/services.xml
Sat Feb 11 02:01:47 2006
@@ -15,4 +15,8 @@
<operation name="echo_addressing" locked="false">
<parameter
name="wsamapping">urn:synapse/sendon-addressing-engage</parameter>
</operation>
+ <operation name="ping">
+ <messageReceiver
class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
+ <parameter name="wsamapping">urn:synapse/ping</parameter>
+ </operation>
</service>
Modified: incubator/synapse/trunk/java/test/org/apache/axis2/test/Echo.java
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/test/org/apache/axis2/test/Echo.java?rev=376959&r1=376958&r2=376959&view=diff
==============================================================================
--- incubator/synapse/trunk/java/test/org/apache/axis2/test/Echo.java (original)
+++ incubator/synapse/trunk/java/test/org/apache/axis2/test/Echo.java Sat Feb
11 02:01:47 2006
@@ -52,4 +52,10 @@
fac.createText(responseText, "Synapse Testing
String_Response_With_Addressing"));
return responseText;
}
+
+ public void ping(OMElement element) {
+ System.out.println(
+ "This is the actual service which has been pinged");
+ }
+
}
Modified:
incubator/synapse/trunk/java/test/org/apache/synapse/spi/injection/DefineProcessorwithRuleTest.java
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/test/org/apache/synapse/spi/injection/DefineProcessorwithRuleTest.java?rev=376959&r1=376958&r2=376959&view=diff
==============================================================================
---
incubator/synapse/trunk/java/test/org/apache/synapse/spi/injection/DefineProcessorwithRuleTest.java
(original)
+++
incubator/synapse/trunk/java/test/org/apache/synapse/spi/injection/DefineProcessorwithRuleTest.java
Sat Feb 11 02:01:47 2006
@@ -35,10 +35,16 @@
private MessageContext mc;
private String synapsexml =
"<synapse xmlns=\"http://ws.apache.org/ns/synapse\">\n" +
+ "<refdefine ref=\"test_define\"/>\n" +
+ "<refdefine ref=\"test_define_addressing\"/>\n" +
"<define name=\"test_define\">\n" +
" <log/>" +
" <regex message-address=\"to\"
pattern=\"http://xmethods..\\*\"/>\n" +
"</define>\n" +
+
+ "<define name=\"test_define_addressing\">\n" +
+ " <engage-addressing-in/>" +
+ "</define>\n" +
"</synapse>";
public void setUp() throws Exception{
mc = Axis2EnvSetup.axis2Deployment("target/synapse-repository");
@@ -52,9 +58,12 @@
SynapseMessage smc = new Axis2SynapseMessage(mc);
env.injectMessage(smc);
assertEquals("test_define",
env.lookupProcessor("test_define").getName());
+ assertEquals("test_define_addressing",
env.lookupProcessor("test_define_addressing").getName());
List embededProcessors =
((ListProcessor)env.lookupProcessor("test_define")).getList();
assertEquals(2,embededProcessors.size());
-
+ ListProcessor masterProcessor =
(ListProcessor)env.getMasterProcessor();
+ List masterProcessorList = masterProcessor.getList();
+ assertEquals(4,masterProcessorList.size());
}
}
Added:
incubator/synapse/trunk/java/test/org/apache/synapse/spi/injection/SendNowProcessorWithRuleTest.java
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/test/org/apache/synapse/spi/injection/SendNowProcessorWithRuleTest.java?rev=376959&view=auto
==============================================================================
---
incubator/synapse/trunk/java/test/org/apache/synapse/spi/injection/SendNowProcessorWithRuleTest.java
(added)
+++
incubator/synapse/trunk/java/test/org/apache/synapse/spi/injection/SendNowProcessorWithRuleTest.java
Sat Feb 11 02:01:47 2006
@@ -0,0 +1,61 @@
+package org.apache.synapse.spi.injection;
+
+import junit.framework.TestCase;
+import org.apache.axis2.transport.http.SimpleHTTPServer;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.Options;
+import org.apache.axis2.om.OMElement;
+import org.apache.synapse.util.Axis2EnvSetup;
+
+/*
+ */
+public class SendNowProcessorWithRuleTest extends TestCase {
+ private SimpleHTTPServer synapseServer;
+ private SimpleHTTPServer axis2Server;
+ private EndpointReference targetEpr = new EndpointReference(
+ "http://127.0.0.1:5043/axis2/services/anonymous");
+
+ public void setUp() throws Exception {
+ synapseServer = new
SimpleHTTPServer("target/synapse-repository-sendnow",
+ 5043);
+ /**
+ * axis2Server is the one who holds the actual service
+ */
+ axis2Server =
+ new SimpleHTTPServer("target/synapse-repository-sendonAxis2",
+ 8090);
+ synapseServer.start();
+ axis2Server.start();
+ }
+
+ protected void tearDown() throws Exception {
+ synapseServer.stop();
+ axis2Server.stop();
+ }
+
+ public void testSendNowProcessor() throws Exception {
+ ServiceClient serviceClient = new ServiceClient(
+ Axis2EnvSetup.createConfigurationContextFromFileSystem(
+ "target/synapse-repository-sendnow"), null);
+ Options options = new Options();
+ options.setTo(targetEpr);
+ serviceClient.setOptions(options);
+ OMElement response = serviceClient
+ .sendReceive(Axis2EnvSetup.payloadNamedAdddressing());
+ assertEquals("Synapse Testing String_Response_With_Addressing",
+ response.getText());
+
+ }
+
+ public void testSendNowPingProcessor() throws Exception {
+ ServiceClient serviceClient = new ServiceClient(
+ Axis2EnvSetup.createConfigurationContextFromFileSystem(
+ "target/synapse-repository-sendnow"), null);
+ Options options = new Options();
+ options.setTo(targetEpr);
+ serviceClient.setOptions(options);
+ serviceClient.fireAndForget(Axis2EnvSetup.payloadNamedPing());
+
+ }
+}
Modified:
incubator/synapse/trunk/java/test/org/apache/synapse/util/Axis2EnvSetup.java
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/test/org/apache/synapse/util/Axis2EnvSetup.java?rev=376959&r1=376958&r2=376959&view=diff
==============================================================================
---
incubator/synapse/trunk/java/test/org/apache/synapse/util/Axis2EnvSetup.java
(original)
+++
incubator/synapse/trunk/java/test/org/apache/synapse/util/Axis2EnvSetup.java
Sat Feb 11 02:01:47 2006
@@ -110,6 +110,18 @@
return method;
}
+ public static OMElement payloadNamedPing() {
+ OMFactory fac = OMAbstractFactory.getOMFactory();
+ OMNamespace omNs = fac.createOMNamespace(
+ "urn:text-body", "ns");
+ OMElement method = fac.createOMElement("service", omNs);
+ OMElement value = fac.createOMElement("text_ping", omNs);
+ value.addChild(
+ fac.createText(value, "Synapse Testing String for Ping"));
+ method.addChild(value);
+ return method;
+ }
+
public static ConfigurationContext
createConfigurationContextFromFileSystem(String repository) throws AxisFault {
ConfigurationContextFactory fac = new ConfigurationContextFactory();
ConfigurationContext configContext =
Added: incubator/synapse/trunk/java/test/rules/synapse-sendnow.xml
URL:
http://svn.apache.org/viewcvs/incubator/synapse/trunk/java/test/rules/synapse-sendnow.xml?rev=376959&view=auto
==============================================================================
--- incubator/synapse/trunk/java/test/rules/synapse-sendnow.xml (added)
+++ incubator/synapse/trunk/java/test/rules/synapse-sendnow.xml Sat Feb 11
02:01:47 2006
@@ -0,0 +1,22 @@
+<synapse xmlns="http://ws.apache.org/ns/synapse">
+ <engage-addressing-in/>
+
+ <refdefine ref="ping"/>
+ <refdefine ref="addressing"/>
+
+ <define name="addressing">
+ <xpath expr="//ns:text_addressing" xmlns:ns="urn:text-body">
+ <header type="to"
value="http://localhost:8090/axis2/services/npe"/>
+ <header type="action"
value="urn:synapse/sendon-addressing-engage"/>
+ <sendnow/>
+ </xpath>
+ </define>
+
+ <define name="ping">
+ <xpath expr="//ns:text_ping" xmlns:ns="urn:text-body">
+ <header type="to"
value="http://localhost:8090/axis2/services/npe"/>
+ <header type="action" value="urn:synapse/ping"/>
+ <sendnow/>
+ </xpath>
+ </define>
+ </synapse>
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]