[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