[jboss-svn-commits] JBL Code SVN: r35129 - in labs/jbossrules/soa_branches/BRMS-5.0.x: drools-compiler/src/test/resources/org/drools/integrationtests and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Sep 14 01:27:34 EDT 2010


Author: tkobayas at redhat.com
Date: 2010-09-14 01:27:33 -0400 (Tue, 14 Sep 2010)
New Revision: 35129

Added:
   labs/jbossrules/soa_branches/BRMS-5.0.x/drools-compiler/src/test/java/org/drools/integrationtests/CatchExceptionFromQueuedActionTest.java
   labs/jbossrules/soa_branches/BRMS-5.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_catchExceptionFromQueuedAction.drl
   labs/jbossrules/soa_branches/BRMS-5.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_catchExceptionFromQueuedAction.rf
Modified:
   labs/jbossrules/soa_branches/BRMS-5.0.x/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
Log:
BRMS-350 backport to 5.0.x branch

Added: labs/jbossrules/soa_branches/BRMS-5.0.x/drools-compiler/src/test/java/org/drools/integrationtests/CatchExceptionFromQueuedActionTest.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.x/drools-compiler/src/test/java/org/drools/integrationtests/CatchExceptionFromQueuedActionTest.java	                        (rev 0)
+++ labs/jbossrules/soa_branches/BRMS-5.0.x/drools-compiler/src/test/java/org/drools/integrationtests/CatchExceptionFromQueuedActionTest.java	2010-09-14 05:27:33 UTC (rev 35129)
@@ -0,0 +1,60 @@
+package org.drools.integrationtests;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.RuntimeDroolsException;
+import org.drools.Message;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderError;
+import org.drools.builder.KnowledgeBuilderErrors;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.logger.KnowledgeRuntimeLogger;
+import org.drools.logger.KnowledgeRuntimeLoggerFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+
+/**
+ * Catch RuntimeException thrown from queued action. See https://jira.jboss.org/browse/JBRULES-2204
+ */
+public class CatchExceptionFromQueuedActionTest extends TestCase {
+
+    public void testCatchRuntimeExceptionFromQueuedAction() throws Exception {
+        // load up the knowledge base
+        KnowledgeBase kbase = readKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        // go !
+        Message message = new Message();
+        message.setMessage("Hello World");
+        message.setStatus(Message.HELLO);
+        ksession.insert(message);
+        try {
+            ksession.fireAllRules();
+            fail("RuntimeException is not caught.");
+        } catch (RuntimeDroolsException e) {
+            assertTrue(e.getCause() instanceof RuntimeException);
+        }
+    }
+
+    private KnowledgeBase readKnowledgeBase() throws Exception {
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        kbuilder.add(ResourceFactory.newClassPathResource("test_catchExceptionFromQueuedAction.drl", CatchExceptionFromQueuedActionTest.class), ResourceType.DRL);
+        kbuilder.add(ResourceFactory.newClassPathResource("test_catchExceptionFromQueuedAction.rf", CatchExceptionFromQueuedActionTest.class), ResourceType.DRF);
+        KnowledgeBuilderErrors errors = kbuilder.getErrors();
+        if (errors.size() > 0) {
+            for (KnowledgeBuilderError error: errors) {
+                System.err.println(error);
+            }
+            throw new IllegalArgumentException("Could not parse knowledge.");
+        }
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
+        return kbase;
+    }
+
+}

Added: labs/jbossrules/soa_branches/BRMS-5.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_catchExceptionFromQueuedAction.drl
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_catchExceptionFromQueuedAction.drl	                        (rev 0)
+++ labs/jbossrules/soa_branches/BRMS-5.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_catchExceptionFromQueuedAction.drl	2010-09-14 05:27:33 UTC (rev 35129)
@@ -0,0 +1,18 @@
+package org.drools.integrationtests
+ 
+import org.drools.Message;
+
+rule "StartRuleflow"
+	salience 100
+	when
+	then 
+		kcontext.getKnowledgeRuntime().startProcess("JBRULES2204");
+end
+
+rule "Hello World"
+    ruleflow-group "group1"
+	when
+		m : Message( status == Message.HELLO, myMessage : message )
+	then
+		System.out.println( myMessage ); 
+end

Added: labs/jbossrules/soa_branches/BRMS-5.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_catchExceptionFromQueuedAction.rf
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_catchExceptionFromQueuedAction.rf	                        (rev 0)
+++ labs/jbossrules/soa_branches/BRMS-5.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_catchExceptionFromQueuedAction.rf	2010-09-14 05:27:33 UTC (rev 35129)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?> 
+<process xmlns="http://drools.org/drools-5.0/process"
+         xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+         xs:schemaLocation="http://drools.org/drools-5.0/process drools-processes-5.0.xsd"
+         type="RuleFlow" name="flow" id="JBRULES2204" package-name="org.drools.integrationtests" >
+
+  <header>
+  </header>
+
+  <nodes>
+    <start id="1" name="Start" x="86" y="74" width="48" height="48" />
+    <end id="2" name="End" x="433" y="291" width="48" height="48" />
+    <actionNode id="3" name="Script" x="219" y="188" width="80" height="48" >
+        <action type="expression" dialect="java" >throw new RuntimeException();</action>
+    </actionNode>
+    <ruleSet id="4" name="Rule" x="254" y="106" width="80" height="48" ruleFlowGroup="group1" />
+  </nodes>
+
+  <connections>
+    <connection from="3" to="2" />
+    <connection from="4" to="3" />
+    <connection from="1" to="4" />
+  </connections>
+
+</process>

Modified: labs/jbossrules/soa_branches/BRMS-5.0.x/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.x/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java	2010-09-13 22:37:56 UTC (rev 35128)
+++ labs/jbossrules/soa_branches/BRMS-5.0.x/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java	2010-09-14 05:27:33 UTC (rev 35129)
@@ -1496,14 +1496,7 @@
                     try {
                         action.execute( this );
                     } catch ( Exception e ) {
-                        if ( e instanceof RuntimeDroolsException ) {
-                            // rethrow the exception
-                            throw ((RuntimeDroolsException) e);
-                        } else {
-                            System.err.println( "************************************************" );
-                            System.err.println( "Exception caught while executing action: " + action.toString() );
-                            e.printStackTrace();
-                        }
+                        throw new RuntimeDroolsException("Unexpected exception executing action "+action.toString(), e);
                     }
                 }
                 evaluatingActionQueue = false;



More information about the jboss-svn-commits mailing list