[jboss-svn-commits] JBL Code SVN: r23353 - in labs/jbossesb/workspace/skeagh/runtime/src: main/java/org/jboss/esb/filter and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Oct 7 13:01:06 EDT 2008


Author: tfennelly
Date: 2008-10-07 13:01:06 -0400 (Tue, 07 Oct 2008)
New Revision: 23353

Added:
   labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/filter/MVELEvaluator.java
   labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_02.xml
   labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_03.xml
   labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_04.xml
   labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_05.xml
   labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_015/
   labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_015/01-deployment.xml
   labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_015/RoutingTest.java
   labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_015/message_v1.xml
   labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_015/message_v2.xml
Modified:
   labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/deploy/config/digest/FilterDecisionTreeBuilder.java
   labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/FilterConfigTest.java
   labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_01.xml
Log:
filtering tests

Modified: labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/deploy/config/digest/FilterDecisionTreeBuilder.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/deploy/config/digest/FilterDecisionTreeBuilder.java	2008-10-07 16:01:55 UTC (rev 23352)
+++ labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/deploy/config/digest/FilterDecisionTreeBuilder.java	2008-10-07 17:01:06 UTC (rev 23353)
@@ -19,10 +19,10 @@
  */
 package org.jboss.esb.deploy.config.digest;
 
+import org.jboss.esb.deploy.DeploymentException;
+import org.jboss.esb.deploy.config.ConfigUtil;
 import org.jboss.esb.filter.FilterDecisionNode;
 import org.jboss.esb.routing.FilterEvaluator;
-import org.jboss.esb.deploy.config.ConfigUtil;
-import org.jboss.esb.deploy.DeploymentException;
 import org.milyn.SmooksException;
 import org.milyn.cdr.annotation.ConfigParam;
 import org.milyn.container.ExecutionContext;
@@ -31,8 +31,8 @@
 import org.milyn.javabean.repository.BeanRepositoryManager;
 import org.milyn.xml.DomUtils;
 import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
 
+import java.util.List;
 import java.util.Properties;
 import java.util.Stack;
 
@@ -139,11 +139,11 @@
     private Properties getProperties(final Element element)
     {
         Properties properties = new Properties();
-        NodeList propertyList = element.getElementsByTagName("property");
+        List<Element> propertyList = DomUtils.getElements(element, "property", null);
 
-        for (int i = 0; i < propertyList.getLength(); i++)
+        for (int i = 0; i < propertyList.size(); i++)
         {
-            Element propertyElement = (Element) propertyList.item(i);
+            Element propertyElement = propertyList.get(i);
             String propertyName = DomUtils.getAttributeValue(propertyElement, "name");
             String propertyValue = DomUtils.getAllText(propertyElement, true);
 

Added: labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/filter/MVELEvaluator.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/filter/MVELEvaluator.java	                        (rev 0)
+++ labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/filter/MVELEvaluator.java	2008-10-07 17:01:06 UTC (rev 23353)
@@ -0,0 +1,111 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2005-2008, JBoss Inc.
+ */
+package org.jboss.esb.filter;
+
+import org.apache.log4j.Logger;
+import org.jboss.esb.annotations.Property;
+import org.jboss.esb.context.AddressingContext;
+import org.jboss.esb.context.DeploymentContext;
+import org.jboss.esb.context.InvocationContext;
+import org.jboss.esb.context.FaultContext;
+import org.jboss.esb.message.Message;
+import org.jboss.esb.routing.FilterEvaluator;
+import org.milyn.expression.MVELExpressionEvaluator;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * MVEL {@link org.jboss.esb.routing.FilterEvaluator}.
+ * <p/>
+ * Available expression context objects:
+ * <ul>
+ *  <li><b>message</b>:  The {@link Message}.</li>
+ *  <li><b>invCtx</b>:  The {@link InvocationContext}.</li>
+ *  <li><b>invParams</b>: The Invocation Parameter {@link Map}.</li>
+ *  <li><b>addrCtx</b>:  The {@link AddressingContext}.</li>
+ *  <li><b>deplCtx</b>:  The {@link DeploymentContext}.</li>
+ *  <li><b>faultCtx</b>:  The {@link FaultContext}.</li>
+ * </ul>
+ *
+ * <h3>Example</h3>
+ * <pre>
+ * &lt;filter inRouter="MyServiceInRouter"&gt;
+ *     &lt;evaluator class="org.jboss.esb.filter.MVELEvaluator"&gt;
+ *         &lt;property name="expression"&gt;
+ *             (message.payload.indexof("&lt;version&gt;1.0&lt;/version&gt;") != -1)
+ *         &lt;/property&gt;
+ *     &lt;/evaluator&gt;
+ *     &lt;to serviceCategory="Outrouters" serviceName="MyServicev1.0" /&gt;
+ * &lt;/filter&gt;
+ * &lt;filter inRouter="MyServiceInRouter"&gt;
+ *     &lt;evaluator class="org.jboss.esb.filter.MVELEvaluator"&gt;
+ *         &lt;property name="expression"&gt;
+ *             (message.payload.indexof("&lt;version&gt;1.1&lt;/version&gt;") != -1)
+ *         &lt;/property&gt;
+ *     &lt;/evaluator&gt;
+ *     &lt;to serviceCategory="Outrouters" serviceName="MyServicev1.1" /&gt;
+ * &lt;/filter&gt;
+ * </pre>
+ *
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class MVELEvaluator implements FilterEvaluator
+{
+    /**
+     * Logger.
+     */
+    private static Logger logger = Logger.getLogger(MVELEvaluator.class);
+
+    /**
+     * MVEL expression evaluator.
+     */
+    @Property
+    private MVELExpressionEvaluator expression;
+
+    /**
+     * Filter the message.
+     *
+     * @param message The message to be evaluated.
+     * @return True if the message is to be filtered through.  False if the message is to be filtered out.
+     */
+    public final boolean filterMessage(final Message message)
+    {
+        Map contextObject = new HashMap();
+
+        contextObject.put("message", message);
+        contextObject.put("invCtx", InvocationContext.getContext().getAll());
+        contextObject.put("invParams", InvocationContext.getContext().getInvocationParameters());
+        contextObject.put("addrCtx", AddressingContext.getContext());
+        contextObject.put("deplCtx", DeploymentContext.getContext());
+        contextObject.put("faultCtx", InvocationContext.getContext().getFaultContext());
+
+        try
+        {
+            return expression.eval(contextObject);
+        }
+        catch (Exception e)
+        {
+            logger.error("Error while evaluating MVEL filter expression.", e);
+        }
+
+        return false;
+    }
+}


Property changes on: labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/filter/MVELEvaluator.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/FilterConfigTest.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/FilterConfigTest.java	2008-10-07 16:01:55 UTC (rev 23352)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/FilterConfigTest.java	2008-10-07 17:01:06 UTC (rev 23353)
@@ -22,8 +22,12 @@
 import junit.framework.TestCase;
 import org.jboss.esb.deploy.DeploymentException;
 import org.jboss.esb.deploy.config.digest.DefaultConfigurationDigester;
+import org.jboss.esb.message.Message;
+import org.jboss.esb.routing.FilterEvaluator;
+import org.jboss.esb.context.InvocationContext;
 
 import java.io.IOException;
+import java.util.List;
 
 /**
  * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
@@ -31,13 +35,148 @@
 public class FilterConfigTest extends TestCase
 {
 
-    public void test() throws DeploymentException, IOException
+    /**
+     * 1 Filter.
+     */
+    public void test_filter_01() throws DeploymentException, IOException
     {
         DeploymentUnit deploymentUnit = digest("jbossesb-inrouters_filters_01.xml");
-        System.out.println("hi");
-        
+        InboundRouterConfig inRouter = deploymentUnit.getInboundRouter("inrouter1");
+        List<InboundRouterFilterConfig> filters = inRouter.getFilters();
+
+        assertEquals(1, filters.size());
+        assertEquals("A:AA", filters.get(0).getTo().toString());
+        assertEquals("B:BB", filters.get(0).getReplyTo().toString());
+        assertEquals("C:CC", filters.get(0).getFaultTo().toString());
+
+        InvocationContext.setContext(new InvocationContext());
+        try
+        {
+            FilterEvaluator evaluator = filters.get(0).getEvaluator();
+            assertTrue(evaluator.filterMessage(new Message("hello")));
+            assertFalse(evaluator.filterMessage(new Message("goodbye")));
+        }
+        finally
+        {
+            InvocationContext.setContext(null);
+        }
     }
 
+    /**
+     * 2 Filters.
+     */
+    public void test_filter_02() throws DeploymentException, IOException
+    {
+        DeploymentUnit deploymentUnit = digest("jbossesb-inrouters_filters_02.xml");
+        InboundRouterConfig inRouter = deploymentUnit.getInboundRouter("inrouter1");
+        List<InboundRouterFilterConfig> filters = inRouter.getFilters();
+
+        assertEquals(2, filters.size());
+        assertEquals("A:AA", filters.get(0).getTo().toString());
+        assertEquals("B:BB", filters.get(0).getReplyTo().toString());
+        assertEquals("C:CC", filters.get(0).getFaultTo().toString());
+        assertEquals("1:11", filters.get(1).getTo().toString());
+        assertEquals("2:22", filters.get(1).getReplyTo().toString());
+        assertEquals("3:33", filters.get(1).getFaultTo().toString());
+
+        InvocationContext.setContext(new InvocationContext());
+        try
+        {
+            FilterEvaluator evaluator = filters.get(0).getEvaluator();
+            assertTrue(evaluator.filterMessage(new Message("hello")));
+            assertFalse(evaluator.filterMessage(new Message("goodbye")));
+
+            evaluator = filters.get(1).getEvaluator();
+            assertFalse(evaluator.filterMessage(new Message("hello")));
+            assertTrue(evaluator.filterMessage(new Message("goodbye")));            
+        }
+        finally
+        {
+            InvocationContext.setContext(null);
+        }
+    }
+
+    /**
+     * Nested Evaluators (AND)
+     */
+    public void test_filter_03() throws DeploymentException, IOException
+    {
+        DeploymentUnit deploymentUnit = digest("jbossesb-inrouters_filters_03.xml");
+        InboundRouterConfig inRouter = deploymentUnit.getInboundRouter("inrouter1");
+        List<InboundRouterFilterConfig> filters = inRouter.getFilters();
+
+        assertEquals(1, filters.size());
+        assertEquals("A:AA", filters.get(0).getTo().toString());
+
+        InvocationContext.setContext(new InvocationContext());
+        try
+        {
+            FilterEvaluator evaluator = filters.get(0).getEvaluator();
+
+            assertTrue(evaluator.filterMessage(new Message("hello world!")));
+            assertFalse(evaluator.filterMessage(new Message("hello")));
+            assertFalse(evaluator.filterMessage(new Message("world")));
+        }
+        finally
+        {
+            InvocationContext.setContext(null);
+        }
+    }
+
+    /**
+     * Nested Evaluators (OR)
+     */
+    public void test_filter_04() throws DeploymentException, IOException
+    {
+        DeploymentUnit deploymentUnit = digest("jbossesb-inrouters_filters_04.xml");
+        InboundRouterConfig inRouter = deploymentUnit.getInboundRouter("inrouter1");
+        List<InboundRouterFilterConfig> filters = inRouter.getFilters();
+
+        assertEquals(1, filters.size());
+        assertEquals("A:AA", filters.get(0).getTo().toString());
+
+        InvocationContext.setContext(new InvocationContext());
+        try
+        {
+            FilterEvaluator evaluator = filters.get(0).getEvaluator();
+
+            assertTrue(evaluator.filterMessage(new Message("hello world!")));
+            assertTrue(evaluator.filterMessage(new Message("hello")));
+            assertTrue(evaluator.filterMessage(new Message("world")));
+        }
+        finally
+        {
+            InvocationContext.setContext(null);
+        }
+    }
+
+    /**
+     * Nested Evaluators (OR)
+     */
+    public void test_filter_05() throws DeploymentException, IOException
+    {
+        DeploymentUnit deploymentUnit = digest("jbossesb-inrouters_filters_05.xml");
+        InboundRouterConfig inRouter = deploymentUnit.getInboundRouter("inrouter1");
+        List<InboundRouterFilterConfig> filters = inRouter.getFilters();
+
+        assertEquals(1, filters.size());
+        assertEquals("A:AA", filters.get(0).getTo().toString());
+
+        InvocationContext.setContext(new InvocationContext());
+        try
+        {
+            FilterEvaluator evaluator = filters.get(0).getEvaluator();
+
+            assertTrue(evaluator.filterMessage(new Message("hello world!")));
+            assertFalse(evaluator.filterMessage(new Message("hello")));
+            assertFalse(evaluator.filterMessage(new Message("world")));
+        }
+        finally
+        {
+            InvocationContext.setContext(null);
+        }
+    }
+
     private DeploymentUnit digest(String config) throws IOException, DeploymentException
     {
         DefaultConfigurationDigester digester = new DefaultConfigurationDigester();

Modified: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_01.xml
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_01.xml	2008-10-07 16:01:55 UTC (rev 23352)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_01.xml	2008-10-07 17:01:06 UTC (rev 23353)
@@ -6,6 +6,9 @@
             <inRouter name="inrouter1" class="org.jboss.esb.deploy.config.MyInRouter" />
             <filters>
                 <filter inRouter="inrouter1">
+                    <evaluator class="org.jboss.esb.filter.MVELEvaluator">
+                        <property name="expression">message.payload == "hello"</property>
+                    </evaluator>
                     <to serviceCategory="A" serviceName="AA" />
                     <replyTo serviceCategory="B" serviceName="BB" />
                     <faultTo serviceCategory="C" serviceName="CC" />

Copied: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_02.xml (from rev 23350, labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_01.xml)
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_02.xml	                        (rev 0)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_02.xml	2008-10-07 17:01:06 UTC (rev 23353)
@@ -0,0 +1,33 @@
+<jbossesb xmlns="http://www.jboss.org/jbossesb/xsd/jbossesb-5.0.xsd">
+
+    <routing>
+
+        <inRouters>
+            <inRouter name="inrouter1" class="org.jboss.esb.deploy.config.MyInRouter" />
+            <filters>
+                <filter inRouter="inrouter1">
+                    <evaluator class="org.jboss.esb.filter.MVELEvaluator">
+                        <property name="expression">message.payload == "hello"</property>
+                    </evaluator>
+                    <to serviceCategory="A" serviceName="AA" />
+                    <replyTo serviceCategory="B" serviceName="BB" />
+                    <faultTo serviceCategory="C" serviceName="CC" />
+                </filter>
+                <filter inRouter="inrouter1">
+                    <evaluator class="org.jboss.esb.filter.MVELEvaluator">
+                        <property name="expression">message.payload == "goodbye"</property>
+                    </evaluator>
+                    <to serviceCategory="1" serviceName="11" />
+                    <replyTo serviceCategory="2" serviceName="22" />
+                    <faultTo serviceCategory="3" serviceName="33" />
+                </filter>
+            </filters>
+        </inRouters>
+
+    </routing>
+
+    <services>
+        <service serviceCategory="A" serviceName="A" serviceDescription="A" class="org.jboss.esb.TestService" />
+    </services>
+    
+</jbossesb>
\ No newline at end of file

Added: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_03.xml
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_03.xml	                        (rev 0)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_03.xml	2008-10-07 17:01:06 UTC (rev 23353)
@@ -0,0 +1,26 @@
+<jbossesb xmlns="http://www.jboss.org/jbossesb/xsd/jbossesb-5.0.xsd">
+
+    <routing>
+
+        <inRouters>
+            <inRouter name="inrouter1" class="org.jboss.esb.deploy.config.MyInRouter" />
+            <filters>
+                <filter inRouter="inrouter1">
+                    <evaluator class="org.jboss.esb.filter.MVELEvaluator">
+                        <property name="expression">message.payload.indexOf("hello") != -1</property>
+                        <evaluator class="org.jboss.esb.filter.MVELEvaluator">
+                            <property name="expression">message.payload.indexOf("world") != -1</property>
+                        </evaluator>
+                    </evaluator>
+                    <to serviceCategory="A" serviceName="AA" />
+                </filter>
+            </filters>
+        </inRouters>
+
+    </routing>
+
+    <services>
+        <service serviceCategory="A" serviceName="A" serviceDescription="A" class="org.jboss.esb.TestService" />
+    </services>
+    
+</jbossesb>
\ No newline at end of file


Property changes on: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_03.xml
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:eol-style
   + native

Added: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_04.xml
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_04.xml	                        (rev 0)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_04.xml	2008-10-07 17:01:06 UTC (rev 23353)
@@ -0,0 +1,31 @@
+<jbossesb xmlns="http://www.jboss.org/jbossesb/xsd/jbossesb-5.0.xsd">
+
+    <routing>
+
+        <inRouters>
+            <inRouter name="inrouter1" class="org.jboss.esb.deploy.config.MyInRouter" />
+            <filters>
+                <filter inRouter="inrouter1">
+                    <evaluator>
+                        <evaluator class="org.jboss.esb.filter.MVELEvaluator">
+                            <property name="expression">message.payload.indexOf("hello") != -1</property>
+                            <evaluator class="org.jboss.esb.filter.MVELEvaluator">
+                                <property name="expression">message.payload.indexOf("world") != -1</property>
+                            </evaluator>
+                        </evaluator>
+                        <evaluator class="org.jboss.esb.filter.MVELEvaluator">
+                            <property name="expression">true</property>
+                        </evaluator>
+                    </evaluator>
+                    <to serviceCategory="A" serviceName="AA" />
+                </filter>
+            </filters>
+        </inRouters>
+
+    </routing>
+
+    <services>
+        <service serviceCategory="A" serviceName="A" serviceDescription="A" class="org.jboss.esb.TestService" />
+    </services>
+    
+</jbossesb>
\ No newline at end of file


Property changes on: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_04.xml
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:eol-style
   + native

Added: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_05.xml
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_05.xml	                        (rev 0)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_05.xml	2008-10-07 17:01:06 UTC (rev 23353)
@@ -0,0 +1,31 @@
+<jbossesb xmlns="http://www.jboss.org/jbossesb/xsd/jbossesb-5.0.xsd">
+
+    <routing>
+
+        <inRouters>
+            <inRouter name="inrouter1" class="org.jboss.esb.deploy.config.MyInRouter" />
+            <filters>
+                <filter inRouter="inrouter1">
+                    <evaluator>
+                        <evaluator class="org.jboss.esb.filter.MVELEvaluator">
+                            <property name="expression">message.payload.indexOf("hello") != -1</property>
+                            <evaluator class="org.jboss.esb.filter.MVELEvaluator">
+                                <property name="expression">message.payload.indexOf("world") != -1</property>
+                            </evaluator>
+                        </evaluator>
+                        <evaluator class="org.jboss.esb.filter.MVELEvaluator">
+                            <property name="expression">false</property>
+                        </evaluator>
+                    </evaluator>
+                    <to serviceCategory="A" serviceName="AA" />
+                </filter>
+            </filters>
+        </inRouters>
+
+    </routing>
+
+    <services>
+        <service serviceCategory="A" serviceName="A" serviceDescription="A" class="org.jboss.esb.TestService" />
+    </services>
+    
+</jbossesb>
\ No newline at end of file


Property changes on: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_filters_05.xml
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:eol-style
   + native

Copied: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_015/01-deployment.xml (from rev 23350, labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_014/01-deployment.xml)
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_015/01-deployment.xml	                        (rev 0)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_015/01-deployment.xml	2008-10-07 17:01:06 UTC (rev 23353)
@@ -0,0 +1,35 @@
+<jbossesb xmlns="http://www.jboss.org/jbossesb/xsd/jbossesb-5.0.xsd">
+    
+    <routing>
+        <inRouters>
+            <inRouter name="inrouter" class="org.jboss.esb.TestInboundRouter" />
+
+            <filters>
+                <!-- Route v1 message to Service:A -->
+                <filter inRouter="inrouter">
+                    <evaluator class="org.jboss.esb.filter.MVELEvaluator">
+                        <property name="expression"><!-- message.payload.indexOf("<version>1</version>") != -1 --></property>
+                    </evaluator>
+                    <to serviceCategory="Service" serviceName="A" />
+                </filter>
+
+                <!-- Route v2 message to Service:B -->
+                <filter inRouter="inrouter">
+                    <evaluator class="org.jboss.esb.filter.MVELEvaluator">
+                        <property name="expression"><!-- message.payload.indexOf("<version>2</version>") != -1 --></property>
+                    </evaluator>
+                    <to serviceCategory="Service" serviceName="B" />
+                </filter>
+            </filters>
+
+        </inRouters>
+    </routing>
+
+    <services>
+
+        <service serviceCategory="Service" serviceName="A" serviceDescription="A Service" class="org.jboss.esb.TestService" />
+        <service serviceCategory="Service" serviceName="B" serviceDescription="B Service" class="org.jboss.esb.TestService" />
+
+    </services>
+
+</jbossesb>
\ No newline at end of file

Copied: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_015/RoutingTest.java (from rev 23350, labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_014/RoutingTest.java)
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_015/RoutingTest.java	                        (rev 0)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_015/RoutingTest.java	2008-10-07 17:01:06 UTC (rev 23353)
@@ -0,0 +1,81 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2005-2008, JBoss Inc.
+ */
+package org.jboss.esb.routing.scenario_015;
+
+import junit.framework.TestCase;
+import org.jboss.esb.TestInboundRouter;
+import org.jboss.esb.TestService;
+import org.jboss.esb.deploy.DeploymentRuntime;
+import org.jboss.esb.deploy.DeploymentUtil;
+import org.jboss.esb.service.ServiceName;
+import org.jboss.esb.test.JmsTestRunner;
+import org.milyn.io.StreamUtils;
+
+/**
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class RoutingTest extends TestCase
+{
+
+    /*
+     * The message should go:
+     *      [inrouter_ServiceA -> ServiceA -> outrouter_ServiceA] -|
+     *                                       [DeadLetterService] <-|
+     *
+     * RoutingException inside the outrouter... should route to the DLS.
+     */
+    public void test() throws Exception
+    {
+        new JmsTestRunner() {
+            @Override
+            public void test() throws Exception
+            {
+                ServiceName serviceNameA = new ServiceName("Service", "A");
+                ServiceName serviceNameB = new ServiceName("Service", "B");
+                DeploymentRuntime deployment1 = DeploymentUtil.createRuntime(getClass().getResourceAsStream("01-deployment.xml"));
+
+                deployment1.setDeploymentName("deployment1");
+                deployment1.setDeploymentId("deployment1-Id");
+                deployment1.deploy();
+                try
+                {
+                    TestInboundRouter inrouter = (TestInboundRouter) DeploymentUtil.getInboundRouter("inrouter", deployment1).getRouter();
+                    TestService serviceA = (TestService) DeploymentUtil.getService(serviceNameA, deployment1).getService();
+                    TestService serviceB = (TestService) DeploymentUtil.getService(serviceNameB, deployment1).getService();
+                    String messageV1 = StreamUtils.readStreamAsString(getClass().getResourceAsStream("message_v1.xml"));
+                    String messageV2 = StreamUtils.readStreamAsString(getClass().getResourceAsStream("message_v2.xml"));
+
+                    inrouter.sendMessage(messageV1);
+                    inrouter.sendMessage(messageV2);
+
+                    serviceA.waitForMessage(10000);
+                    serviceB.waitForMessage(10000);
+
+                    assertTrue(StreamUtils.compareCharStreams(messageV1, (String) serviceA.getMessage()));
+                    assertTrue(StreamUtils.compareCharStreams(messageV2, (String) serviceB.getMessage()));
+                }
+                finally
+                {
+                    deployment1.undeploy();
+                }
+            }
+        }.run();
+    }
+}
\ No newline at end of file

Added: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_015/message_v1.xml
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_015/message_v1.xml	                        (rev 0)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_015/message_v1.xml	2008-10-07 17:01:06 UTC (rev 23353)
@@ -0,0 +1,4 @@
+<x>
+    <version>1</version>
+    <data>abcd</data>
+</x>
\ No newline at end of file


Property changes on: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_015/message_v1.xml
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:eol-style
   + native

Added: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_015/message_v2.xml
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_015/message_v2.xml	                        (rev 0)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_015/message_v2.xml	2008-10-07 17:01:06 UTC (rev 23353)
@@ -0,0 +1,4 @@
+<x>
+    <version>2</version>
+    <data>1234</data>
+</x>
\ No newline at end of file


Property changes on: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_015/message_v2.xml
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:eol-style
   + native




More information about the jboss-svn-commits mailing list