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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Sep 15 13:46:41 EDT 2006


Author: tirelli
Date: 2006-09-15 13:46:32 -0400 (Fri, 15 Sep 2006)
New Revision: 6245

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeTupleSinkAdapter.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteTuple.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/SingleTupleSinkAdapter.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSinkPropagator.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrLeftMemory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrRightMemory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/MultiLinkedListNodeWrapper.java
Log:
JBRULE-484: fixing compilation problems

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java	2006-09-15 17:45:31 UTC (rev 6244)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java	2006-09-15 17:46:32 UTC (rev 6245)
@@ -43,11 +43,11 @@
  */
 public class AccumulateNode extends BetaNode {
 
-    private static final long       serialVersionUID = -4081578178269297948L;
+    private static final long         serialVersionUID = -4081578178269297948L;
 
-    private final Accumulate        accumulate;
-    private final FieldConstraint[] constraints;
-    private final BetaNodeConstraints    resultsBinder;
+    private final Accumulate          accumulate;
+    private final FieldConstraint[]   constraints;
+    private final BetaNodeConstraints resultsBinder;
 
     /**
      * Construct.
@@ -124,13 +124,13 @@
         for ( final Iterator it = memory.rightObjectIterator( workingMemory,
                                                               leftTuple ); it.hasNext(); ) {
             final ObjectMatches objectMatches = (ObjectMatches) it.next();
-            final DefaultFactHandle handle = objectMatches.getFactHandle();
+            final InternalFactHandle handle = objectMatches.getFactHandle();
 
             if ( attemptJoin( leftTuple,
                               handle,
                               objectMatches,
                               this.resultsBinder,
-                              workingMemory )  != null) {
+                              workingMemory ) != null ) {
                 matchingObjects.add( handle.getObject() );
             }
         }
@@ -142,19 +142,23 @@
         // First alpha node filters
         boolean isAllowed = true;
         for ( int i = 0, length = this.constraints.length; i < length; i++ ) {
-            if ( !this.constraints[i].isAllowed( result, leftTuple, workingMemory ) ) {
+            if ( !this.constraints[i].isAllowed( result,
+                                                 leftTuple,
+                                                 workingMemory ) ) {
                 isAllowed = false;
                 break;
             }
         }
-        if( isAllowed ) {
+        if ( isAllowed ) {
             DefaultFactHandle handle = (DefaultFactHandle) workingMemory.getFactHandleFactory().newFactHandle( result );
 
-            if( this.resultsBinder.isAllowed( handle, leftTuple, workingMemory )) {
-                propagateAssertTuple( leftTuple,
-                                      handle,
-                                      context,
-                                      workingMemory );
+            if ( this.resultsBinder.isAllowed( handle,
+                                               leftTuple,
+                                               workingMemory ) ) {
+                this.sink.propagateAssertTuple( leftTuple,
+                                                handle,
+                                                context,
+                                                workingMemory );
             }
         }
     }
@@ -203,17 +207,14 @@
                 it.remove();
             }
         }
-        
+
         // if tuple was propagated
-        if((leftTuple.getLinkedTuples() != null) && (leftTuple.getLinkedTuples().size() > 0)) {
+        if ( (leftTuple.getChildEntries() != null) && (leftTuple.getChildEntries().size() > 0) ) {
             // Need to store the accumulate result object for later disposal
-            InternalFactHandle[] handles = ((Tuple)((LinkedListEntry)leftTuple.getLinkedTuples().getFirst()).getObject()).getFactHandles();
-            InternalFactHandle lastHandle = handles[handles.length-1];
-            
-            propagateRetractTuple( leftTuple,
-                                   context,
-                                   workingMemory );
-            
+            InternalFactHandle lastHandle = ((ReteTuple) ((LinkedListEntry)leftTuple.getChildEntries().getFirst()).getObject()).getLastHandle();
+
+            leftTuple.retractChildEntries( context, workingMemory );
+
             // Destroying the acumulate result object 
             workingMemory.getFactHandleFactory().destroyFactHandle( lastHandle );
         }
@@ -277,7 +278,7 @@
             final ReteTuple leftTuple = compositeTupleMatch.getTuple();
             leftTuple.removeMatch( handle );
         }
-        
+
         // reassert object modifying appropriate tuples
         this.assertObject( handle,
                            context,
@@ -315,17 +316,14 @@
     public List getPropagatedTuples(ReteooWorkingMemory workingMemory,
                                     TupleSink sink) {
         final BetaMemory memory = (BetaMemory) workingMemory.getNodeMemory( this );
-        final int index = this.getTupleSinks().indexOf( sink );
+        //final int index = this.getTupleSinks().indexOf( sink );
         final List propagatedTuples = new ArrayList();
 
         for ( final Iterator it = memory.getLeftTupleMemory().iterator(); it.hasNext(); ) {
             final ReteTuple leftTuple = (ReteTuple) it.next();
-            final LinkedList linkedTuples = leftTuple.getLinkedTuples();
+            final LinkedList linkedTuples = leftTuple.getChildEntries();
 
             LinkedListEntry wrapper = (LinkedListEntry) linkedTuples.getFirst();
-            for ( int i = 0; i < index; i++ ) {
-                wrapper = (LinkedListEntry) wrapper.getNext();
-            }
             propagatedTuples.add( wrapper.getObject() );
         }
         return propagatedTuples;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeTupleSinkAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeTupleSinkAdapter.java	2006-09-15 17:45:31 UTC (rev 6244)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeTupleSinkAdapter.java	2006-09-15 17:46:32 UTC (rev 6245)
@@ -11,64 +11,90 @@
 import org.drools.util.LinkedList;
 import org.drools.util.LinkedListEntry;
 
-public class CompositeTupleSinkAdapter implements TupleSinkPropagator {
+public class CompositeTupleSinkAdapter
+    implements
+    TupleSinkPropagator {
     private TupleSinkNodeList sinks;
-    
+
     public CompositeTupleSinkAdapter() {
         this.sinks = new TupleSinkNodeList();
     }
-    
+
     public void addTupleSink(TupleSink sink) {
         this.sinks.add( (TupleSinkNode) sink );
     }
 
     public void removeTupleSink(TupleSink sink) {
         this.sinks.remove( (TupleSinkNode) sink );
-    }        
-    
+    }
+
     public void propagateAssertTuple(ReteTuple tuple,
                                      InternalFactHandle handle,
                                      TupleMatch tupleMatch,
                                      PropagationContext context,
-                                     InternalWorkingMemory workingMemory) {           
-        
-        for ( TupleSinkNode  sink = this.sinks.getFirst();sink != null; sink = sink.getNextTupleSinkNode() ) {
-            ReteTuple child = new ReteTuple(tuple, handle, (TupleSink) sink );            
+                                     InternalWorkingMemory workingMemory) {
+
+        for ( TupleSinkNode sink = this.sinks.getFirst(); sink != null; sink = sink.getNextTupleSinkNode() ) {
+            ReteTuple child = new ReteTuple( tuple,
+                                             handle,
+                                             (TupleSink) sink );
             tupleMatch.addJoinedTuple( child );
-            child.assertTuple( context, workingMemory );                
+            child.assertTuple( context,
+                               workingMemory );
         }
     }
-    
+
     public void propagateAssertTuple(ReteTuple tuple,
                                      PropagationContext context,
-                                     InternalWorkingMemory workingMemory) {        
+                                     InternalWorkingMemory workingMemory) {
         for ( TupleSinkNode sink = this.sinks.getFirst(); sink != null; sink = sink.getNextTupleSinkNode() ) {
-            ReteTuple child = new ReteTuple( tuple, sink);
+            ReteTuple child = new ReteTuple( tuple,
+                                             sink );
             tuple.addChildEntry( child );
-            child.assertTuple( context, workingMemory );            
+            child.assertTuple( context,
+                               workingMemory );
         }
-    }    
-    
+    }
+
+    /**
+     * @inheritDoc
+     */
+    public void propagateAssertTuple(final ReteTuple tuple,
+                                     final InternalFactHandle handle,
+                                     final PropagationContext context,
+                                     final ReteooWorkingMemory workingMemory) {
+        for ( TupleSinkNode sink = this.sinks.getFirst(); sink != null; sink = sink.getNextTupleSinkNode() ) {
+            final ReteTuple joined = new ReteTuple( tuple,
+                                                    handle,
+                                                    sink );
+            tuple.addChildEntry( joined );
+            joined.assertTuple( context,
+                                workingMemory );
+        }
+    }
+
     public LinkedList createAndAssertTuple(InternalFactHandle handle,
-                                     PropagationContext context,
-                                     InternalWorkingMemory workingMemory) {
+                                           PropagationContext context,
+                                           InternalWorkingMemory workingMemory) {
         final LinkedList list = new LinkedList();
-        for ( TupleSinkNode sink = this.sinks.getFirst(); sink != null; sink = sink.getNextTupleSinkNode() ) {    
-            ReteTuple tuple = new ReteTuple( handle, sink );
+        for ( TupleSinkNode sink = this.sinks.getFirst(); sink != null; sink = sink.getNextTupleSinkNode() ) {
+            ReteTuple tuple = new ReteTuple( handle,
+                                             sink );
             list.add( new LinkedListEntry( tuple ) );
-            tuple.assertTuple( context, workingMemory );
-        }     
+            tuple.assertTuple( context,
+                               workingMemory );
+        }
         return list;
-    }    
+    }
 
     public TupleSink[] getSinks() {
-        TupleSink[] sinkArray = new TupleSink[ this.sinks.size() ];
-        
-        int i =0;        
+        TupleSink[] sinkArray = new TupleSink[this.sinks.size()];
+
+        int i = 0;
         for ( TupleSinkNode sink = this.sinks.getFirst(); sink != null; sink = sink.getNextTupleSinkNode() ) {
             sinkArray[i++] = sink;
         }
-        
+
         return sinkArray;
     }
 
@@ -76,38 +102,41 @@
                                       PropagationContext context,
                                       InternalWorkingMemory workingMemory) {
 
-            final TupleSink sink = sinks.getLast();
-            final ReteTuple tuple = new ReteTuple( tupleMatch.getTuple(),
-                                                     tupleMatch.getObjectMatches().getFactHandle(), 
-                                                    sink  );
-            tupleMatch.addJoinedTuple( tuple );
-            tuple.assertTuple( context, workingMemory );                          
+        final TupleSink sink = sinks.getLast();
+        final ReteTuple tuple = new ReteTuple( tupleMatch.getTuple(),
+                                               tupleMatch.getObjectMatches().getFactHandle(),
+                                               sink );
+        tupleMatch.addJoinedTuple( tuple );
+        tuple.assertTuple( context,
+                           workingMemory );
     }
-    
+
     public void propagateNewTupleSink(InternalFactHandle handle,
                                       LinkedList list,
                                       PropagationContext context,
                                       InternalWorkingMemory workingMemory) {
         TupleSink sink = this.sinks.getLast();
-        ReteTuple tuple = new ReteTuple( handle, sink );
+        ReteTuple tuple = new ReteTuple( handle,
+                                         sink );
         list.add( new LinkedListEntry( tuple ) );
-        tuple.assertTuple( context, workingMemory );                       
-    }    
-    
+        tuple.assertTuple( context,
+                           workingMemory );
+    }
+
     /**
      * @inheritDoc
      */
     public List getPropagatedTuples(final Map memory,
                                     final InternalWorkingMemory workingMemory,
                                     final TupleSink sink) {
-        int index =  0;
+        int index = 0;
         for ( TupleSinkNode node = this.sinks.getFirst(); node != null; node = node.getNextTupleSinkNode() ) {
             if ( node.equals( sink ) ) {
                 break;
             }
             index++;
         }
-        
+
         final List propagatedTuples = new ArrayList( memory.size() );
 
         for ( final Iterator it = memory.values().iterator(); it.hasNext(); ) {
@@ -121,7 +150,7 @@
 
         return propagatedTuples;
     }
-    
+
     public int size() {
         return this.sinks.size();
     }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteTuple.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteTuple.java	2006-09-15 17:45:31 UTC (rev 6244)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteTuple.java	2006-09-15 17:46:32 UTC (rev 6245)
@@ -3,7 +3,6 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -14,15 +13,16 @@
 import org.drools.spi.Activation;
 import org.drools.spi.PropagationContext;
 import org.drools.spi.Tuple;
-import org.drools.util.AbstractBaseLinkedListNode;
 import org.drools.util.BaseMultiLinkedListNode;
 import org.drools.util.LinkedList;
+import org.drools.util.LinkedListEntry;
 import org.drools.util.LinkedListNode;
-import org.drools.util.LinkedListEntry;
 
-public class ReteTuple extends AbstractBaseLinkedListNode
+public class ReteTuple extends BaseMultiLinkedListNode
     implements
     Tuple {
+    private static final long serialVersionUID = -4221694077704683140L;
+
     private int                      index;
 
     private final InternalFactHandle handle;
@@ -123,6 +123,10 @@
         }
         return entry.handle;
     }
+    
+    public InternalFactHandle getLastHandle() {
+        return this.handle;
+    }
 
     public InternalFactHandle get(Declaration declaration) {
         return get( declaration.getColumn().getIndex() );

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/SingleTupleSinkAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/SingleTupleSinkAdapter.java	2006-09-15 17:45:31 UTC (rev 6244)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/SingleTupleSinkAdapter.java	2006-09-15 17:46:32 UTC (rev 6245)
@@ -56,6 +56,21 @@
                            workingMemory );
     }
 
+    /**
+     * @inheritDoc
+     */
+    public void propagateAssertTuple(final ReteTuple tuple,
+                                     final InternalFactHandle handle,
+                                     final PropagationContext context,
+                                     final ReteooWorkingMemory workingMemory) {
+        final ReteTuple joined = new ReteTuple( tuple,
+                                                handle,
+                                                sink );
+        tuple.addChildEntry( joined );
+        joined.assertTuple( context,
+                            workingMemory );
+    }
+
     public TupleSink[] getSinks() {
         return new TupleSink[]{this.sink};
     }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSinkPropagator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSinkPropagator.java	2006-09-15 17:45:31 UTC (rev 6244)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSinkPropagator.java	2006-09-15 17:46:32 UTC (rev 6245)
@@ -19,6 +19,20 @@
                                      PropagationContext context,
                                      InternalWorkingMemory workingMemory);    
     
+    /**
+     * Propagates a new tuple adding the given fact handle to the tuple 
+     * before propagating.
+     * 
+     * @param tuple The base tuple for propagation
+     * @param handle The handle to add to the tuple when propagating
+     * @param context
+     * @param workingMemory
+     */
+    public void propagateAssertTuple(final ReteTuple tuple,
+                                        final InternalFactHandle handle,
+                                        final PropagationContext context,
+                                        final ReteooWorkingMemory workingMemory);
+    
     public LinkedList createAndAssertTuple(InternalFactHandle handle,
                                      PropagationContext context,
                                      InternalWorkingMemory workingMemory);    

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrLeftMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrLeftMemory.java	2006-09-15 17:45:31 UTC (rev 6244)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrLeftMemory.java	2006-09-15 17:46:32 UTC (rev 6245)
@@ -45,6 +45,9 @@
 public class ObjectNotEqualConstrLeftMemory
     implements
     BetaLeftMemory {
+
+    private static final long serialVersionUID = -58634273356357726L;
+
     private BetaLeftMemory  innerMemory      = null;
 
     private Map             memoryMap        = null;
@@ -357,6 +360,7 @@
     }
 
     private static class KeyMultiLinkedList extends MultiLinkedList {
+        private static final long serialVersionUID = 2502061884559498808L;
         private final Object key;
 
         public KeyMultiLinkedList(final Object key) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrRightMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrRightMemory.java	2006-09-15 17:45:31 UTC (rev 6244)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrRightMemory.java	2006-09-15 17:46:32 UTC (rev 6245)
@@ -44,6 +44,8 @@
     implements
     BetaRightMemory {
 
+    private static final long serialVersionUID = -3901433030465097663L;
+
     private BetaRightMemory innerMemory      = null;
 
     private Map             memoryMap        = null;
@@ -261,8 +263,7 @@
     public final void selectPossibleMatches(final WorkingMemory workingMemory,
                                             final Tuple tuple) {
         final Object select = this.declaration.getValue( tuple.get( this.column.getFactIndex() ).getObject() );
-        final Integer hash = (select != null) ? new Integer( select.hashCode() ) : new Integer( 0 );
-        this.noMatchList = (MultiLinkedList) this.memoryMap.get( hash );
+        this.noMatchList = (MultiLinkedList) this.memoryMap.get( select );
 
         if ( this.innerMemory != null ) {
             this.innerMemory.selectPossibleMatches( workingMemory,
@@ -298,11 +299,10 @@
     private final MultiLinkedList getFactList(final WorkingMemory workingMemory,
                                               final InternalFactHandle handle) {
         final Object select = this.extractor.getValue( handle.getObject() );
-        final Integer hash = (select != null) ? new Integer( select.hashCode() ) : new Integer( 0 );
-        MultiLinkedList list = (MultiLinkedList) this.memoryMap.get( hash );
+        MultiLinkedList list = (MultiLinkedList) this.memoryMap.get( select );
         if ( list == null ) {
-            list = new KeyMultiLinkedList( hash );
-            this.memoryMap.put( hash,
+            list = new KeyMultiLinkedList( select );
+            this.memoryMap.put( select,
                                 list );
         }
         return list;
@@ -363,6 +363,7 @@
     }
 
     private static class KeyMultiLinkedList extends MultiLinkedList {
+        private static final long serialVersionUID = 489200140229400242L;
         private final Object key;
 
         public KeyMultiLinkedList(final Object key) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/MultiLinkedListNodeWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/MultiLinkedListNodeWrapper.java	2006-09-15 17:45:31 UTC (rev 6244)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/MultiLinkedListNodeWrapper.java	2006-09-15 17:46:32 UTC (rev 6245)
@@ -28,12 +28,24 @@
  */
 public class MultiLinkedListNodeWrapper extends BaseMultiLinkedListNode {
 
+    private static final long serialVersionUID = 3326764563267697646L;
+
     private LinkedListNode node = null;
 
+    private MultiLinkedListNode parent = null;
+
     public MultiLinkedListNodeWrapper(final LinkedListNode node) {
         this.node = node;
     }
 
+    public MultiLinkedListNode getParent() {
+        return this.parent;
+    }
+    
+    public void setParent(MultiLinkedListNode parent) {
+        this.parent = parent;
+    }
+
     public LinkedListNode getNode() {
         return this.node;
     }




More information about the jboss-svn-commits mailing list