[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