[jboss-svn-commits] JBL Code SVN: r13799 - in labs/jbossrules/trunk/drools-core/src: test/java/org/drools/reteoo and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jul 26 17:40:16 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-07-26 17:40:16 -0400 (Thu, 26 Jul 2007)
New Revision: 13799
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultAgenda.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AgendaTest.java
Log:
JBRULES-1033 clearAgenda removes scheduled activations twice, resulting in a NullPointerException
-Scheduled Activation is only removed once now.
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultAgenda.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultAgenda.java 2007-07-26 20:37:08 UTC (rev 13798)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultAgenda.java 2007-07-26 21:40:16 UTC (rev 13799)
@@ -363,7 +363,7 @@
final EventSupport eventsupport = (EventSupport) this.workingMemory;
if ( this.scheduledActivations != null && !this.scheduledActivations.isEmpty() ) {
for ( ScheduledAgendaItem item = (ScheduledAgendaItem) this.scheduledActivations.removeFirst(); item != null; item = (ScheduledAgendaItem) this.scheduledActivations.removeFirst() ) {
- item.remove();
+ item.cancel();
eventsupport.getAgendaEventSupport().fireActivationCancelled( item,
this.workingMemory );
}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AgendaTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AgendaTest.java 2007-07-26 20:37:08 UTC (rev 13798)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AgendaTest.java 2007-07-26 21:40:16 UTC (rev 13799)
@@ -62,11 +62,17 @@
final Agenda agenda = workingMemory.getAgenda();
final Rule rule1 = new Rule( "test-rule1" );
+ final Rule rule2 = new Rule( "test-rule2" );
final RuleTerminalNode node1 = new RuleTerminalNode( 3,
new MockTupleSource( 2 ),
rule1,
rule1.getLhs() );
+
+ final RuleTerminalNode node2 = new RuleTerminalNode( 5,
+ new MockTupleSource( 4 ),
+ rule2,
+ rule2.getLhs() );
final ReteTuple tuple = new ReteTuple( new DefaultFactHandle( 1,
"cheese" ) );
@@ -89,23 +95,50 @@
// do nothing
}
} );
+
+ // Add consequence. Notice here the context here for the add to ageyunda
+ // is itself
+ rule2.setConsequence( new org.drools.spi.Consequence() {
+ /**
+ *
+ */
+ private static final long serialVersionUID = -130061018648367024L;
+ public void evaluate(final KnowledgeHelper knowledgeHelper,
+ final WorkingMemory workingMemory) {
+ // do nothing
+ }
+ } );
+
assertEquals( 0,
agenda.getFocus().size() );
rule1.setNoLoop( false );
+ rule2.setDuration( 5000 );
+
node1.assertTuple( tuple,
context1,
workingMemory );
+
+ node2.assertTuple( tuple,
+ context1,
+ workingMemory );
// make sure we have an activation in the current focus
assertEquals( 1,
agenda.getFocus().size() );
+
+ assertEquals( 1,
+ agenda.getScheduledActivations().length );
+
agenda.clearAgenda();
assertEquals( 0,
agenda.getFocus().size() );
+
+ assertEquals( 0,
+ agenda.getScheduledActivations().length );
}
public void testFilters() throws Exception {
More information about the jboss-svn-commits
mailing list