Index: src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java =================================================================== --- src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java (revision 33579) +++ src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java (working copy) @@ -259,6 +259,42 @@ results.get( 0 ).getClass().getName() ); } + public void testCollectFromMVELAfterOr() throws Exception { + + + // read in the source + final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_CollectFromMVELAfterOr.drl" ) ); + RuleBase ruleBase = loadRuleBase( reader ); + + StatefulSession wm = ruleBase.newStatefulSession(); + List results = new ArrayList(); + + wm.setGlobal( "results", + results ); + + Person jill = new Person( "jill" ); + + Person bob = new Person( "bob" ); + List addresses = new ArrayList(); + addresses.add(new Address( "a" )); + addresses.add(new Address( "b" )); + addresses.add(new Address( "c" )); + bob.setAddresses(addresses); + + wm.insert( jill ); + wm.insert( bob ); + + wm = SerializationHelper.getSerialisedStatefulSession( wm ); + results = (List) wm.getGlobal( "results" ); + + wm.fireAllRules(); + + Assert.assertEquals( 1, + results.size() ); + Assert.assertEquals( 3, + ((Collection) results.get( 0 )).size() ); + } + public void testExistsWithBinding() throws Exception { final PackageBuilder builder = new PackageBuilder(); builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_ExistsWithBindings.drl" ) ) ); Index: src/test/resources/org/drools/integrationtests/test_CollectFromMVELAfterOr.drl =================================================================== --- src/test/resources/org/drools/integrationtests/test_CollectFromMVELAfterOr.drl (revision 0) +++ src/test/resources/org/drools/integrationtests/test_CollectFromMVELAfterOr.drl (revision 0) @@ -0,0 +1,20 @@ +package org.drools.test; + +import org.drools.Address; +import org.drools.Person; +import java.util.ArrayList; + +dialect "mvel" + +global java.util.List results; + +rule "After Or Evals Collect from MVEL" +salience 70 + when + $jill : Person( name == "jill" ) + $bob : Person( name == "bob" ) + ( eval( $jill != null ) || eval( $bob != null ) ) + $addressList : ArrayList(size > 2) from collect( Address() from $bob.addresses ) + then + results.add($addressList); +end \ No newline at end of file