You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by sa...@apache.org on 2005/10/18 09:48:12 UTC

svn commit: r326046 - in /incubator/synapse/trunk/scratch/saminda/synapse2: ./ server/ server/modules/ server/services/ src/ src/org/ src/org/apache/ src/org/apache/synapse/ src/org/apache/synapse/client/ src/org/apache/synapse/dispatch/ src/org/apache...

Author: saminda
Date: Tue Oct 18 00:47:33 2005
New Revision: 326046

URL: http://svn.apache.org/viewcvs?rev=326046&view=rev
Log:
Second prototype for Synapse, based on modules and in-out approache. 
This is the way Axis2 developers thought, how Synapse should implement 
ontop of Axis2. 

Added:
    incubator/synapse/trunk/scratch/saminda/synapse2/
    incubator/synapse/trunk/scratch/saminda/synapse2/build.xml
    incubator/synapse/trunk/scratch/saminda/synapse2/server/
    incubator/synapse/trunk/scratch/saminda/synapse2/server/axis2.xml
    incubator/synapse/trunk/scratch/saminda/synapse2/server/modules/
    incubator/synapse/trunk/scratch/saminda/synapse2/server/services/
    incubator/synapse/trunk/scratch/saminda/synapse2/server/synapse.xml
    incubator/synapse/trunk/scratch/saminda/synapse2/server/web.xml
    incubator/synapse/trunk/scratch/saminda/synapse2/src/
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/SynapseConstants.java
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/client/
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/client/SampleClient.java
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/client/SimpleServer.java
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/dispatch/
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/dispatch/SyanpseDispatcher.java
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/handler/
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/handler/SynapseInHandler.java
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/mediators/
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/mediators/Mediator.java
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/modules/
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/modules/META-INF/
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/modules/META-INF/module.xml
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/modules/SynapseInModule.java
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/receivers/
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/receivers/DependencyManager.java
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/receivers/SynapseAbstractMessageReceiver.java
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/receivers/SynapseMessageReceiver.java
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapaseRuleBean.java
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapseRuleEngine.java
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapseRuleReader.java
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/sample/
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/sample/META-INF/
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/sample/META-INF/services.xml
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/sample/SimpleDummyMediator.java
    incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/sample/SimpleLoggingMediator.java
    incubator/synapse/trunk/scratch/saminda/synapse2/synapse.xml
    incubator/synapse/trunk/scratch/saminda/synapse2/test/
    incubator/synapse/trunk/scratch/saminda/synapse2/test/org/
    incubator/synapse/trunk/scratch/saminda/synapse2/test/org/apache/
    incubator/synapse/trunk/scratch/saminda/synapse2/test/org/apache/synapse/
    incubator/synapse/trunk/scratch/saminda/synapse2/test/org/apache/synapse/rules/
    incubator/synapse/trunk/scratch/saminda/synapse2/test/org/apache/synapse/rules/SynapseRuleReaderTest.java

Added: incubator/synapse/trunk/scratch/saminda/synapse2/build.xml
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/build.xml?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/build.xml (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/build.xml Tue Oct 18 00:47:33 2005
@@ -0,0 +1,73 @@
+<project name="synapse" default="compile" basedir=".">
+
+    <property name="src.dir" value="src"/>
+    <property name="build.dir" value="build"/>
+    <property name="lib.dir" value="./lib"/>
+    <property name="classes.dir" value="./classes"/>
+    <property name="jardrop.dir" value="${build.dir}/services"/>
+
+    <path id="classpath.library">
+        <fileset dir="${lib.dir}">
+            <include name="**/*.jar"/>
+        </fileset>
+    </path>
+
+    <target name="prepare">
+        <mkdir dir="${build.dir}"/>
+        <mkdir dir="${classes.dir}"/>
+        <mkdir dir="${jardrop.dir}"/>
+    </target>
+
+    <target name="clean">
+        <delete dir="${build.dir}"/>
+        <delete dir="${classes.dir}"/>
+        <delete dir="${jardrop.dir}"/>
+    </target>
+
+    <target name="compile" depends="prepare">
+        <javac srcdir="${src.dir}" destdir="${classes.dir}">
+            <classpath refid="classpath.library"/>
+        </javac>
+
+        <jar destfile="${jardrop.dir}/mediation.aar">
+            <fileset dir="${classes.dir}">
+                <include name="**/SimpleLoggingMediator.class"/>
+                <include name="**/SimpleDummyMediator.class"/>
+            </fileset>
+            <fileset dir="${src.dir}/org/apache/synapse/sample">
+                <include name="META-INF/services.xml"/>
+            </fileset>
+        </jar>
+        <jar destfile="${jardrop.dir}/synapse_prototype2.mar">
+            <fileset dir="${classes.dir}">
+                <include name="**/SynapseInHandler.class"/>
+            </fileset>
+            <fileset dir="${src.dir}/org/apache/synapse/modules">
+                <include name="META-INF/module.xml"/>
+            </fileset>
+        </jar>
+
+        <jar destfile="${jardrop.dir}/synapse_prototype_2.jar">
+            <fileset dir="${classes.dir}">
+                <include name="**/SynapseDispatcher.class"/>
+                <include name="**/DependencyManager.class"/>
+                <include name="**/SynapseAbstractMessageReceiver.class"/>
+                <include name="**/SynapseMessageReceiver.class"/>
+                <include name="**/SynapseRuleReader.class"/>
+                <include name="**/SynapseRuleEngine.class"/>
+                <include name="**/SynapaseRuleBean.class"/>
+            </fileset>
+        </jar>
+
+        <copy file="/home/saminda/myprojects/synapse2/build/services/mediation.aar"
+        todir="/home/saminda/myprojects/synapse2/server/services" overwrite="true"/>
+        <copy file="/home/saminda/myprojects/synapse2/build/services/synapse_prototype_2.jar"
+        todir="/home/saminda/myprojects/synapse2/server/lib" overwrite="true"/>
+        <copy file="/home/saminda/myprojects/synapse2/build/services/synapse_prototype2.mar"
+        todir="/home/saminda/myprojects/synapse2/server/modules" overwrite="true"/>
+        <copy file="/home/saminda/myprojects/synapse2/synapse.xml"
+        todir="/home/saminda/myprojects/synapse2/server/" overwrite="true"/>
+
+    </target>
+
+</project>

Added: incubator/synapse/trunk/scratch/saminda/synapse2/server/axis2.xml
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/server/axis2.xml?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/server/axis2.xml (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/server/axis2.xml Tue Oct 18 00:47:33 2005
@@ -0,0 +1,132 @@
+<axisconfig name="AxisJava2.0">
+    <!-- ================================================= -->
+    <!-- Parameters -->
+    <!-- ================================================= -->
+    <parameter name="hotdeployment" locked="false">true</parameter>
+    <parameter name="hotupdate" locked="false">false</parameter>
+    <parameter name="enableMTOM" locked="false">true</parameter>
+    <!-- Uncomment this to enable REST support -->
+    <!--    <parameter name="enableREST" locked="false">true</parameter>-->
+
+
+    <parameter name="userName" locked="false">admin</parameter>
+    <parameter name="password" locked="false">axis2</parameter>
+
+    <parameter name="seralizeLocation" locked="false">.</parameter>
+
+
+
+    <!--if you want to extract the service archive file and work with that please uncomment this-->
+    <!--else , it wont extract archive file or does not take into consideration if someone drop-->
+    <!--exploded directory into /service directory-->
+    <!--<parameter name="extractServiceArchive" locked="false">true</parameter>-->
+
+
+<!--    The way of adding listener to the system-->
+<!--    <listener class="org.apache.axis2.ObserverIMPL">-->
+<!--        <parameter name="RSS_URL" locked="false">http://127.0.0.1/rss</parameter>-->
+<!--    </listener>-->
+
+    <!--Registering Axis Storage Class if you comment this default one will -->
+    <!--does the job (org.apache.axis2.storage.impl.AxisMemoryStorage) , if you-->
+    <!--want to register new one write a class by extanding AbastractStorage-->
+    <!--and put that name here-->
+    <axisStorage class="org.apache.axis2.storage.impl.AxisMemoryStorage">
+        <parameter name="StoreLocation" locked="false">N:S</parameter>
+    </axisStorage>
+
+
+
+    <!-- ================================================= -->
+    <!-- Message Receivers -->
+    <!-- ================================================= -->
+    <!-- This is the Deafult Message Receiver for the Request Response style Operations -->
+    <messageReceiver mep="INOUT" class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
+
+    <!-- ================================================= -->
+    <!-- Transport Ins -->
+    <!-- ================================================= -->
+    <transportReceiver name="http" class="org.apache.axis2.transport.http.SimpleHTTPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+    <transportReceiver name="mail" class="org.apache.axis2.transport.mail.SimpleMailListener">
+          <parameter name="transport.mail.pop3.host" locked="false">127.0.0.1</parameter>
+          <parameter name="transport.mail.pop3.user" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.password" locked="false">axis2</parameter>
+          <parameter name="transport.mail.pop3.port" locked="false">110</parameter>
+          <parameter name="transport.mail.replyToAddress" locked="false">axis2@127.0.0.1</parameter>
+      </transportReceiver> -->
+
+    <transportReceiver name="tcp" class="org.apache.axis2.transport.tcp.TCPServer">
+        <parameter name="port" locked="false">6060</parameter>
+    </transportReceiver>
+
+    <!-- ================================================= -->
+    <!-- Transport Outs -->
+    <!-- ================================================= -->
+
+    <transportSender name="tcp" class="org.apache.axis2.transport.tcp.TCPTransportSender"/>
+    <transportSender name="local" class="org.apache.axis2.transport.local.LocalTransportSender"/>
+    <transportSender name="http" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+        <!--<parameter name="PROXY" proxy_host="smecube" proxy_port="3128" locked="true">anonymous:anonymous:anonymous</parameter>-->
+    </transportSender>
+    <transportSender name="https" class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
+        <parameter name="PROTOCOL" locked="false">HTTP/1.1</parameter>
+    </transportSender>
+
+    <!-- Uncomment this one with the appropriate papameters to enable the SMTP transport Receiver
+   <transportSender name="mail" class="org.apache.axis2.transport.mail.MailTransportSender">
+       <parameter name="transport.mail.smtp.host" locked="false">127.0.0.1</parameter>
+       <parameter name="transport.mail.smtp.user" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.password" locked="false">axis2</parameter>
+       <parameter name="transport.mail.smtp.port" locked="false">25</parameter>
+   </transportSender>
+   -->
+
+    <!-- ================================================= -->
+    <!-- Global Modules  -->
+    <!-- ================================================= -->
+    <!-- Comment this to disable Addressing -->
+    <module ref="addressing"/>
+    <module ref="synapse"/>
+
+
+    <!--Configuring module , providing paramters for modules whether they refer or not-->
+    <!--<moduleConfig name="addressing">-->
+         <!--<parameter name="addressingPara" locked="false">N/A</parameter>-->
+    <!--</moduleConfig>-->
+    
+    <!-- ================================================= -->
+    <!-- Phases  -->
+    <!-- ================================================= -->
+    <dispatchOrder>
+        <dispatcher name="SyanpseDispatcher" class="org.apache.synapse.dispatch.SyanpseDispatcher"/>
+    </dispatchOrder>
+
+    <phaseOrder type="inflow">
+        <!--  System pre defined phases       -->
+        <phase name="TransportIn"/>
+        <phase name="PreDispatch"/>
+        <phase name="Dispatch"/>
+        <phase name="PostDispatch"/>
+        <!--  System pre defined phases       -->
+        <!--   After Postdispatch phase module author or or service author can add any phase he want      -->
+        <phase name="log"/>
+    </phaseOrder>
+    <phaseOrder type="outflow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="INfaultflow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+    <phaseOrder type="Outfaultflow">
+        <!--      user can add his own phases to this area  -->
+        <phase name="userphase1"/>
+    </phaseOrder>
+</axisconfig>
+

Added: incubator/synapse/trunk/scratch/saminda/synapse2/server/synapse.xml
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/server/synapse.xml?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/server/synapse.xml (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/server/synapse.xml Tue Oct 18 00:47:33 2005
@@ -0,0 +1,14 @@
+<rules>
+    <rule>
+        <condition>*</condition>
+        <mediator>Log</mediator>
+    </rule>
+    <rule>
+        <condition>*</condition>
+        <mediator>Log_1</mediator>
+    </rule>
+    <!--<rule>-->
+        <!--<condition>*</condition>-->
+        <!--<mediator>Log</mediator>-->
+    <!--</rule>-->
+</rules>
\ No newline at end of file

Added: incubator/synapse/trunk/scratch/saminda/synapse2/server/web.xml
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/server/web.xml?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/server/web.xml (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/server/web.xml Tue Oct 18 00:47:33 2005
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
+
+<web-app>
+    <display-name>Apache-Axis2</display-name>
+    <servlet>
+        <servlet-name>AxisServlet</servlet-name>
+        <display-name>Apache-Axis Servlet</display-name>
+        <servlet-class>
+        org.apache.axis2.transport.http.AxisServlet
+        </servlet-class>
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/servlet/AxisServlet</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>*.jws</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/listServices</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/listService</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/listModules</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/globalModules</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/listPhases</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/engagingglobally</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/engageToService</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/adminlogin</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/viewGlobalHandlers</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/selectService</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/viewServiceHandlers</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/listoperation</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/listOperations</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/services/*</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/servicedit</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/removeService</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/editServicepara</url-pattern>
+    </servlet-mapping>
+    <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/selectServiceParaEdit</url-pattern>
+    </servlet-mapping>
+     <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/listServciceGroups</url-pattern>
+    </servlet-mapping>
+     <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/engageToServiceGroup</url-pattern>
+    </servlet-mapping>
+     <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/listContexts</url-pattern>
+    </servlet-mapping>
+     <servlet-mapping>
+        <servlet-name>AxisServlet</servlet-name>
+        <url-pattern>/logout</url-pattern>
+    </servlet-mapping>
+    <error-page>
+        <exception-type>org.apache.axis2.transport.http.server.AdminAppException</exception-type>
+        <location>/Error/AuthError.html</location>
+    </error-page>
+
+    <!--error-page>
+        <exception-type>java.lang.Exception</exception-type>
+        <location>/Error/GenError.html</location>
+    </error-page-->
+</web-app>

Added: incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/SynapseConstants.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/SynapseConstants.java?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/SynapseConstants.java (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/SynapseConstants.java Tue Oct 18 00:47:33 2005
@@ -0,0 +1,27 @@
+package org.apache.synapse;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: saminda
+ * Date: Oct 18, 2005
+ * Time: 10:15:00 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public interface SynapseConstants {
+    public static final String MEDEATOT_STATE = "mediatorState";
+    public static final String VALUE_TRUE="true";
+    public static final String VALUE_FALSE="false";
+    public static final String SYNAPSE_STATE="state";
+    public static final String RULE_STATE="ruleState";
+
+    public interface SynapseRuleReader {
+        public static final String CONDITION = "condition";
+        public static final String MEDIATOR = "mediator";
+    }
+    public interface SynapseRuleEngine {
+        public static final String GENERAT_RULE_ARRAY_LIST = "generalRules";
+        public static final String XPATH_RULE_ARRAY_LIST= "xpathRules";
+        public static final String SYNAPSE_RECEIVER = "receiver";
+        public static final String SYNAPSE_RULE_ENGINE= "synapseRuleEngine";
+    }
+}

Added: incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/client/SampleClient.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/client/SampleClient.java?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/client/SampleClient.java (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/client/SampleClient.java Tue Oct 18 00:47:33 2005
@@ -0,0 +1,66 @@
+package org.apache.synapse.client;
+
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.om.OMElement;
+import org.apache.axis2.om.OMFactory;
+import org.apache.axis2.om.OMAbstractFactory;
+import org.apache.axis2.om.OMNamespace;
+import org.apache.axis2.clientapi.MessageSender;
+import org.apache.axis2.Constants;
+import org.apache.axis2.AxisFault;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: saminda
+ * Date: Oct 10, 2005
+ * Time: 8:10:53 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class SampleClient {
+    private static EndpointReference targetEPR = new EndpointReference(
+            "http://localhost:8081/");
+
+    public static void main(String[] args) {
+        try {
+
+
+            MessageSender msgSender = new MessageSender();
+            msgSender.setTo(targetEPR);
+            msgSender.setSenderTransport(Constants.TRANSPORT_HTTP);
+
+            msgSender.send("mediate", new ClientUtil().getPingOMElement());
+
+        } catch (AxisFault axisFault) {
+            axisFault.printStackTrace();
+        }
+
+
+    }
+
+    public static class ClientUtil {
+
+        public OMElement getEchoOMElement() {
+            OMFactory fac = OMAbstractFactory.getOMFactory();
+            OMNamespace omNs = fac.createOMNamespace(
+                    "http://example1.org/example1", "example1");
+            OMElement method = fac.createOMElement("echo", omNs);
+            OMElement value = fac.createOMElement("Text", omNs);
+            value.addChild(fac.createText(value, "Axis2 Echo String "));
+            method.addChild(value);
+
+            return method;
+        }
+
+        public OMElement getPingOMElement() {
+            OMFactory fac = OMAbstractFactory.getOMFactory();
+            OMNamespace omNs = fac.createOMNamespace(
+                    "http://example1.org/example1", "example1");
+            OMElement method = fac.createOMElement("ping", omNs);
+            OMElement value = fac.createOMElement("Text", omNs);
+            value.addChild(fac.createText(value, "Axis2 Ping String "));
+            method.addChild(value);
+
+            return method;
+        }
+    }
+}

Added: incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/client/SimpleServer.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/client/SimpleServer.java?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/client/SimpleServer.java (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/client/SimpleServer.java Tue Oct 18 00:47:33 2005
@@ -0,0 +1,23 @@
+package org.apache.synapse.client;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.transport.http.SimpleHTTPServer;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: saminda
+ * Date: Oct 10, 2005
+ * Time: 8:10:44 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class SimpleServer {
+    public static void main(String[] args) {
+        try {
+            SimpleHTTPServer sas = new SimpleHTTPServer(
+                    "/home/saminda/myprojects/synapse2/server", 8081);
+            sas.start();
+        } catch (AxisFault axisFault) {
+            axisFault.printStackTrace();
+        }
+    }
+}

Added: incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/dispatch/SyanpseDispatcher.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/dispatch/SyanpseDispatcher.java?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/dispatch/SyanpseDispatcher.java (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/dispatch/SyanpseDispatcher.java Tue Oct 18 00:47:33 2005
@@ -0,0 +1,74 @@
+package org.apache.synapse.dispatch;
+
+import org.apache.axis2.engine.AbstractDispatcher;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.ServiceDescription;
+import org.apache.axis2.description.OperationDescription;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.AxisFault;
+import org.apache.synapse.SynapseConstants;
+import org.apache.synapse.rules.SynapaseRuleBean;
+
+import javax.xml.namespace.QName;
+import java.util.ArrayList;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: saminda
+ * Date: Oct 18, 2005
+ * Time: 10:10:16 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class SyanpseDispatcher extends AbstractDispatcher {
+    public static final QName NAME = new QName("http://synapse.ws.apache.org",
+            "SyanpseDispatcher");
+
+    protected String serviceName;
+    protected QName operationName;
+
+
+    public void initDispatcher() {
+        init(new HandlerDescription(NAME));
+    }
+
+    public ServiceDescription findService(MessageContext messageContext)
+            throws AxisFault {
+
+        String opName = (String) messageContext.getProperty(
+                SynapseConstants.SynapseRuleEngine.SYNAPSE_RECEIVER);
+
+        operationName = new QName(opName);
+        /**
+         *  Configuration only being done for the General Rule listing
+         *  need to do it for xpath rule listing too
+         */
+        ArrayList generalList = (ArrayList) messageContext.getProperty(
+                SynapseConstants.SynapseRuleEngine.GENERAT_RULE_ARRAY_LIST);
+        Integer state = (Integer) messageContext
+                .getProperty(SynapseConstants.SYNAPSE_STATE);
+        SynapaseRuleBean bean = null;
+        if (state.intValue() <= generalList.size()) {
+            bean = (SynapaseRuleBean) generalList.get(state.intValue() - 1);
+        }
+        serviceName = bean.getMediator();
+
+        AxisConfiguration registry =
+                messageContext.getSystemContext()
+                        .getAxisConfiguration();
+        return registry.getService(serviceName);
+
+    }
+
+    public OperationDescription findOperation(
+            ServiceDescription serviceDescription,
+            MessageContext messageContext) throws AxisFault {
+        OperationDescription operationDis;
+        if (operationName != null) {
+            operationDis = serviceDescription.getOperation(operationName);
+            return operationDis;
+        }
+        return null;
+    }
+
+}

Added: incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/handler/SynapseInHandler.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/handler/SynapseInHandler.java?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/handler/SynapseInHandler.java (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/handler/SynapseInHandler.java Tue Oct 18 00:47:33 2005
@@ -0,0 +1,69 @@
+package org.apache.synapse.handler;
+
+import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.AxisFault;
+import org.apache.synapse.rules.SynapseRuleEngine;
+import org.apache.synapse.SynapseConstants;
+import org.jaxen.JaxenException;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: saminda
+ * Date: Oct 18, 2005
+ * Time: 10:10:26 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class SynapseInHandler extends AbstractHandler implements Handler {
+
+
+    private SynapseRuleEngine ruleEngine;
+
+    private int synapseState = 0;
+
+    public SynapseInHandler() {
+        ruleEngine = new SynapseRuleEngine();
+    }
+
+    public void invoke(MessageContext messageContext) throws AxisFault {
+
+
+        Boolean loopBoolean = (Boolean) messageContext
+                .getProperty(SynapseConstants.MEDEATOT_STATE);
+        if (loopBoolean == null) {
+            messageContext.setProperty(
+                    SynapseConstants.SynapseRuleEngine.SYNAPSE_RECEIVER,
+                    ruleEngine.getOperationName());
+            ruleEngine.ruleConfiguration(messageContext);
+
+
+            try {
+                ruleEngine.validateXpath(messageContext);
+                messageContext.setProperty(
+                        SynapseConstants.SynapseRuleEngine.SYNAPSE_RULE_ENGINE,
+                        ruleEngine);
+            } catch (JaxenException e) {
+                throw new AxisFault(e);
+            }
+
+            messageContext
+                    .setProperty(SynapseConstants.SYNAPSE_STATE,
+                            synapseStateValidation(messageContext));
+        }
+
+    }
+
+
+    public Integer synapseStateValidation(MessageContext messageContext) {
+        Integer state = (Integer) messageContext
+                .getProperty(SynapseConstants.SYNAPSE_STATE);
+
+        if (state == null) {
+            synapseState = 1;
+            return new Integer(synapseState);
+        } else {
+            return state;
+        }
+    }
+}

Added: incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/mediators/Mediator.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/mediators/Mediator.java?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/mediators/Mediator.java (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/mediators/Mediator.java Tue Oct 18 00:47:33 2005
@@ -0,0 +1,15 @@
+package org.apache.synapse.mediators;
+
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.AxisFault;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: saminda
+ * Date: Oct 18, 2005
+ * Time: 11:28:57 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public interface Mediator {
+    public boolean mediate(MessageContext messageContext) throws AxisFault;
+}

Added: incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/modules/META-INF/module.xml
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/modules/META-INF/module.xml?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/modules/META-INF/module.xml (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/modules/META-INF/module.xml Tue Oct 18 00:47:33 2005
@@ -0,0 +1,7 @@
+<module name="synapse">
+    <inflow>
+        <handler name="synapseInHandler" class="org.apache.synapse.handler.SynapseInHandler">
+            <order phase="PreDispatch" after="AddressingInHandler"/>
+        </handler>
+    </inflow>
+</module>
\ No newline at end of file

Added: incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/modules/SynapseInModule.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/modules/SynapseInModule.java?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/modules/SynapseInModule.java (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/modules/SynapseInModule.java Tue Oct 18 00:47:33 2005
@@ -0,0 +1,22 @@
+package org.apache.synapse.modules;
+
+import org.apache.axis2.modules.Module;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.AxisFault;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: saminda
+ * Date: Oct 18, 2005
+ * Time: 10:44:59 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class SynapseInModule implements Module {
+    public void init(AxisConfiguration axisConfiguration) throws AxisFault {
+        System.out.println("Synapse Module engaged in PreDispatch Phase");
+    }
+
+    public void shutdown(AxisConfiguration axisConfiguration) throws AxisFault {
+
+    }
+}

Added: incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/receivers/DependencyManager.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/receivers/DependencyManager.java?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/receivers/DependencyManager.java (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/receivers/DependencyManager.java Tue Oct 18 00:47:33 2005
@@ -0,0 +1,50 @@
+package org.apache.synapse.receivers;
+
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.AxisFault;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: saminda
+ * Date: Oct 10, 2005
+ * Time: 5:44:52 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class DependencyManager {
+     private final static String MESSAGE_CONTEXT_MEDIATE_INJECTION_METHOD = "mediate";
+
+    public static Boolean mediatorBusinessLogicProvider(Object obj,
+                                                      MessageContext msgctx)
+            throws AxisFault {
+        Boolean returnValue = null;
+        try {
+            Class classToLoad = obj.getClass();
+            Method[] methods = classToLoad.getMethods();
+
+            for (int i = 0; i < methods.length; i++) {
+                if (MESSAGE_CONTEXT_MEDIATE_INJECTION_METHOD.equals(
+                        methods[i].getName()) &&
+                        methods[i].getParameterTypes().length == 1 &&
+                        methods[i].getParameterTypes()[0] ==
+                                MessageContext.class) {
+                    returnValue = (Boolean)methods[i].invoke(obj, new Object[]{msgctx});
+                }
+            }
+            /**
+             * return the mediator state
+             */
+            return returnValue;
+        } catch (SecurityException e) {
+            throw new AxisFault(e);
+        } catch (IllegalArgumentException e) {
+            throw new AxisFault(e);
+        } catch (IllegalAccessException e) {
+            throw new AxisFault(e);
+        } catch (InvocationTargetException e) {
+            throw new AxisFault(e);
+        }
+    }
+}

Added: incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/receivers/SynapseAbstractMessageReceiver.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/receivers/SynapseAbstractMessageReceiver.java?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/receivers/SynapseAbstractMessageReceiver.java (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/receivers/SynapseAbstractMessageReceiver.java Tue Oct 18 00:47:33 2005
@@ -0,0 +1,24 @@
+package org.apache.synapse.receivers;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.receivers.AbstractMessageReceiver;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: saminda
+ * Date: Oct 10, 2005
+ * Time: 5:54:59 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public abstract class SynapseAbstractMessageReceiver extends AbstractMessageReceiver {
+    protected Log log = LogFactory.getLog(getClass());
+
+    public abstract void invokeBusinessLogic(MessageContext inMessage) throws AxisFault;
+
+    public final void receive(final MessageContext messgeCtx) throws AxisFault {
+        invokeBusinessLogic(messgeCtx);
+    }
+}

Added: incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/receivers/SynapseMessageReceiver.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/receivers/SynapseMessageReceiver.java?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/receivers/SynapseMessageReceiver.java (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/receivers/SynapseMessageReceiver.java Tue Oct 18 00:47:33 2005
@@ -0,0 +1,135 @@
+package org.apache.synapse.receivers;
+
+import org.apache.axis2.engine.*;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.soap.SOAPEnvelope;
+import org.apache.axis2.om.OMElement;
+import org.apache.axis2.description.OperationDescription;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.wsdl.WSDLService;
+import org.apache.synapse.SynapseConstants;
+
+import java.lang.reflect.Method;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: saminda
+ * Date: Oct 10, 2005
+ * Time: 5:54:04 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class SynapseMessageReceiver extends SynapseAbstractMessageReceiver
+        implements MessageReceiver {
+
+    /**
+     * Field log
+     */
+    protected Log log = LogFactory.getLog(getClass());
+
+    /**
+     * Field scope
+     */
+    private String scope;
+
+    /**
+     * Field method
+     */
+    private Method method;
+
+    /**
+     * Field classLoader
+     */
+    private ClassLoader classLoader;
+
+    /**
+     * Constructor RawXMLProvider
+     */
+    public SynapseMessageReceiver() {
+        scope = Constants.APPLICATION_SCOPE;
+    }
+
+    public void invokeBusinessLogic(MessageContext msgContext)
+            throws AxisFault {
+        try {
+
+            // get the implementation class for the Web Service
+            Object obj = getTheImplementationObject(msgContext);
+
+            /**
+             * Injecting messageContext for medaite method
+             * Will not be on use in the M1
+             */
+
+            Integer oldSynapseState = (Integer) msgContext
+                    .getProperty(SynapseConstants.SYNAPSE_STATE);
+            Boolean mediatorState = DependencyManager
+                    .mediatorBusinessLogicProvider(obj, msgContext);
+
+            msgContext.setProperty(SynapseConstants.SYNAPSE_STATE,
+                    new Integer((oldSynapseState.intValue()) + 1));
+            msgContext.setProperty(SynapseConstants.MEDEATOT_STATE,
+                    mediatorState);
+
+            if (mediatorState.booleanValue()) {
+                /**
+                 * New AxisEngine is created and loops for more rules
+                 */
+                moreRules(msgContext);
+
+            } else {
+                /**
+                 * Mediation is successful and route the message to the relevant location.
+                 */
+            }
+
+        } catch (Exception e) {
+            throw AxisFault.makeFault(e);
+        }
+
+    }
+
+    private void moreRules(MessageContext returnMsgCtx)
+            throws AxisFault {
+
+        /**
+         * states related to Synapse
+         */
+        MessageContext newContext = new MessageContext(
+                returnMsgCtx.getSystemContext());
+        newContext.setProperty(SynapseConstants.MEDEATOT_STATE,
+                returnMsgCtx.getProperty(SynapseConstants.MEDEATOT_STATE));
+
+        newContext.setProperty(SynapseConstants.SYNAPSE_STATE,
+                returnMsgCtx.getProperty(SynapseConstants.SYNAPSE_STATE));
+        newContext.setProperty(SynapseConstants.VALUE_FALSE,
+                returnMsgCtx.getProperty(SynapseConstants.VALUE_FALSE));
+        newContext.setProperty(SynapseConstants.RULE_STATE,
+                returnMsgCtx.getProperty(SynapseConstants.RULE_STATE));
+        newContext.setProperty(
+                SynapseConstants.SynapseRuleEngine.SYNAPSE_RECEIVER,
+                returnMsgCtx.getProperty(
+                        SynapseConstants.SynapseRuleEngine.SYNAPSE_RECEIVER));
+        newContext.setProperty(
+                SynapseConstants.SynapseRuleEngine.GENERAT_RULE_ARRAY_LIST,
+                returnMsgCtx.getProperty(
+                        SynapseConstants.SynapseRuleEngine.GENERAT_RULE_ARRAY_LIST));
+        newContext.setServerSide(true);
+        newContext.setEnvelope(returnMsgCtx.getEnvelope());
+        newContext.setServiceContextID(returnMsgCtx.getServiceContextID());
+        /**
+         * need states realted to axis2 itsetlf
+         */
+
+
+        /**
+         * Need to understand the looping
+         */
+        AxisEngine engine = new AxisEngine(returnMsgCtx.getSystemContext());
+        engine.receive(newContext);
+
+    }
+}

Added: incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapaseRuleBean.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapaseRuleBean.java?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapaseRuleBean.java (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapaseRuleBean.java Tue Oct 18 00:47:33 2005
@@ -0,0 +1,30 @@
+package org.apache.synapse.rules;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: saminda
+ * Date: Oct 18, 2005
+ * Time: 10:11:31 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class SynapaseRuleBean {
+    private String condition; // this is the xpath of the messagte
+    private String mediator; // is the mediator we need at this point
+
+    public void setCondition(String condition) {
+        this.condition = condition;
+    }
+
+    public void setMediate(String mediatation) {
+        this.mediator = mediatation;
+    }
+
+    public String getCondition() {
+        return condition;
+    }
+
+    public String getMediator() {
+        return mediator;
+    }
+
+}

Added: incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapseRuleEngine.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapseRuleEngine.java?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapseRuleEngine.java (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapseRuleEngine.java Tue Oct 18 00:47:33 2005
@@ -0,0 +1,129 @@
+package org.apache.synapse.rules;
+
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.om.xpath.AXIOMXPath;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.synapse.SynapseConstants;
+import org.jaxen.JaxenException;
+import org.jaxen.XPath;
+import org.jaxen.SimpleNamespaceContext;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: saminda
+ * Date: Oct 18, 2005
+ * Time: 10:12:17 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class SynapseRuleEngine {
+    /**
+     * this is the reference parameter to the MessageReceiver that
+     * should be used
+     */
+    private String operationName = "receiver";
+
+    private SynapseRuleReader ruleReader;
+
+    private ArrayList mediatorList;
+
+    private ArrayList generalRuleList; // contains the beans of Rules
+    private ArrayList xpathRuleList;   //contains the beans of Rules
+
+    public SynapseRuleEngine() {
+        ruleReader = new SynapseRuleReader();
+        mediatorList = new ArrayList();
+        generalRuleList = new ArrayList();
+        xpathRuleList = new ArrayList();
+    }
+
+    public void ruleConfiguration(MessageContext msgCtx) throws AxisFault {
+        AxisConfiguration registry = msgCtx.getSystemContext()
+                .getAxisConfiguration();
+
+        HashMap serviceMap = registry.getServices();
+
+        ruleReader.populateRules();
+
+        Iterator ite = serviceMap.entrySet().iterator();
+        Map.Entry entry = null;
+        String key = null;
+        while (ite.hasNext()) {
+            entry = (Map.Entry) ite.next();
+            key = (String) entry.getKey();
+
+            Iterator iterator = ruleReader.getRulesIterator();
+
+            while (iterator.hasNext()) {
+                SynapaseRuleBean bean = (SynapaseRuleBean) iterator.next();
+
+                if (bean.getMediator().equalsIgnoreCase(key)) {
+                    this.mediatorList.add(key);
+                }
+            }
+
+        }
+    }
+
+    public void setOperationName(String operationName) {
+        this.operationName = operationName;
+    }
+
+    public String getOperationName() {
+        return operationName;
+    }
+
+    public ArrayList getArrayofMediatorList() {
+        return mediatorList;
+    }
+
+    public ArrayList getArrayofGeneralRuleList() {
+        return generalRuleList;
+    }
+
+    public ArrayList getArrayofXpathRuleList() {
+        return xpathRuleList;
+    }
+
+    public void validateXpath(MessageContext messageContext)
+            throws JaxenException {
+        Iterator ruleIte = ruleReader.getRulesIterator();
+
+        while (ruleIte.hasNext()) {
+            // genertal rule handling with "*"
+            SynapaseRuleBean bean = (SynapaseRuleBean) ruleIte.next();
+
+            if (bean.getCondition().equals("*")) {
+                // this could be more than this.
+                this.generalRuleList.add(bean);
+            } else {
+                // which deal with the xpath of the message
+                String xpathExpression = bean.getCondition();
+                XPath xpath = new AXIOMXPath(xpathExpression);
+
+                //settingup the namespace which needed to be dealt with care
+                SimpleNamespaceContext nameSpace = new SimpleNamespaceContext();
+                //add the relevent name spaces
+                xpath.setNamespaceContext(nameSpace);
+
+                boolean xpathBool = xpath.booleanValueOf(nameSpace);
+
+                if (xpathBool) {
+                    this.xpathRuleList.add(bean);
+                }
+            }
+        }
+        messageContext.setProperty(
+                SynapseConstants.SynapseRuleEngine.GENERAT_RULE_ARRAY_LIST,
+                generalRuleList);
+        messageContext.setProperty(
+                SynapseConstants.SynapseRuleEngine.XPATH_RULE_ARRAY_LIST,
+                xpathRuleList);
+    }
+
+}

Added: incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapseRuleReader.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapseRuleReader.java?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapseRuleReader.java (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/rules/SynapseRuleReader.java Tue Oct 18 00:47:33 2005
@@ -0,0 +1,104 @@
+package org.apache.synapse.rules;
+
+import org.apache.axis2.om.OMElement;
+import org.apache.axis2.om.OMFactory;
+import org.apache.axis2.om.OMAbstractFactory;
+import org.apache.axis2.om.impl.llom.builder.StAXOMBuilder;
+import org.apache.axis2.AxisFault;
+import org.apache.synapse.SynapseConstants;
+
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.io.InputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: saminda
+ * Date: Oct 18, 2005
+ * Time: 10:12:26 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class SynapseRuleReader {
+    public static final String RULE_XML = "synapse.xml";
+    private ArrayList ruleList;
+
+    public SynapseRuleReader() {
+        ruleList = new ArrayList();
+    }
+
+    public  OMElement readRules()
+            throws AxisFault {
+
+        try {
+            File absolutePath = new File(".");
+            File inFile = new File(absolutePath.getAbsolutePath(), RULE_XML);
+            InputStream in = new FileInputStream(inFile);
+            if (in == null) {
+                return null;
+            } else {
+                XMLStreamReader parser = XMLInputFactory.newInstance()
+                        .createXMLStreamReader(in);
+                OMFactory fac = OMAbstractFactory.getOMFactory();
+                StAXOMBuilder staxOMBuilder = new StAXOMBuilder(fac, parser);
+                OMElement element = staxOMBuilder.getDocumentElement();
+                element.build();
+                return element;
+            }
+//
+
+        } catch (XMLStreamException e) {
+            throw new AxisFault(e);
+        } catch (FileNotFoundException e) {
+            throw new AxisFault(e);
+        }
+    }
+
+    public void populateRules() throws
+            AxisFault {
+
+        OMElement rules = readRules();
+        if (rules != null) {
+            this.fillBean(rules);
+        }
+
+    }
+
+    private boolean fillBean(OMElement ele) {
+        Iterator children = ele.getChildElements();
+        while (children.hasNext()) {
+            OMElement rule = (OMElement) children.next();
+            OMElement condition = null;
+            OMElement mediation = null;
+            Iterator childite = rule.getChildElements();
+            while (childite.hasNext()) {
+                OMElement childele = (OMElement) childite.next();
+                if (childele.getLocalName().equalsIgnoreCase(
+                        SynapseConstants.SynapseRuleReader.CONDITION)) {
+                    condition = childele;
+                }
+                if (childele.getLocalName().equalsIgnoreCase(
+                        SynapseConstants.SynapseRuleReader.MEDIATOR)) {
+                    mediation = childele;
+                }
+            }
+            SynapaseRuleBean ruleBean = new SynapaseRuleBean();
+            if (condition != null && mediation != null) {
+                ruleBean.setCondition(condition.getText());
+                ruleBean.setMediate(mediation.getText());
+                ruleList.add(ruleBean);
+            }
+        }
+        return true;
+    }
+
+    public Iterator getRulesIterator() {
+        return ruleList.iterator();
+    }
+
+}

Added: incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/sample/META-INF/services.xml
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/sample/META-INF/services.xml?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/sample/META-INF/services.xml (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/sample/META-INF/services.xml Tue Oct 18 00:47:33 2005
@@ -0,0 +1,35 @@
+<serviceGroup>
+
+    <description>
+        services.xml taken as the "xml formatted" rule provider.
+    </description>
+
+    <service name="Log">
+        <!-- selecting the mediator; so ServiceClass is the Mediator -->
+        <parameter name="ServiceClass" locked="false">
+            org.apache.synapse.sample.SimpleLoggingMediator</parameter>
+
+        <!-- this is the mock service, which is going to be called-->
+        <!-- because service level message receivers are not allowed to add -->
+
+        <operation name="receiver">
+            <messageReceiver
+                    class="org.apache.synapse.receivers.SynapseMessageReceiver"/>
+        </operation>
+    </service>
+    <service name="Log_1">
+        <!-- selecting the mediator; so ServiceClass is the Mediator -->
+        <parameter name="ServiceClass" locked="false">
+            org.apache.synapse.sample.SimpleDummyMediator</parameter>
+
+        <!-- this is the mock service, which is going to be called-->
+        <!-- because service level message receivers are not allowed to add -->
+
+        <operation name="receiver">
+            <messageReceiver
+                    class="org.apache.synapse.receivers.SynapseMessageReceiver"/>
+        </operation>
+    </service>
+
+
+</serviceGroup>
\ No newline at end of file

Added: incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/sample/SimpleDummyMediator.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/sample/SimpleDummyMediator.java?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/sample/SimpleDummyMediator.java (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/sample/SimpleDummyMediator.java Tue Oct 18 00:47:33 2005
@@ -0,0 +1,25 @@
+package org.apache.synapse.sample;
+
+import org.apache.synapse.mediators.Mediator;
+import org.apache.synapse.SynapseConstants;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.AxisFault;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: saminda
+ * Date: Oct 18, 2005
+ * Time: 1:05:14 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class SimpleDummyMediator implements Mediator {
+
+    public boolean mediate(MessageContext messageContext) throws AxisFault {
+
+        System.out.println(
+                "you are in the dummy mediator..logging facility ... now\n");
+        Boolean retbool = (Boolean) messageContext
+                .getProperty(SynapseConstants.VALUE_FALSE);
+        return  false;
+    }
+}

Added: incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/sample/SimpleLoggingMediator.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/sample/SimpleLoggingMediator.java?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/sample/SimpleLoggingMediator.java (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/src/org/apache/synapse/sample/SimpleLoggingMediator.java Tue Oct 18 00:47:33 2005
@@ -0,0 +1,19 @@
+package org.apache.synapse.sample;
+
+import org.apache.synapse.mediators.Mediator;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.AxisFault;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: saminda
+ * Date: Oct 18, 2005
+ * Time: 11:30:59 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class SimpleLoggingMediator implements Mediator {
+    public boolean mediate(MessageContext messageContext) throws AxisFault {
+        System.out.println("i'm at the sample logging mediator");
+        return true;
+    }
+}

Added: incubator/synapse/trunk/scratch/saminda/synapse2/synapse.xml
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/synapse.xml?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/synapse.xml (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/synapse.xml Tue Oct 18 00:47:33 2005
@@ -0,0 +1,14 @@
+<rules>
+    <rule>
+        <condition>*</condition>
+        <mediator>Log</mediator>
+    </rule>
+    <rule>
+        <condition>*</condition>
+        <mediator>Log_1</mediator>
+    </rule>
+    <!--<rule>-->
+        <!--<condition>*</condition>-->
+        <!--<mediator>Log</mediator>-->
+    <!--</rule>-->
+</rules>
\ No newline at end of file

Added: incubator/synapse/trunk/scratch/saminda/synapse2/test/org/apache/synapse/rules/SynapseRuleReaderTest.java
URL: http://svn.apache.org/viewcvs/incubator/synapse/trunk/scratch/saminda/synapse2/test/org/apache/synapse/rules/SynapseRuleReaderTest.java?rev=326046&view=auto
==============================================================================
--- incubator/synapse/trunk/scratch/saminda/synapse2/test/org/apache/synapse/rules/SynapseRuleReaderTest.java (added)
+++ incubator/synapse/trunk/scratch/saminda/synapse2/test/org/apache/synapse/rules/SynapseRuleReaderTest.java Tue Oct 18 00:47:33 2005
@@ -0,0 +1,36 @@
+package org.apache.synapse.rules;
+
+import junit.framework.TestCase;
+import org.apache.axis2.om.OMElement;
+
+import java.util.Iterator;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: saminda
+ * Date: Oct 18, 2005
+ * Time: 10:27:12 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class SynapseRuleReaderTest extends TestCase {
+
+    public void testRuleReader() throws Exception {
+        SynapseRuleReader reader = new SynapseRuleReader();
+        OMElement readDoc = reader.readRules();
+        assertNotNull(readDoc);
+
+        reader.populateRules();
+
+        Iterator ite = null;
+
+        assertNotNull(ite = reader.getRulesIterator());
+
+        while (ite.hasNext()) {
+            SynapaseRuleBean bean = (SynapaseRuleBean)ite.next();
+            assertEquals("*",bean.getCondition());
+            assertEquals("Log",bean.getMediator());
+        }
+
+
+    }
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org