[jboss-svn-commits] JBL Code SVN: r25890 - in labs/jbossrules/trunk: drools-persistence-jpa/src/test/java/org/drools/persistence/session and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Mar 30 08:41:18 EDT 2009


Author: KrisVerlaenen
Date: 2009-03-30 08:41:18 -0400 (Mon, 30 Mar 2009)
New Revision: 25890

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/CommandBasedStatefulKnowledgeSession.java
   labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/PersistentStatefulSessionTest.java
Log:
 - listers maps not initialized in CommandBasedStatefulKnowledgeSession

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/CommandBasedStatefulKnowledgeSession.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/CommandBasedStatefulKnowledgeSession.java	2009-03-30 11:17:34 UTC (rev 25889)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/CommandBasedStatefulKnowledgeSession.java	2009-03-30 12:41:18 UTC (rev 25890)
@@ -2,7 +2,7 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Iterator;
+import java.util.HashMap;
 import java.util.Map;
 
 import org.drools.KnowledgeBase;
@@ -73,9 +73,9 @@
     private CommandService                                                    commandService;
     private transient WorkItemManager                                         workItemManager;
 
-    public Map<WorkingMemoryEventListener, WorkingMemoryEventListenerWrapper> mappedWorkingMemoryListeners;
-    public Map<AgendaEventListener, AgendaEventListenerWrapper>               mappedAgendaListeners;
-    public Map<ProcessEventListener, ProcessEventListenerWrapper>             mappedProcessListeners;
+    public Map<WorkingMemoryEventListener, WorkingMemoryEventListenerWrapper> mappedWorkingMemoryListeners = new HashMap<WorkingMemoryEventListener, WorkingMemoryEventListenerWrapper>();
+    public Map<AgendaEventListener, AgendaEventListenerWrapper>               mappedAgendaListeners = new HashMap<AgendaEventListener, AgendaEventListenerWrapper>();
+    public Map<ProcessEventListener, ProcessEventListenerWrapper>             mappedProcessListeners = new HashMap<ProcessEventListener, ProcessEventListenerWrapper>();
 
     public CommandBasedStatefulKnowledgeSession(CommandService commandService) {
         this.commandService = commandService;
@@ -321,7 +321,7 @@
     }
 
     public void removeEventListener(ProcessEventListener listener) {
-        WorkingMemoryEventListenerWrapper wrapper = this.mappedWorkingMemoryListeners.remove( listener );
+        ProcessEventListenerWrapper wrapper = this.mappedProcessListeners.remove( listener );
 
         commandService.execute( new RemoveEventListenerCommand( wrapper ) );
     }

Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/PersistentStatefulSessionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/PersistentStatefulSessionTest.java	2009-03-30 11:17:34 UTC (rev 25889)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/PersistentStatefulSessionTest.java	2009-03-30 12:41:18 UTC (rev 25890)
@@ -19,6 +19,12 @@
 import org.drools.builder.KnowledgeBuilderError;
 import org.drools.builder.KnowledgeBuilderFactory;
 import org.drools.builder.ResourceType;
+import org.drools.event.process.ProcessCompletedEvent;
+import org.drools.event.process.ProcessEvent;
+import org.drools.event.process.ProcessEventListener;
+import org.drools.event.process.ProcessNodeLeftEvent;
+import org.drools.event.process.ProcessNodeTriggeredEvent;
+import org.drools.event.process.ProcessStartedEvent;
 import org.drools.io.ResourceFactory;
 import org.drools.io.impl.ClassPathResource;
 import org.drools.persistence.jpa.JPAKnowledgeService;
@@ -268,7 +274,85 @@
         assertNull( processInstance );
 
     }
+    
+    public void testProcessListener() {
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        kbuilder.add( new ClassPathResource( "WorkItemsProcess.rf" ),
+                      ResourceType.DRF );
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
 
+        EntityManagerFactory emf = Persistence.createEntityManagerFactory( "org.drools.persistence.jpa" );
+        Environment env = KnowledgeBaseFactory.newEnvironment();
+        env.set( EnvironmentName.ENTITY_MANAGER_FACTORY,
+                 emf );
+
+        env.set( EnvironmentName.GLOBALS, new MapGlobalResolver() );
+
+        StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env );
+        final List<ProcessEvent> events = new ArrayList<ProcessEvent>();
+        ProcessEventListener listener = new ProcessEventListener() {
+			public void afterNodeLeft(ProcessNodeLeftEvent event) {
+				System.out.println("After node left: " + event.getNodeInstance().getNodeName());
+				events.add(event);				
+			}
+			public void afterNodeTriggered(ProcessNodeTriggeredEvent event) {
+				System.out.println("After node triggered: " + event.getNodeInstance().getNodeName());
+				events.add(event);				
+			}
+			public void afterProcessCompleted(ProcessCompletedEvent event) {
+				System.out.println("After process completed");
+				events.add(event);				
+			}
+			public void afterProcessStarted(ProcessStartedEvent event) {
+				System.out.println("After process started");
+				events.add(event);				
+			}
+			public void beforeNodeLeft(ProcessNodeLeftEvent event) {
+				System.out.println("Before node left: " + event.getNodeInstance().getNodeName());
+				events.add(event);				
+			}
+			public void beforeNodeTriggered(ProcessNodeTriggeredEvent event) {
+				System.out.println("Before node triggered: " + event.getNodeInstance().getNodeName());
+				events.add(event);				
+			}
+			public void beforeProcessCompleted(ProcessCompletedEvent event) {
+				System.out.println("Before process completed");
+				events.add(event);				
+			}
+			public void beforeProcessStarted(ProcessStartedEvent event) {
+				System.out.println("Before process started");
+				events.add(event);				
+			}
+        };
+        ksession.addEventListener(listener);
+        
+        ProcessInstance processInstance = ksession.startProcess( "org.drools.test.TestProcess" );
+        System.out.println( "Started process instance " + processInstance.getId() );
+        
+        assertEquals(12, events.size());
+        assertTrue(events.get(0) instanceof ProcessStartedEvent);
+        assertTrue(events.get(1) instanceof ProcessNodeTriggeredEvent);
+        assertTrue(events.get(2) instanceof ProcessNodeLeftEvent);
+        assertTrue(events.get(3) instanceof ProcessNodeTriggeredEvent);
+        assertTrue(events.get(4) instanceof ProcessNodeLeftEvent);
+        assertTrue(events.get(5) instanceof ProcessNodeTriggeredEvent);
+        assertTrue(events.get(6) instanceof ProcessNodeTriggeredEvent);
+        assertTrue(events.get(7) instanceof ProcessNodeLeftEvent);
+        assertTrue(events.get(8) instanceof ProcessNodeTriggeredEvent);
+        assertTrue(events.get(9) instanceof ProcessNodeLeftEvent);
+        assertTrue(events.get(10) instanceof ProcessNodeTriggeredEvent);
+        assertTrue(events.get(11) instanceof ProcessStartedEvent);
+        
+        ksession.removeEventListener(listener);
+        events.clear();
+        
+        processInstance = ksession.startProcess( "org.drools.test.TestProcess" );
+        System.out.println( "Started process instance " + processInstance.getId() );
+        
+        assertTrue(events.isEmpty());
+    }
+
     public void testPersistenceSubProcess() {
         KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
         kbuilder.add( new ClassPathResource( "SuperProcess.rf" ),




More information about the jboss-svn-commits mailing list