You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2007/06/28 09:56:24 UTC

svn commit: r551490 - in /incubator/servicemix/trunk/deployables/serviceengines/servicemix-drools/src: main/java/org/apache/servicemix/drools/DroolsEndpoint.java test/java/org/apache/servicemix/drools/DroolsComponentTest.java test/resources/fibonacci.drl

Author: gnodet
Date: Thu Jun 28 00:56:23 2007
New Revision: 551490

URL: http://svn.apache.org/viewvc?view=rev&rev=551490
Log:
SM-985: Allow additional beans to be injected in the rules memory from the xbean.xml

Modified:
    incubator/servicemix/trunk/deployables/serviceengines/servicemix-drools/src/main/java/org/apache/servicemix/drools/DroolsEndpoint.java
    incubator/servicemix/trunk/deployables/serviceengines/servicemix-drools/src/test/java/org/apache/servicemix/drools/DroolsComponentTest.java
    incubator/servicemix/trunk/deployables/serviceengines/servicemix-drools/src/test/resources/fibonacci.drl

Modified: incubator/servicemix/trunk/deployables/serviceengines/servicemix-drools/src/main/java/org/apache/servicemix/drools/DroolsEndpoint.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/deployables/serviceengines/servicemix-drools/src/main/java/org/apache/servicemix/drools/DroolsEndpoint.java?view=diff&rev=551490&r1=551489&r2=551490
==============================================================================
--- incubator/servicemix/trunk/deployables/serviceengines/servicemix-drools/src/main/java/org/apache/servicemix/drools/DroolsEndpoint.java (original)
+++ incubator/servicemix/trunk/deployables/serviceengines/servicemix-drools/src/main/java/org/apache/servicemix/drools/DroolsEndpoint.java Thu Jun 28 00:56:23 2007
@@ -19,6 +19,7 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.net.URL;
+import java.util.Map;
 
 import javax.jbi.JBIException;
 import javax.jbi.management.DeploymentException;
@@ -48,6 +49,7 @@
     private Resource ruleBaseResource;
     private URL ruleBaseURL;
     private NamespaceContext namespaceContext;
+    private Map<String, Object> globals;
 
     public DroolsEndpoint() {
         super();
@@ -117,6 +119,20 @@
         this.namespaceContext = namespaceContext;
     }
 
+    /**
+     * @return the variables
+     */
+    public Map<String, Object> getGlobals() {
+        return globals;
+    }
+
+    /**
+     * @param variables the variables to set
+     */
+    public void setGlobals(Map<String, Object> variables) {
+        this.globals = variables;
+    }
+
     public void validate() throws DeploymentException {
         super.validate();
         if (ruleBase == null && ruleBaseResource == null && ruleBaseURL == null) {
@@ -172,5 +188,10 @@
 
     protected void populateWorkingMemory(WorkingMemory memory, MessageExchange exchange) throws Exception {
         memory.setGlobal("jbi", new JbiHelper(this, exchange, memory));
+        if (globals != null) {
+            for (Map.Entry<String, Object> e : globals.entrySet()) {
+                memory.setGlobal(e.getKey(), e.getValue());
+            }
+        }
     }
 }

Modified: incubator/servicemix/trunk/deployables/serviceengines/servicemix-drools/src/test/java/org/apache/servicemix/drools/DroolsComponentTest.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/deployables/serviceengines/servicemix-drools/src/test/java/org/apache/servicemix/drools/DroolsComponentTest.java?view=diff&rev=551490&r1=551489&r2=551490
==============================================================================
--- incubator/servicemix/trunk/deployables/serviceengines/servicemix-drools/src/test/java/org/apache/servicemix/drools/DroolsComponentTest.java (original)
+++ incubator/servicemix/trunk/deployables/serviceengines/servicemix-drools/src/test/java/org/apache/servicemix/drools/DroolsComponentTest.java Thu Jun 28 00:56:23 2007
@@ -16,6 +16,8 @@
  */
 package org.apache.servicemix.drools;
 
+import java.util.HashMap;
+
 import javax.jbi.messaging.ExchangeStatus;
 import javax.jbi.messaging.InOnly;
 import javax.jbi.messaging.InOut;
@@ -170,6 +172,8 @@
         DroolsEndpoint endpoint = new DroolsEndpoint(drools.getServiceUnit(),
                                                      new QName("drools"), "endpoint");
         endpoint.setRuleBaseResource(new ClassPathResource("fibonacci.drl"));
+        endpoint.setGlobals(new HashMap<String, Object>());
+        endpoint.getGlobals().put("max", 100);
         drools.setEndpoints(new DroolsEndpoint[] {endpoint });
         jbi.activateComponent(drools, "servicemix-drools");
         
@@ -183,6 +187,14 @@
         Element e = new SourceTransformer().toDOMElement(me.getOutMessage());
         assertEquals("result", e.getLocalName());
         assertEquals("12586269025", e.getTextContent());
+        client.done(me);
+
+        me = client.createInOutExchange();
+        me.setService(new QName("drools"));
+        me.getInMessage().setContent(new StringSource("<fibonacci>150</fibonacci>"));
+        me.getInMessage().setProperty("prop", Boolean.TRUE);
+        client.sendSync(me);
+        assertNotNull(me.getFault());
         client.done(me);
         
         Thread.sleep(50);

Modified: incubator/servicemix/trunk/deployables/serviceengines/servicemix-drools/src/test/resources/fibonacci.drl
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/deployables/serviceengines/servicemix-drools/src/test/resources/fibonacci.drl?view=diff&rev=551490&r1=551489&r2=551490
==============================================================================
--- incubator/servicemix/trunk/deployables/serviceengines/servicemix-drools/src/test/resources/fibonacci.drl (original)
+++ incubator/servicemix/trunk/deployables/serviceengines/servicemix-drools/src/test/resources/fibonacci.drl Thu Jun 28 00:56:23 2007
@@ -23,6 +23,7 @@
 import org.apache.servicemix.drools.fibonacci.Request;
 
 global org.apache.servicemix.drools.model.JbiHelper jbi;
+global java.lang.Integer max;
 
 rule Init
 	when
@@ -32,8 +33,13 @@
 		String t = $me.getIn().getContent().getTextContent();
 		int v = Integer.parseInt( t );
 		jbi.getLogger().debug("request value: " + v);
-		assert( new Request( v ) );
-		assert( new Fibonacci( v ) );
+		if (v > max.intValue()) {
+			jbi.getLogger().debug("Value too high");
+			jbi.fault( "<error/>" );
+		} else {
+			assert( new Request( v ) );
+			assert( new Fibonacci( v ) );
+		}
 end
 
 rule Answer