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