[jboss-svn-commits] JBL Code SVN: r18645 - in labs/jbossrules/branches/4.0.x: drools-compiler/src/test/resources/org/drools/integrationtests and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Feb 29 16:11:28 EST 2008
Author: tirelli
Date: 2008-02-29 16:11:28 -0500 (Fri, 29 Feb 2008)
New Revision: 18645
Added:
labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_NPEOnMVELPredicate.drl
Modified:
labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/common/SingleBetaConstraints.java
labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java
labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/reteoo/CollectNode.java
labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/reteoo/FromNode.java
Log:
JBRULES-1492: fixing NPE
Modified: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2008-02-29 19:29:15 UTC (rev 18644)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2008-02-29 21:11:28 UTC (rev 18645)
@@ -4813,4 +4813,43 @@
}
+ public void testNPEOnMVELAlphaPredicates() throws Exception {
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_NPEOnMVELPredicate.drl" ) ) );
+ final Package pkg = builder.getPackage();
+
+ final RuleBase ruleBase = getRuleBase();
+ ruleBase.addPackage( pkg );
+ final StatefulSession session = ruleBase.newStatefulSession();
+
+ final List list = new ArrayList();
+ session.setGlobal( "results",
+ list );
+
+ Cheese cheese = new Cheese( "stilton", 10 );
+ Cheesery cheesery = new Cheesery();
+ cheesery.addCheese( cheese );
+ Person bob = new Person( "bob", "stilton" );
+ Cheese cheese2 = new Cheese();
+ bob.setCheese( cheese2 );
+
+ FactHandle p = session.insert( bob );
+ FactHandle c = session.insert( cheesery );
+
+ session.fireAllRules();
+
+ assertEquals( "should not have fired",
+ 0,
+ list.size() );
+
+ cheese2.setType( "stilton" );
+
+ session.update( p, bob );
+ session.fireAllRules();
+
+ assertEquals( 1,
+ list.size() );
+
+ }
+
}
Added: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_NPEOnMVELPredicate.drl
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_NPEOnMVELPredicate.drl (rev 0)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_NPEOnMVELPredicate.drl 2008-02-29 21:11:28 UTC (rev 18645)
@@ -0,0 +1,11 @@
+package org.drools;
+
+global java.util.List results;
+
+rule "test NPE on mvel predicate"
+when
+ $p : Person( cheese.type != null )
+ $q : Cheese( ) from $p.cheese
+then
+ results.add( $q );
+end
\ No newline at end of file
Modified: labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/common/SingleBetaConstraints.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/common/SingleBetaConstraints.java 2008-02-29 19:29:15 UTC (rev 18644)
+++ labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/common/SingleBetaConstraints.java 2008-02-29 21:11:28 UTC (rev 18645)
@@ -27,6 +27,7 @@
import org.drools.rule.ContextEntry;
import org.drools.rule.VariableConstraint;
import org.drools.spi.BetaNodeFieldConstraint;
+import org.drools.util.AbstractHashTable;
import org.drools.util.FactHashTable;
import org.drools.util.FactHandleIndexHashTable;
import org.drools.util.LinkedList;
Modified: labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java 2008-02-29 19:29:15 UTC (rev 18644)
+++ labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java 2008-02-29 21:11:28 UTC (rev 18645)
@@ -194,7 +194,9 @@
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
final AccumulateMemory memory = (AccumulateMemory) workingMemory.getNodeMemory( this );
- memory.betaMemory.getTupleMemory().remove( leftTuple );
+ if( memory.betaMemory.getTupleMemory().remove( leftTuple ) == null) {
+ return;
+ }
final AccumulateResult accresult = (AccumulateResult) memory.betaMemory.getCreatedHandles().remove( leftTuple );
// if tuple was propagated
Modified: labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/reteoo/CollectNode.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/reteoo/CollectNode.java 2008-02-29 19:29:15 UTC (rev 18644)
+++ labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/reteoo/CollectNode.java 2008-02-29 21:11:28 UTC (rev 18645)
@@ -175,7 +175,9 @@
final InternalWorkingMemory workingMemory) {
final CollectMemory memory = (CollectMemory) workingMemory.getNodeMemory( this );
- memory.betaMemory.getTupleMemory().remove( leftTuple );
+ if( memory.betaMemory.getTupleMemory().remove( leftTuple ) == null ) {
+ return;
+ }
CollectResult result = (CollectResult) memory.betaMemory.getCreatedHandles().remove( leftTuple );
final InternalFactHandle handle = result.handle;
Modified: labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/reteoo/FromNode.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/reteoo/FromNode.java 2008-02-29 19:29:15 UTC (rev 18644)
+++ labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/reteoo/FromNode.java 2008-02-29 21:11:28 UTC (rev 18645)
@@ -118,6 +118,10 @@
final FromMemory memory = (FromMemory) workingMemory.getNodeMemory( this );
final ReteTuple tuple = memory.betaMemory.getTupleMemory().remove( leftTuple );
+ if ( tuple == null ) {
+ return;
+ }
+
final LinkedList list = (LinkedList) memory.betaMemory.getCreatedHandles().remove( tuple );
// if tuple was propagated
if ( list != null ) {
More information about the jboss-svn-commits
mailing list