[jboss-svn-commits] JBL Code SVN: r23250 - in labs/jbossrules/branches/drools-api-refactor-20080929: drools-api/src/main/java/org/drools/event/rule and 10 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Oct 1 22:04:50 EDT 2008


Author: mark.proctor at jboss.com
Date: 2008-10-01 22:04:49 -0400 (Wed, 01 Oct 2008)
New Revision: 23250

Added:
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/ProcessRuntime.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/PropagationContext.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/RuleRuntime.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleRuntimeEvent.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleRuntimeEventListener.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleRuntimeEventManager.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/impl/
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/impl/ObjectInsertedEventImpl.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/impl/ObjectRetractedEventImpl.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/impl/ObjectUpdatedEventImpl.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/impl/RuleRuntimeEventImpl.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/impl/SerializablePropagationContext.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/impl/SerializedRule.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/test/java/org/drools/event/rule/
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/test/java/org/drools/event/rule/RuleRuntimeEventSupportTest.java
Removed:
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/ProcessSession.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/RuleSession.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleSessionEvent.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleSessionEventListener.java
Modified:
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/StatefulProcessSession.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/StatefulRuleSession.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/ObjectInsertedEvent.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/ObjectRetractedEvent.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/ObjectUpdatedEvent.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/common/PropagationContextImpl.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/common/TruthMaintenanceSystem.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/marshalling/OutputMarshaller.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/rule/Rule.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/spi/PropagationContext.java
   labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/test/java/org/drools/event/WorkingMemoryEventSupportTest.java
Log:
JBRULES-1734 Drools API
-Now supports the RuleRuntimeEventListeners

Copied: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/ProcessRuntime.java (from rev 23226, labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/ProcessSession.java)
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/ProcessRuntime.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/ProcessRuntime.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -0,0 +1,5 @@
+package org.drools;
+
+public interface ProcessRuntime {
+
+}


Property changes on: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/ProcessRuntime.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Deleted: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/ProcessSession.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/ProcessSession.java	2008-10-01 16:53:53 UTC (rev 23249)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/ProcessSession.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -1,5 +0,0 @@
-package org.drools;
-
-public interface ProcessSession {
-
-}

Added: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/PropagationContext.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/PropagationContext.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/PropagationContext.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -0,0 +1,20 @@
+package org.drools;
+
+import org.drools.knowledge.definitions.rule.Rule;
+
+public interface PropagationContext {
+    public static final int ASSERTION     = 0;
+    public static final int RETRACTION    = 1;
+    public static final int MODIFICATION  = 2;
+    public static final int RULE_ADDITION = 3;
+    public static final int RULE_REMOVAL  = 4;
+    
+    public long getPropagationNumber();
+
+    public Rule getRule();    
+    
+    public FactHandle getFactHandle();
+    
+
+    public int getType();    
+}

Copied: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/RuleRuntime.java (from rev 23226, labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/RuleSession.java)
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/RuleRuntime.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/RuleRuntime.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -0,0 +1,33 @@
+package org.drools;
+
+import java.util.Collection;
+
+import org.drools.event.rule.RuleRuntimeEventManager;
+import org.drools.time.SessionClock;
+
+public interface RuleRuntime extends RuleRuntimeEventManager {
+    FactHandle insert(Object object);
+    
+    void retract(FactHandle factHandle);
+    
+    void update(FactHandle factHandle);
+    
+    void update(FactHandle factHandle, Object object);
+    
+    void halt();
+    /**
+     * Returns the session clock instance associated with this session
+     * @return
+     */
+    public SessionClock getSessionClock();    
+                        
+    FactHandle getFactHandle(Object object);
+    
+    Collection<?> getObjects();
+
+    Collection<?> getObjects(ObjectFilter filter);
+
+    Collection<? extends FactHandle> getFactHandles();
+
+    Collection<? extends FactHandle> getFactHandles(ObjectFilter filter);   
+}


Property changes on: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/RuleRuntime.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Deleted: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/RuleSession.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/RuleSession.java	2008-10-01 16:53:53 UTC (rev 23249)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/RuleSession.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -1,5 +0,0 @@
-package org.drools;
-
-public interface RuleSession {
-
-}

Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/StatefulProcessSession.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/StatefulProcessSession.java	2008-10-01 16:53:53 UTC (rev 23249)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/StatefulProcessSession.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -6,7 +6,7 @@
 import org.drools.process.instance.ProcessInstance;
 import org.drools.process.instance.WorkItemManager;
 
-public interface StatefulProcessSession {
+public interface StatefulProcessSession extends ProcessRuntime {
 	
     ProcessInstance startProcess(String processId);
     

Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/StatefulRuleSession.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/StatefulRuleSession.java	2008-10-01 16:53:53 UTC (rev 23249)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/StatefulRuleSession.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -1,40 +1,17 @@
 package org.drools;
 
-import java.util.Collection;
 import java.util.concurrent.Future;
 
-import org.drools.time.SessionClock;
+public interface StatefulRuleSession extends RuleRuntime {      
 
-public interface StatefulRuleSession {
-    FactHandle insert(Object object);
-    void retract(FactHandle factHandle);
-    void update(FactHandle factHandle);
-    void update(FactHandle factHandle, Object object);
-    
-    void fireAllRules();
-    
-    void halt();
-    
-    /**
-     * Returns the session clock instance associated with this session
-     * @return
-     */
-    public SessionClock getSessionClock();    
-    
-    
     Future<Object> asyncInsert( Object object );    
+    
     Future<Object> asyncInsert( Object[] array );
-    Future<Object> asyncInsert( Iterable<?> iterable );  
     
-    Future<?> asyncFireAllRules();    
+    Future<Object> asyncInsert( Iterable<?> iterable );
     
-    FactHandle getFactHandle(Object object);
+    void fireAllRules();
     
-    Collection<?> getObjects();
-
-    Collection<?> getObjects(ObjectFilter filter);
-
-    Collection<? extends FactHandle> getFactHandles();
-
-    Collection<? extends FactHandle> getFactHandles(ObjectFilter filter);    
+    Future<?> asyncFireAllRules();    
+      
 }

Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/ObjectInsertedEvent.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/ObjectInsertedEvent.java	2008-10-01 16:53:53 UTC (rev 23249)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/ObjectInsertedEvent.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -19,7 +19,7 @@
 import org.drools.FactHandle;
 
 
-public interface ObjectInsertedEvent extends RuleSessionEvent {
+public interface ObjectInsertedEvent extends RuleRuntimeEvent {
     FactHandle getFactHandle();
     Object getObject();
 }
\ No newline at end of file

Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/ObjectRetractedEvent.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/ObjectRetractedEvent.java	2008-10-01 16:53:53 UTC (rev 23249)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/ObjectRetractedEvent.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -18,7 +18,7 @@
 
 import org.drools.FactHandle;
 
-public interface ObjectRetractedEvent extends RuleSessionEvent {
+public interface ObjectRetractedEvent extends RuleRuntimeEvent {
     
     public FactHandle getFactHandle();
 

Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/ObjectUpdatedEvent.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/ObjectUpdatedEvent.java	2008-10-01 16:53:53 UTC (rev 23249)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/ObjectUpdatedEvent.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -18,7 +18,7 @@
 
 import org.drools.FactHandle;
 
-public interface ObjectUpdatedEvent extends RuleSessionEvent {
+public interface ObjectUpdatedEvent extends RuleRuntimeEvent {
 
     public FactHandle getFactHandle();
 

Copied: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleRuntimeEvent.java (from rev 23226, labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleSessionEvent.java)
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleRuntimeEvent.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleRuntimeEvent.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -0,0 +1,14 @@
+package org.drools.event.rule;
+
+import org.drools.PropagationContext;
+import org.drools.RuleRuntime;
+
+public interface RuleRuntimeEvent {
+    
+    /**
+     * This method returns null after it is Serialized
+     */    
+    public RuleRuntime getRuleRuntime();
+    
+    public PropagationContext getPropagationContext();
+}


Property changes on: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleRuntimeEvent.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleRuntimeEventListener.java (from rev 23226, labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleSessionEventListener.java)
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleRuntimeEventListener.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleRuntimeEventListener.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -0,0 +1,30 @@
+package org.drools.event.rule;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.EventListener;
+
+public interface RuleRuntimeEventListener
+    extends
+    EventListener {
+    void objectInserted(ObjectInsertedEvent event);
+
+    void objectUpdated(ObjectUpdatedEvent event);
+
+    void objectRetracted(ObjectRetractedEvent event);
+
+}
\ No newline at end of file


Property changes on: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleRuntimeEventListener.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Added: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleRuntimeEventManager.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleRuntimeEventManager.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleRuntimeEventManager.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -0,0 +1,30 @@
+package org.drools.event.rule;
+
+import java.util.Collection;
+
+public interface RuleRuntimeEventManager {
+
+    /**
+     * Add an event listener.
+     * 
+     * @param listener
+     *            The listener to add.
+     */
+    public void addEventListener(RuleRuntimeEventListener listener);
+
+    /**
+     * Remove an event listener.
+     * 
+     * @param listener
+     *            The listener to remove.
+     */
+    public void removeEventListener(RuleRuntimeEventListener listener);
+
+    /**
+     * Returns all event listeners.
+     * 
+     * @return listeners The listeners.
+     */
+    public Collection<RuleRuntimeEventListener> getRuleRuntimeEventListeners();
+
+}

Deleted: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleSessionEvent.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleSessionEvent.java	2008-10-01 16:53:53 UTC (rev 23249)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleSessionEvent.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -1,8 +0,0 @@
-package org.drools.event.rule;
-
-import org.drools.RuleSession;
-
-public interface RuleSessionEvent {
-    public RuleSession getRuleSession();
-
-}

Deleted: labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleSessionEventListener.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleSessionEventListener.java	2008-10-01 16:53:53 UTC (rev 23249)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-api/src/main/java/org/drools/event/rule/RuleSessionEventListener.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -1,30 +0,0 @@
-package org.drools.event.rule;
-
-/*
- * Copyright 2005 JBoss Inc
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.util.EventListener;
-
-public interface RuleSessionEventListener
-    extends
-    EventListener {
-    void objectInserted(ObjectInsertedEvent event);
-
-    void objectUpdated(ObjectUpdatedEvent event);
-
-    void objectRetracted(ObjectRetractedEvent event);
-
-}
\ No newline at end of file

Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/common/PropagationContextImpl.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/common/PropagationContextImpl.java	2008-10-01 16:53:53 UTC (rev 23249)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/common/PropagationContextImpl.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -16,6 +16,7 @@
  * limitations under the License.
  */
 
+import org.drools.FactHandle;
 import org.drools.reteoo.LeftTuple;
 import org.drools.rule.EntryPoint;
 import org.drools.rule.Rule;
@@ -123,6 +124,10 @@
     public Rule getRuleOrigin() {
         return this.rule;
     }
+    
+    public org.drools.knowledge.definitions.rule.Rule getRule() {
+        return this.rule;
+    }
 
     public LeftTuple getLeftTupleOrigin() {
         return this.leftTuple;
@@ -131,6 +136,10 @@
     public InternalFactHandle getFactHandleOrigin() {
         return this.factHandle;
     }
+    
+    public FactHandle getFactHandle() {
+        return this.factHandle;
+    }    
 
     /*
      * (non-Javadoc)

Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/common/TruthMaintenanceSystem.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/common/TruthMaintenanceSystem.java	2008-10-01 16:53:53 UTC (rev 23249)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/common/TruthMaintenanceSystem.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -282,7 +282,7 @@
                 workingMemory.retract( this.handle,
                                        false,
                                        true,
-                                       context.getRuleOrigin(),
+                                       (Rule) context.getRuleOrigin(),
                                        this.activation );
             }
         }

Added: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/impl/ObjectInsertedEventImpl.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/impl/ObjectInsertedEventImpl.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/impl/ObjectInsertedEventImpl.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -0,0 +1,45 @@
+package org.drools.event.rule.impl;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.drools.FactHandle;
+import org.drools.RuleRuntime;
+import org.drools.event.rule.ObjectInsertedEvent;
+import org.drools.impl.StatefulKnowledgeSessionImpl;
+import org.drools.reteoo.ReteooStatefulSession;
+
+public class ObjectInsertedEventImpl extends RuleRuntimeEventImpl
+    implements
+    ObjectInsertedEvent {
+    private FactHandle  factHandle;
+    private Object      object;
+
+    public ObjectInsertedEventImpl(org.drools.event.ObjectInsertedEvent event) {
+        super( (RuleRuntime) new StatefulKnowledgeSessionImpl( (ReteooStatefulSession) event.getWorkingMemory() ), event.getPropagationContext() );
+        factHandle = event.getFactHandle();
+        object = event.getObject();
+    }
+    
+    public void writeExternal(ObjectOutput out) throws IOException {
+        super.writeExternal( out );
+        out.writeObject( factHandle );
+        out.writeObject( object );
+    }
+    
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+        super.readExternal( in );
+        this.factHandle = ( FactHandle ) in.readObject();
+        this.object = in.readObject();
+    }
+
+    public FactHandle getFactHandle() {
+        return this.factHandle;
+    }
+
+    public Object getObject() {
+        return this.object;
+    }
+}

Added: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/impl/ObjectRetractedEventImpl.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/impl/ObjectRetractedEventImpl.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/impl/ObjectRetractedEventImpl.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -0,0 +1,43 @@
+package org.drools.event.rule.impl;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.drools.FactHandle;
+import org.drools.RuleRuntime;
+import org.drools.event.rule.ObjectRetractedEvent;
+import org.drools.impl.StatefulKnowledgeSessionImpl;
+import org.drools.reteoo.ReteooStatefulSession;
+
+public class ObjectRetractedEventImpl  extends RuleRuntimeEventImpl implements ObjectRetractedEvent {
+    private FactHandle factHandle;
+    private Object oldbOject;
+    
+    public ObjectRetractedEventImpl( org.drools.event.ObjectRetractedEvent event) {
+        super( (RuleRuntime) new StatefulKnowledgeSessionImpl( (ReteooStatefulSession) event.getWorkingMemory() ), event.getPropagationContext() );
+        factHandle = event.getFactHandle();
+        oldbOject = event.getOldObject();
+    }
+    
+    public void writeExternal(ObjectOutput out) throws IOException {
+        super.writeExternal( out );
+        out.writeObject( factHandle );
+        out.writeObject( oldbOject );
+    }
+    
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+        super.readExternal( in );
+        this.factHandle = ( FactHandle ) in.readObject();
+        this.oldbOject = in.readObject();
+    }    
+    
+    public FactHandle getFactHandle() {
+        return this.factHandle;
+    }
+
+    public Object getOldObject() {
+        return this.oldbOject;
+    }
+}

Added: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/impl/ObjectUpdatedEventImpl.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/impl/ObjectUpdatedEventImpl.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/impl/ObjectUpdatedEventImpl.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -0,0 +1,52 @@
+package org.drools.event.rule.impl;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.drools.FactHandle;
+import org.drools.RuleRuntime;
+import org.drools.event.rule.ObjectUpdatedEvent;
+import org.drools.impl.StatefulKnowledgeSessionImpl;
+import org.drools.reteoo.ReteooStatefulSession;
+
+public class ObjectUpdatedEventImpl  extends RuleRuntimeEventImpl implements ObjectUpdatedEvent {
+    private FactHandle  factHandle;
+    private Object      object;
+    private Object      oldObject;
+    
+    public ObjectUpdatedEventImpl(org.drools.event.ObjectUpdatedEvent event) {
+        super( (RuleRuntime) new StatefulKnowledgeSessionImpl( (ReteooStatefulSession) event.getWorkingMemory() ), event.getPropagationContext() );
+        factHandle = event.getFactHandle();
+        object = event.getObject();
+        object = event.getOldObject();
+    }    
+    
+    public void writeExternal(ObjectOutput out) throws IOException {
+        super.writeExternal( out );
+        out.writeObject( factHandle );
+        out.writeObject( object );
+        out.writeObject( oldObject );
+    }
+    
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+        super.readExternal( in );
+        this.factHandle = ( FactHandle ) in.readObject();
+        this.object = in.readObject();
+        this.oldObject = in.readObject();
+    }      
+    
+    public FactHandle getFactHandle() {
+        return this.factHandle;
+    }
+
+    public Object getObject() {
+        return this.object;
+    }
+
+    public Object getOldObject() {
+        return this.oldObject;
+    }
+
+}

Added: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/impl/RuleRuntimeEventImpl.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/impl/RuleRuntimeEventImpl.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/impl/RuleRuntimeEventImpl.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -0,0 +1,40 @@
+package org.drools.event.rule.impl;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.drools.PropagationContext;
+import org.drools.RuleRuntime;
+import org.drools.event.rule.RuleRuntimeEvent;
+
+public class RuleRuntimeEventImpl implements RuleRuntimeEvent, Externalizable {
+    private RuleRuntime ruleRuntime;
+    
+    private PropagationContext propagationContext;
+    
+    public void writeExternal(ObjectOutput out) throws IOException {
+        new SerializablePropagationContext( propagationContext ).writeExternal( out );
+    } 
+    
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {        
+        this.ruleRuntime = null; // null because we don't serialise this
+        this.propagationContext = new SerializablePropagationContext();
+        ((SerializablePropagationContext)this.propagationContext).readExternal( in );
+    }    
+    
+    public RuleRuntimeEventImpl(RuleRuntime ruleRuntime, PropagationContext propagationContext) {
+        this.ruleRuntime = ruleRuntime;
+        this.propagationContext = propagationContext;
+    }
+    
+    public RuleRuntime getRuleRuntime() {
+        return this.ruleRuntime;
+    }
+    
+    public PropagationContext getPropagationContext() {
+        return this.propagationContext;
+    }   
+}

Added: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/impl/SerializablePropagationContext.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/impl/SerializablePropagationContext.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/event/rule/impl/SerializablePropagationContext.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -0,0 +1,62 @@
+package org.drools.event.rule.impl;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.drools.FactHandle;
+import org.drools.PropagationContext;
+import org.drools.impl.SerializedRule;
+import org.drools.knowledge.definitions.rule.Rule;
+
+public class SerializablePropagationContext
+    implements
+    PropagationContext,
+    Externalizable {
+    private FactHandle factHandle;
+    private long propgationNumber;
+    private Rule rule;
+    private int type;
+    
+    public SerializablePropagationContext() {
+
+    }
+    
+    public SerializablePropagationContext(PropagationContext propagationContext) {
+        this.factHandle = propagationContext.getFactHandle();
+        this.propgationNumber = propagationContext.getPropagationNumber();
+        this.rule = propagationContext.getRule();
+        this.type = propagationContext.getType();
+    }    
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeObject( this.factHandle );
+        out.writeLong( this.propgationNumber );
+        new SerializedRule( rule ).writeExternal( out );
+    }
+    
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+        this.factHandle = ( FactHandle ) in.readObject();
+        this.propgationNumber = in.readLong();
+        this.rule = new SerializedRule();
+        ((SerializedRule)this.rule).readExternal( in );
+    }
+
+    public FactHandle getFactHandle() {
+        return this.factHandle;
+    }
+
+    public long getPropagationNumber() {
+        return this.propgationNumber;
+    }
+
+    public Rule getRule() {
+        return this.rule;
+    }
+
+    public int getType() {
+        return this.type;
+    }
+}

Added: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/impl/SerializedRule.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/impl/SerializedRule.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/impl/SerializedRule.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -0,0 +1,45 @@
+package org.drools.impl;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.drools.knowledge.definitions.rule.Rule;
+
+public class SerializedRule
+    implements
+    Rule,
+    Externalizable {
+    private String name;
+    private String packageName;
+    
+    public SerializedRule() {
+        
+    }
+    
+    public SerializedRule(Rule rule) {
+        this.name = rule.getName();
+        this.packageName = rule.getPackageName();
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        out.writeUTF( name );
+        out.writeUTF( packageName );
+    }
+
+    public void readExternal(ObjectInput in) throws IOException,
+                                            ClassNotFoundException {
+        name = in.readUTF();
+        packageName = in.readUTF();
+    }
+
+    public String getName() {
+        return this.name;
+    }
+
+    public String getPackageName() {
+        return this.packageName;
+    }
+
+}

Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java	2008-10-01 16:53:53 UTC (rev 23249)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -1,7 +1,10 @@
 package org.drools.impl;
 
 import java.util.Collection;
+import java.util.Collections;
+import java.util.IdentityHashMap;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.Future;
 
@@ -12,6 +15,14 @@
 import org.drools.common.InternalFactHandle;
 import org.drools.common.ObjectStore;
 import org.drools.concurrent.FutureAdapter;
+import org.drools.event.ObjectInsertedEvent;
+import org.drools.event.ObjectRetractedEvent;
+import org.drools.event.ObjectUpdatedEvent;
+import org.drools.event.WorkingMemoryEventListener;
+import org.drools.event.rule.RuleRuntimeEventListener;
+import org.drools.event.rule.impl.ObjectInsertedEventImpl;
+import org.drools.event.rule.impl.ObjectRetractedEventImpl;
+import org.drools.event.rule.impl.ObjectUpdatedEventImpl;
 import org.drools.process.instance.ProcessInstance;
 import org.drools.process.instance.WorkItemManager;
 import org.drools.reteoo.ReteooStatefulSession;
@@ -22,14 +33,39 @@
     StatefulKnowledgeSession {
     public ReteooStatefulSession session;
     public KnowledgeBaseImpl kbase;
+    
+    public Map<RuleRuntimeEventListener, WorkingMemoryEventListenerWrapper> mappedListeners;
+    
+    public StatefulKnowledgeSessionImpl(ReteooStatefulSession session) {
+        this( session, null );
+    }    
 
     public StatefulKnowledgeSessionImpl(ReteooStatefulSession session, KnowledgeBaseImpl kbase) {
         this.session = session;
         this.kbase = kbase;
+        this.mappedListeners = new IdentityHashMap<RuleRuntimeEventListener, WorkingMemoryEventListenerWrapper>();
     }
     
+    public void addEventListener(RuleRuntimeEventListener listener) {
+        WorkingMemoryEventListenerWrapper wrapper = new WorkingMemoryEventListenerWrapper( listener );
+        this.mappedListeners.put( listener, wrapper );
+        session.addEventListener( wrapper );        
+    } 
+    
+    public void removeEventListener(RuleRuntimeEventListener listener) {
+        WorkingMemoryEventListenerWrapper wrapper = this.mappedListeners.get( listener );
+        session.removeEventListener( wrapper );        
+    }      
+    
+    public Collection<RuleRuntimeEventListener> getRuleRuntimeEventListeners() {
+        return Collections.unmodifiableCollection( mappedListeners.keySet() );
+    }
+    
     public KnowledgeBase getKnowledgeBase() {
-        return kbase;
+        if ( this.kbase == null ) {
+            this.kbase = new KnowledgeBaseImpl( session.getRuleBase() );
+        }
+        return this.kbase;
     }
 
     public void fireAllRules() {
@@ -254,5 +290,24 @@
             return array;
         }
     }
+    
+    public static class WorkingMemoryEventListenerWrapper implements WorkingMemoryEventListener {
+        RuleRuntimeEventListener listener;
+        
+        public WorkingMemoryEventListenerWrapper(RuleRuntimeEventListener listener) {
+            this.listener = listener;
+        }
 
+        public void objectInserted(ObjectInsertedEvent event) {
+            listener.objectInserted( new ObjectInsertedEventImpl( event ) );
+        }
+
+        public void objectRetracted(ObjectRetractedEvent event) {
+            listener.objectRetracted( new ObjectRetractedEventImpl( event ) );            
+        }
+
+        public void objectUpdated(ObjectUpdatedEvent event) {
+            listener.objectUpdated( new ObjectUpdatedEventImpl( event ) );
+        }        
+    }
 }

Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/marshalling/OutputMarshaller.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/marshalling/OutputMarshaller.java	2008-10-01 16:53:53 UTC (rev 23249)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/marshalling/OutputMarshaller.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -684,7 +684,7 @@
 
         stream.writeLong( pc.getPropagationNumber() );
         if ( pc.getFactHandleOrigin() != null ) {
-            stream.writeInt( pc.getFactHandleOrigin().getId() );
+            stream.writeInt( ((InternalFactHandle)pc.getFactHandleOrigin()).getId() );
         } else {
             stream.writeInt( -1 );
         }

Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/rule/Rule.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/rule/Rule.java	2008-10-01 16:53:53 UTC (rev 23249)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/rule/Rule.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -49,7 +49,8 @@
     implements
     Externalizable,
     Wireable,
-    Dialectable {
+    Dialectable,
+    org.drools.knowledge.definitions.rule.Rule {
     /**
      *
      */
@@ -309,6 +310,10 @@
     public void setPackage(String pkg) {
         this.pkg = pkg;
     }
+    
+    public String getPackageName() {
+        return this.pkg;
+    }
 
     /**
      * Retrieve the name of this rule.

Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/spi/PropagationContext.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/spi/PropagationContext.java	2008-10-01 16:53:53 UTC (rev 23249)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/main/java/org/drools/spi/PropagationContext.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -18,31 +18,22 @@
 
 import java.io.Externalizable;
 
-import org.drools.common.InternalFactHandle;
+import org.drools.FactHandle;
 import org.drools.reteoo.LeftTuple;
 import org.drools.rule.EntryPoint;
 import org.drools.rule.Rule;
 
 public interface PropagationContext
     extends
-    Externalizable {
+    Externalizable,
+    org.drools.PropagationContext {    
 
-    public static final int ASSERTION     = 0;
-    public static final int RETRACTION    = 1;
-    public static final int MODIFICATION  = 2;
-    public static final int RULE_ADDITION = 3;
-    public static final int RULE_REMOVAL  = 4;
+    public Rule getRuleOrigin();    
+    
+    public FactHandle getFactHandleOrigin();    
 
-    public long getPropagationNumber();
-
-    public Rule getRuleOrigin();
-
     public LeftTuple getLeftTupleOrigin();
-    
-    public InternalFactHandle getFactHandleOrigin();
 
-    public int getType();
-
     public int getActiveActivations();
 
     public int getDormantActivations();

Modified: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/test/java/org/drools/event/WorkingMemoryEventSupportTest.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/test/java/org/drools/event/WorkingMemoryEventSupportTest.java	2008-10-01 16:53:53 UTC (rev 23249)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/test/java/org/drools/event/WorkingMemoryEventSupportTest.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -60,18 +60,18 @@
         wm.addEventListener( workingMemoryListener );
 
         final Cheese stilton = new Cheese( "stilton",
-                                     15 );
+                                           15 );
         final Cheese cheddar = new Cheese( "cheddar",
-                                     17 );
+                                           17 );
 
         final FactHandle stiltonHandle = wm.insert( stilton );
 
-        final ObjectInsertedEvent oae = (ObjectInsertedEvent) wmList.get( 0 );
+        ObjectInsertedEvent oae = (ObjectInsertedEvent) wmList.get( 0 );
         assertSame( stiltonHandle,
                     oae.getFactHandle() );
 
         wm.update( stiltonHandle,
-                         stilton );
+                   stilton );
         final ObjectUpdatedEvent ome = (ObjectUpdatedEvent) wmList.get( 1 );
         assertSame( stiltonHandle,
                     ome.getFactHandle() );
@@ -81,6 +81,9 @@
         assertSame( stiltonHandle,
                     ore.getFactHandle() );
 
-        wm.insert( cheddar );
+        final FactHandle cheddarHandle = wm.insert( cheddar );
+        oae = (ObjectInsertedEvent) wmList.get( 3 );
+        assertSame( cheddarHandle,
+                    oae.getFactHandle() );
     }
 }
\ No newline at end of file

Added: labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/test/java/org/drools/event/rule/RuleRuntimeEventSupportTest.java
===================================================================
--- labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/test/java/org/drools/event/rule/RuleRuntimeEventSupportTest.java	                        (rev 0)
+++ labs/jbossrules/branches/drools-api-refactor-20080929/drools-core/src/test/java/org/drools/event/rule/RuleRuntimeEventSupportTest.java	2008-10-02 02:04:49 UTC (rev 23250)
@@ -0,0 +1,129 @@
+package org.drools.event.rule;
+
+/*
+ * Copyright 2005 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.Cheese;
+import org.drools.FactHandle;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulKnowledgeSession;
+import org.drools.WorkingMemory;
+
+import junit.framework.TestCase;
+
+/**
+ * @author <a href="mailto:simon at redhillconsulting.com.au">Simon Harris</a>
+ */
+public class RuleRuntimeEventSupportTest extends TestCase {
+
+    public void testAddRuleRuntimeEventListener() {
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+        final List wmList = new ArrayList();
+        final RuleRuntimeEventListener eventListener = new RuleRuntimeEventListener() {
+
+            public void objectInserted(ObjectInsertedEvent event) {
+                wmList.add( event );
+            }
+
+            public void objectUpdated(ObjectUpdatedEvent event) {
+                wmList.add( event );
+            }
+
+            public void objectRetracted(ObjectRetractedEvent event) {
+                wmList.add( event );
+            }
+
+        };
+
+        ksession.addEventListener( eventListener );
+
+        final Cheese stilton = new Cheese( "stilton",
+                                     15 );
+        final Cheese cheddar = new Cheese( "cheddar",
+                                     17 );
+
+        final FactHandle stiltonHandle = ksession.insert( stilton );
+
+        final ObjectInsertedEvent oae = (ObjectInsertedEvent) wmList.get( 0 );
+        assertSame( stiltonHandle,
+                    oae.getFactHandle() );
+
+        ksession.update( stiltonHandle,
+                         stilton );
+        final ObjectUpdatedEvent ome = (ObjectUpdatedEvent) wmList.get( 1 );
+        assertSame( stiltonHandle,
+                    ome.getFactHandle() );
+
+        ksession.retract( stiltonHandle );
+        final ObjectRetractedEvent ore = (ObjectRetractedEvent) wmList.get( 2 );
+        assertSame( stiltonHandle,
+                    ore.getFactHandle() );
+
+        ksession.insert( cheddar );
+    }
+    
+    public void testRemoveRuleRuntimeEventListener() {
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+        final List wmList = new ArrayList();
+        final RuleRuntimeEventListener eventListener = new RuleRuntimeEventListener() {
+
+            public void objectInserted(ObjectInsertedEvent event) {
+                wmList.add( event );
+            }
+
+            public void objectUpdated(ObjectUpdatedEvent event) {
+                wmList.add( event );
+            }
+
+            public void objectRetracted(ObjectRetractedEvent event) {
+                wmList.add( event );
+            }
+
+        };
+
+        ksession.addEventListener( eventListener );
+        ksession.removeEventListener( eventListener );
+
+        final Cheese stilton = new Cheese( "stilton",
+                                     15 );
+        final Cheese cheddar = new Cheese( "cheddar",
+                                     17 );
+
+        final FactHandle stiltonHandle = ksession.insert( stilton );
+        assertTrue( wmList.isEmpty() );
+
+        ksession.update( stiltonHandle,
+                         stilton );
+        assertTrue( wmList.isEmpty() );
+
+        ksession.retract( stiltonHandle );
+        assertTrue( wmList.isEmpty() );
+
+        ksession.insert( cheddar );
+        assertTrue( wmList.isEmpty() );
+    }    
+}
\ No newline at end of file




More information about the jboss-svn-commits mailing list