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


Reply via email to