[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