[jboss-svn-commits] JBL Code SVN: r15064 - in labs/jbossrules/trunk: 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
Wed Sep 12 15:46:28 EDT 2007
Author: tirelli
Date: 2007-09-12 15:46:28 -0400 (Wed, 12 Sep 2007)
New Revision: 15064
Added:
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Logger.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/WorkingMemoryLogger.java
Log:
JBRULES-1156: Fixing NPE on working memory logger
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2007-09-12 19:21:22 UTC (rev 15063)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2007-09-12 19:46:28 UTC (rev 15064)
@@ -70,6 +70,7 @@
import org.drools.TestParam;
import org.drools.WorkingMemory;
import org.drools.Cheesery.Maturity;
+import org.drools.audit.WorkingMemoryFileLogger;
import org.drools.base.ClassObjectFilter;
import org.drools.common.AbstractWorkingMemory;
import org.drools.compiler.DrlParser;
@@ -4058,7 +4059,34 @@
list.get( 0 ) );
assertSame( item22,
list.get( 1 ) );
+ }
+
+ public void testWorkingMemoryLoggerWithUnbalancedBranches() throws Exception {
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Logger.drl" ) ) );
+ final Package pkg = builder.getPackage();
+
+ final RuleBase ruleBase = getRuleBase();
+ ruleBase.addPackage( pkg );
+
+ final WorkingMemory wm = ruleBase.newStatefulSession();
+ try {
+ final WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger( wm );
+ logger.setFileName( "testLogger" );
+
+ wm.fireAllRules();
+
+ wm.insert( new Cheese( "a", 10 ) );
+ wm.insert( new Cheese( "b", 11 ) );
+
+ wm.fireAllRules();
+
+// logger.writeToDisk();
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail( "No exception should be raised ");
+ }
}
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Logger.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Logger.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Logger.drl 2007-09-12 19:46:28 UTC (rev 15064)
@@ -0,0 +1,13 @@
+package org.drools;
+
+rule "test logger"
+when
+ ( or
+ not Cheese( type == "a" )
+ (and $a : Cheese( type == "a" )
+ $b : Cheese( type == "b" )
+ )
+ )
+then
+ // rule fires
+end
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Logger.drl
___________________________________________________________________
Name: svn:executable
+ *
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/WorkingMemoryLogger.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/WorkingMemoryLogger.java 2007-09-12 19:21:22 UTC (rev 15063)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/audit/WorkingMemoryLogger.java 2007-09-12 19:46:28 UTC (rev 15064)
@@ -19,6 +19,7 @@
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import org.drools.WorkingMemoryEventManager;
import org.drools.FactHandle;
@@ -247,9 +248,9 @@
private String extractDeclarations(final Activation activation, final WorkingMemory workingMemory) {
final StringBuffer result = new StringBuffer();
final Tuple tuple = activation.getTuple();
- final Declaration[] declarations = activation.getRule().getDeclarations();
- for ( int i = 0, length = declarations.length; i < length; i++ ) {
- final Declaration declaration = declarations[i];
+ final Map declarations = activation.getSubRule().getOuterDeclarations();
+ for ( Iterator it = declarations.values().iterator(); it.hasNext(); ) {
+ final Declaration declaration = (Declaration) it.next();
final FactHandle handle = tuple.get( declaration );
if ( handle instanceof InternalFactHandle ) {
final InternalFactHandle handleImpl = (InternalFactHandle) handle;
@@ -271,7 +272,7 @@
result.append( ")" );
}
}
- if ( i < declarations.length - 1 ) {
+ if ( it.hasNext() ) {
result.append( "; " );
}
}
More information about the jboss-svn-commits
mailing list