[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