[jboss-svn-commits] JBL Code SVN: r7059 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: common reteoo

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Oct 23 21:36:21 EDT 2006


Author: mark.proctor at jboss.com
Date: 2006-10-23 21:36:16 -0400 (Mon, 23 Oct 2006)
New Revision: 7059

Added:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EmptyObjectSinkAdapter.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EmptyTupleSinkAdapter.java
Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TerminalNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSource.java
Log:
-Fixed  dynamic  rule tests

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java	2006-10-24 01:19:58 UTC (rev 7058)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java	2006-10-24 01:36:16 UTC (rev 7059)
@@ -411,9 +411,8 @@
      * 
      * @return
      */
-    public Map getFactHandleMap() {
-        return null;
-        //return Collections.unmodifiableMap( this.assertMap );
+    public ObjectHashMap getFactHandleMap() {
+        return this.assertMap;
     }
 
     /**

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java	2006-10-24 01:19:58 UTC (rev 7058)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java	2006-10-24 01:36:16 UTC (rev 7059)
@@ -5,6 +5,7 @@
 import org.drools.WorkingMemory;
 import org.drools.event.AgendaEventSupport;
 import org.drools.spi.FactHandleFactory;
+import org.drools.util.ObjectHashMap;
 
 public interface InternalWorkingMemory
     extends
@@ -17,7 +18,7 @@
 
     public long getNextPropagationIdCounter();
 
-    public Map getFactHandleMap();
+    public ObjectHashMap getFactHandleMap();
 
     public AgendaEventSupport getAgendaEventSupport();
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java	2006-10-24 01:19:58 UTC (rev 7058)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java	2006-10-24 01:36:16 UTC (rev 7059)
@@ -362,7 +362,11 @@
     }
 
     public int size() {
-        return this.otherSinks.size();
+    	int size;
+        size =+ ( ( otherSinks != null ) ? otherSinks.size() : 0);
+        size =+ (( hashableSinks != null ) ? hashableSinks.size() : 0);
+        size =+ ( ( hashedSinkMap != null ) ? hashedSinkMap.size() : 0);
+        return size;
     }
 
     public static class HashKey {

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EmptyObjectSinkAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EmptyObjectSinkAdapter.java	2006-10-24 01:19:58 UTC (rev 7058)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EmptyObjectSinkAdapter.java	2006-10-24 01:36:16 UTC (rev 7059)
@@ -0,0 +1,35 @@
+package org.drools.reteoo;
+
+import org.drools.common.InternalFactHandle;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.spi.PropagationContext;
+
+public class EmptyObjectSinkAdapter
+    implements
+    ObjectSinkPropagator {
+	private static final EmptyObjectSinkAdapter instance = new EmptyObjectSinkAdapter();
+	
+	public static EmptyObjectSinkAdapter getInstance() { 
+		return instance;
+	}
+	
+    private EmptyObjectSinkAdapter() {
+    }
+
+    public void propagateAssertObject(final InternalFactHandle handle,
+                                      final PropagationContext context,
+                                      final InternalWorkingMemory workingMemory) {
+
+    }
+
+    public void propagateRetractObject(final InternalFactHandle handle,
+                                       final PropagationContext context,
+                                       final InternalWorkingMemory workingMemory,
+                                       final boolean useHash) {
+    }
+
+    public ObjectSink[] getSinks() {
+        return new ObjectSink[]{};
+    }
+
+}

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EmptyTupleSinkAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EmptyTupleSinkAdapter.java	2006-10-24 01:19:58 UTC (rev 7058)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EmptyTupleSinkAdapter.java	2006-10-24 01:36:16 UTC (rev 7059)
@@ -0,0 +1,59 @@
+package org.drools.reteoo;
+
+import org.drools.common.InternalFactHandle;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.spi.PropagationContext;
+
+public class EmptyTupleSinkAdapter
+    implements
+    TupleSinkPropagator {
+	
+	private static final EmptyTupleSinkAdapter instance = new EmptyTupleSinkAdapter();
+	
+	public static final  EmptyTupleSinkAdapter getInstance() {
+		return instance;
+	}
+
+    private EmptyTupleSinkAdapter() {
+    }
+
+    public void propagateAssertTuple(final ReteTuple tuple,
+                                     final InternalFactHandle handle,
+                                     final PropagationContext context,
+                                     final InternalWorkingMemory workingMemory) {
+    }
+
+    public void propagateAssertTuple(final ReteTuple tuple,
+                                     final PropagationContext context,
+                                     final InternalWorkingMemory workingMemory) {
+    }
+
+    public void propagateRetractTuple(final ReteTuple tuple,
+                                      final InternalFactHandle handle,
+                                      final PropagationContext context,
+                                      final InternalWorkingMemory workingMemory) {
+    }
+
+    public void propagateRetractTuple(final ReteTuple tuple,
+                                      final PropagationContext context,
+                                      final InternalWorkingMemory workingMemory) {
+    }
+
+    public void createAndPropagateAssertTuple(final InternalFactHandle handle,
+                                              final PropagationContext context,
+                                              final InternalWorkingMemory workingMemory) {
+    }
+
+    public void createAndPropagateRetractTuple(final InternalFactHandle handle,
+                                               final PropagationContext context,
+                                               final InternalWorkingMemory workingMemory) {
+    }
+
+    public TupleSink[] getSinks() {
+        return new TupleSink[]{};
+    }
+
+    public int size() {
+        return 0;
+    }
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java	2006-10-24 01:19:58 UTC (rev 7058)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java	2006-10-24 01:36:16 UTC (rev 7059)
@@ -61,6 +61,7 @@
     ObjectSource(final int id) {
         this( id,
               null );
+        this.sink = EmptyObjectSinkAdapter.getInstance();
     }
 
     /**
@@ -88,7 +89,7 @@
      *            <code>FactHandleImpl</code>.
      */
     protected void addObjectSink(final ObjectSink objectSink) {
-        if ( this.sink == null ) {
+        if ( this.sink == EmptyObjectSinkAdapter.getInstance() ) {
             this.sink = new SingleObjectSinkAdapter( objectSink );
         } else if ( this.sink.getClass() == SingleObjectSinkAdapter.class ) {
             final CompositeObjectSinkAdapter sinkAdapter = new CompositeObjectSinkAdapter();
@@ -107,12 +108,12 @@
      *            The <code>ObjectSink</code> to remove
      */
     protected void removeObjectSink(final ObjectSink objectSink) {
-        if (  this.sink == null ){
+        if (  this.sink == EmptyObjectSinkAdapter.getInstance() ){
             throw new IllegalArgumentException( "Cannot remove a sink, when the list of sinks is null" );            
         }
         
         if ( this.sink.getClass() == SingleObjectSinkAdapter.class ) {
-            this.sink = null;
+            this.sink = EmptyObjectSinkAdapter.getInstance();
         } else { 
             CompositeObjectSinkAdapter sinkAdapter = ( CompositeObjectSinkAdapter ) this.sink;
             sinkAdapter.removeObjectSink( objectSink );

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java	2006-10-24 01:19:58 UTC (rev 7058)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java	2006-10-24 01:36:16 UTC (rev 7059)
@@ -230,8 +230,8 @@
                            final PropagationContext context,
                            final InternalWorkingMemory workingMemory) {
         final ObjectTypeNode node = (ObjectTypeNode) sink;
-        for ( final java.util.Iterator i = workingMemory.getFactHandleMap().entrySet().iterator(); i.hasNext(); ) {
-            final java.util.Map.Entry entry = (java.util.Map.Entry) i.next();
+        Iterator it = workingMemory.getFactHandleMap().iterator();
+        for (  ObjectEntry entry = ( ObjectEntry ) it.next(); entry != null; entry =  ( ObjectEntry ) it.next() ) {   	
             final InternalFactHandle handle = (InternalFactHandle) entry.getValue();
             if ( node.matches( handle.getObject() ) ) {
                 node.assertObject( handle,

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TerminalNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TerminalNode.java	2006-10-24 01:19:58 UTC (rev 7058)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TerminalNode.java	2006-10-24 01:36:16 UTC (rev 7059)
@@ -276,8 +276,8 @@
 
             final TerminalNodeMemory memory = (TerminalNodeMemory) workingMemory.getNodeMemory( this );
             final Iterator it = memory.getTupleMemory().iterator();
-            for ( ObjectEntry entry = (ObjectEntry) it.next(); entry != null; entry = (ObjectEntry) it.next() ) {
-                final Activation activation = (Activation) entry.getValue();
+            for ( ReteTuple tuple = (ReteTuple) it.next(); tuple != null; tuple = (ReteTuple) it.next() ) {
+                final Activation activation = (Activation) tuple.getActivation();
 
                 if ( activation.isActivated() ) {
                     activation.remove();

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSource.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSource.java	2006-10-24 01:19:58 UTC (rev 7058)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSource.java	2006-10-24 01:36:16 UTC (rev 7059)
@@ -56,6 +56,7 @@
      */
     TupleSource(final int id) {
         super( id );
+        this.sink = EmptyTupleSinkAdapter.getInstance();
     }
 
     // ------------------------------------------------------------
@@ -71,7 +72,7 @@
      *            <code>Tuples</code>.
      */
     protected void addTupleSink(final TupleSink tupleSink) {
-        if ( this.sink == null ) {
+        if ( this.sink == EmptyTupleSinkAdapter.getInstance() ) {
             this.sink = new SingleTupleSinkAdapter( tupleSink );
         } else if ( this.sink.getClass() == SingleTupleSinkAdapter.class ) {
             final CompositeTupleSinkAdapter sinkAdapter = new CompositeTupleSinkAdapter();
@@ -90,10 +91,14 @@
      *            The <code>TupleSink</code> to remove
      */
     protected void removeTupleSink(final TupleSink tupleSink) {
+        if (  this.sink == EmptyTupleSinkAdapter.getInstance()){
+            throw new IllegalArgumentException( "Cannot remove a sink, when the list of sinks is null" );            
+        }
+        
         if ( this.sink.getClass() == SingleTupleSinkAdapter.class ) {
-            this.sink = null;
+            this.sink = EmptyTupleSinkAdapter.getInstance();
         } else {
-            final CompositeTupleSinkAdapter sinkAdapter = (CompositeTupleSinkAdapter) tupleSink;
+            final CompositeTupleSinkAdapter sinkAdapter = (CompositeTupleSinkAdapter) this.sink;
             sinkAdapter.removeTupleSink( tupleSink );
             if ( sinkAdapter.size() == 1 ) {
                 this.sink = new SingleTupleSinkAdapter( sinkAdapter.getSinks()[0] );




More information about the jboss-svn-commits mailing list