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]

Reply via email to