[jboss-svn-commits] JBL Code SVN: r19437 - in labs/jbossrules/trunk/drools-core/src: test/java/org/drools/reteoo and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Apr 6 22:38:49 EDT 2008


Author: mark.proctor at jboss.com
Date: 2008-04-06 22:38:49 -0400 (Sun, 06 Apr 2008)
New Revision: 19437

Added:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNetworkCompiler.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSinkNode.java
Removed:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTupleSinkNode.java
Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.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/LeftInputAdapterNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSinkNodeList.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/PropagationQueuingNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Sink.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockObjectSink.java
Log:
JBRULES-1552 AlphaNode Compiler
-Added initially illustrative AlphaNodeCompiler
-Added Manners to compiler, might as well have it there as we use it enough.

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNetworkCompiler.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNetworkCompiler.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNetworkCompiler.java	2008-04-07 02:38:49 UTC (rev 19437)
@@ -0,0 +1,168 @@
+package org.drools.reteoo;
+
+import java.util.Arrays;
+import java.util.Comparator;
+
+import org.drools.util.Iterator;
+import org.drools.util.LinkedList;
+import org.drools.util.ObjectHashMap;
+import org.drools.util.ObjectHashMap.ObjectEntry;
+import org.drools.reteoo.CompositeObjectSinkAdapter.HashKey;
+
+public class AlphaNetworkCompiler {
+    private StringBuilder builder;
+
+    public void compile(ObjectTypeNode objectTypeNode) {
+        builder = new StringBuilder();
+        builder.append( "public class Compiled" + objectTypeNode.getObjectType() + "AlphaNetwork implements RightTupleSink { \n" );
+        
+        createVars( objectTypeNode.getSinkPropagator().getSinks(), 4  );
+        
+        builder.append( "    public void assertObject(....) { \n");
+
+        compileAlphaNodes( objectTypeNode.getSinkPropagator(),
+                           8 );
+        
+        builder.append( "    } \n" );
+        builder.append( "} \n" );
+
+        System.out.println( builder.toString() );
+    }
+
+    public void createVars(ObjectSink[] sinks,
+                           int indent) {
+        for ( ObjectSink sink : sinks ) {
+            if ( sink instanceof AlphaNode ) {
+                AlphaNode alphaNode = (AlphaNode) sink;
+                builder.append( getIndent( indent ) + "AlphaNodeFieldConstraint alphaNodeConstraint" + alphaNode.getId() + ";\n" );
+                createVars( alphaNode.getSinkPropagator().getSinks(), indent );
+            } else if ( sink instanceof BetaNode ) {
+                BetaNode betaNode = (BetaNode) sink;
+                builder.append( getIndent( indent ) +  "ObjectSink sink" + betaNode.getId() + ";\n" );
+            } else if ( sink instanceof LeftInputAdapterNode ) {
+                LeftInputAdapterNode liaNode = (LeftInputAdapterNode) sink;
+                builder.append( getIndent( indent ) +  "ObjectSink sink" + liaNode.getId() + ";\n" );
+            }
+        }
+    }
+
+    public void compileAlphaNodes(ObjectSinkPropagator adapter,
+                                  int indent) {
+        if ( adapter instanceof SingleObjectSinkAdapter ) {
+            compileAlphaNodeSingleConstraint( (SingleObjectSinkAdapter) adapter,
+                                              indent );
+        } else if ( adapter instanceof CompositeObjectSinkAdapter ) {
+            compileAlphaNodeCompositeConstraint( (CompositeObjectSinkAdapter) adapter,
+                                                 indent );
+        }
+    }
+
+    private void compileAlphaNodeCompositeConstraint(CompositeObjectSinkAdapter adapter,
+                                                     int indent) {
+        ObjectSinkNodeList sinks = adapter.getHashableSinks();
+        if ( sinks != null ) {
+            for ( ObjectSinkNode sink = sinks.getFirst(); sink != null; sink = sink.getNextObjectSinkNode() ) {
+                compileAlphaNodeSingleConstraint( sink,
+                                                  indent );
+            }
+        }
+
+        sinks = adapter.getOthers();
+        if ( sinks != null ) {
+            for ( ObjectSinkNode sink = sinks.getFirst(); sink != null; sink = sink.getNextObjectSinkNode() ) {
+                compileAlphaNodeSingleConstraint( sink,
+                                                  indent );
+            }
+        }
+
+        ObjectHashMap map = adapter.getHashedSinkMap();
+        if ( map != null ) {
+            ObjectEntry[] entries = new ObjectEntry[map.size()];
+            Iterator it = map.iterator();
+            int i = 0;
+            for ( ObjectEntry entry = (ObjectEntry) it.next(); entry != null; entry = (ObjectEntry) it.next() ) {
+                entries[i++] = entry;
+            }
+
+            // we sort as switch works faster with ordered cases
+            Arrays.sort( entries,
+                         new Comparator() {
+                             public int compare(Object o1,
+                                                Object o2) {
+                                 ObjectEntry entry1 = (ObjectEntry) o1;
+                                 ObjectEntry entry2 = (ObjectEntry) o2;
+                                 return ((ObjectSink) entry1.getValue()).getId() - ((ObjectSink) entry2.getValue()).getId();
+                             }
+
+                         } );
+
+            //final Iterator it = map.newIterator();
+            builder.append( getIndent( indent ) + "HashKey key = new HashKey(handle);\n" );
+            builder.append( getIndent( indent ) + "swtich ((ObjectSink)this.hashedSinkedMap(key)).getId() {\n" );
+            for ( ObjectEntry entry : entries ) {
+                ObjectSink sink = (ObjectSink) entry.getValue();
+                builder.append( getIndent( indent + 4 ) + "case " + sink.getId() + ": {\n" );
+                //builder.append( getIndent( indent + 8 ) + "sink" + sink.getId() + ".assertRight(handle, wm, context);\n" );
+                
+                if (sink instanceof AlphaNode ) {
+                    compileAlphaNodes( ((AlphaNode)sink).getSinkPropagator(),
+                                       indent + 8 );                    
+                }
+                
+                builder.append( getIndent( indent + 4 )+ "};\n" );
+            }
+            builder.append( getIndent( indent ) + "};\n" );
+        }
+
+    }
+
+    public void compileAlphaNodeSingleConstraint(SingleObjectSinkAdapter adapter,
+                                                 int indent) {
+        compileAlphaNodeSingleConstraint( adapter.getSinks()[0],
+                                          indent );
+    }
+
+    public void compileAlphaNodeSingleConstraint(ObjectSink sink,
+                                                 int indent) {
+        if ( sink instanceof AlphaNode ) {
+            AlphaNode alphaNode = (AlphaNode) sink;
+            builder.append( getIndent( indent ) + "if ( alphaNodeConstraint" + alphaNode.getId() + ".isAllowed(handle, wm) ) {\n" );
+            compileAlphaNodes( alphaNode.getSinkPropagator(),
+                               indent + 4 );
+            builder.append( getIndent( indent ) + "}\n" );
+        } else if ( sink instanceof BetaNode ) {
+            BetaNode betaNode = (BetaNode) sink;
+            builder.append( getIndent( indent ) + "sink" + betaNode.getId() + ".assertRight(handle, wm, context);\n" );
+        } else if ( sink instanceof LeftInputAdapterNode ) {
+            LeftInputAdapterNode liaNode = (LeftInputAdapterNode) sink;
+            builder.append( getIndent( indent ) + "sink" + liaNode.getId() + ".assertRight(handle, wm, context);\n" );
+        }
+    }
+
+    public void compileAlphaNodeCompositeConstraint(ObjectSink sink,
+                                                    int indent) {
+        if ( sink instanceof AlphaNode ) {
+            AlphaNode alphaNode = (AlphaNode) sink;
+            builder.append( getIndent( indent ) + "if ( alphaNodeConstraint" + alphaNode.getId() + ".isAllowed(handle, wm) ) {\n" );
+            compileAlphaNodes( alphaNode.getSinkPropagator(),
+                               indent + 4 );
+            builder.append( getIndent( indent ) + "}\n" );
+        } else if ( sink instanceof BetaNode ) {
+            BetaNode betaNode = (BetaNode) sink;
+            builder.append( getIndent( indent ) + "sink" + betaNode.getId() + ".assertRight(handle, wm, context);\n" );
+        } else if ( sink instanceof LeftInputAdapterNode ) {
+            LeftInputAdapterNode liaNode = (LeftInputAdapterNode) sink;
+            builder.append( getIndent( indent ) + "sink" + liaNode.getId() + ".assertRight(handle, wm, context);\n" );
+        }
+    }
+
+    private String getIndent(int indent) {
+        char[] spaces = new char[indent];
+        for ( int i = 0; i < spaces.length; i++ ) {
+            spaces[i] = ' ';
+        }
+
+        return new String( spaces );
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java	2008-04-07 02:38:36 UTC (rev 19436)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java	2008-04-07 02:38:49 UTC (rev 19437)
@@ -48,7 +48,7 @@
  */
 public class AlphaNode extends ObjectSource
     implements
-    ObjectTupleSinkNode,
+    ObjectSinkNode,
     NodeMemory {
 
     /**
@@ -59,8 +59,8 @@
     /** The <code>FieldConstraint</code> */
     private AlphaNodeFieldConstraint constraint;
 
-    private ObjectTupleSinkNode      previousRightTupleSinkNode;
-    private ObjectTupleSinkNode      nextRightTupleSinkNode;
+    private ObjectSinkNode      previousRightTupleSinkNode;
+    private ObjectSinkNode      nextRightTupleSinkNode;
 
     public AlphaNode() {
 
@@ -92,8 +92,8 @@
                                             ClassNotFoundException {
         super.readExternal( in );
         constraint = (AlphaNodeFieldConstraint) in.readObject();
-        previousRightTupleSinkNode = (ObjectTupleSinkNode) in.readObject();
-        nextRightTupleSinkNode = (ObjectTupleSinkNode) in.readObject();
+        previousRightTupleSinkNode = (ObjectSinkNode) in.readObject();
+        nextRightTupleSinkNode = (ObjectSinkNode) in.readObject();
     }
 
     public void writeExternal(ObjectOutput out) throws IOException {
@@ -230,7 +230,7 @@
      * @return
      *      The next ObjectSinkNode
      */
-    public ObjectTupleSinkNode getNextObjectSinkNode() {
+    public ObjectSinkNode getNextObjectSinkNode() {
         return this.nextRightTupleSinkNode;
     }
 
@@ -239,7 +239,7 @@
      * @param next
      *      The next ObjectSinkNode
      */
-    public void setNextObjectSinkNode(final ObjectTupleSinkNode next) {
+    public void setNextObjectSinkNode(final ObjectSinkNode next) {
         this.nextRightTupleSinkNode = next;
     }
 
@@ -248,7 +248,7 @@
      * @return
      *      The previous ObjectSinkNode
      */
-    public ObjectTupleSinkNode getPreviousObjectSinkNode() {
+    public ObjectSinkNode getPreviousObjectSinkNode() {
         return this.previousRightTupleSinkNode;
     }
 
@@ -257,7 +257,7 @@
      * @param previous
      *      The previous ObjectSinkNode
      */
-    public void setPreviousObjectSinkNode(final ObjectTupleSinkNode previous) {
+    public void setPreviousObjectSinkNode(final ObjectSinkNode previous) {
         this.previousRightTupleSinkNode = previous;
     }
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java	2008-04-07 02:38:36 UTC (rev 19436)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java	2008-04-07 02:38:49 UTC (rev 19437)
@@ -48,7 +48,7 @@
 abstract class BetaNode extends LeftTupleSource
     implements
     LeftTupleSinkNode,
-    ObjectTupleSinkNode,
+    ObjectSinkNode,
     RightTupleSink,
     NodeMemory {
     // ------------------------------------------------------------
@@ -66,8 +66,8 @@
     private LeftTupleSinkNode   previousTupleSinkNode;
     private LeftTupleSinkNode   nextTupleSinkNode;
 
-    private ObjectTupleSinkNode previousObjectSinkNode;
-    private ObjectTupleSinkNode nextObjectSinkNode;
+    private ObjectSinkNode previousObjectSinkNode;
+    private ObjectSinkNode nextObjectSinkNode;
 
     protected boolean           objectMemory = true;   // hard coded to true
     protected boolean           tupleMemoryEnabled;
@@ -108,8 +108,8 @@
         rightInput = (ObjectSource) in.readObject();
         previousTupleSinkNode = (LeftTupleSinkNode) in.readObject();
         nextTupleSinkNode = (LeftTupleSinkNode) in.readObject();
-        previousObjectSinkNode = (ObjectTupleSinkNode) in.readObject();
-        nextObjectSinkNode = (ObjectTupleSinkNode) in.readObject();
+        previousObjectSinkNode = (ObjectSinkNode) in.readObject();
+        nextObjectSinkNode = (ObjectSinkNode) in.readObject();
         objectMemory = in.readBoolean();
         tupleMemoryEnabled = in.readBoolean();
         super.readExternal( in );
@@ -317,7 +317,7 @@
      * @return
      *      The next ObjectSinkNode
      */
-    public ObjectTupleSinkNode getNextObjectSinkNode() {
+    public ObjectSinkNode getNextObjectSinkNode() {
         return this.nextObjectSinkNode;
     }
 
@@ -326,7 +326,7 @@
      * @param next
      *      The next ObjectSinkNode
      */
-    public void setNextObjectSinkNode(final ObjectTupleSinkNode next) {
+    public void setNextObjectSinkNode(final ObjectSinkNode next) {
         this.nextObjectSinkNode = next;
     }
 
@@ -335,7 +335,7 @@
      * @return
      *      The previous ObjectSinkNode
      */
-    public ObjectTupleSinkNode getPreviousObjectSinkNode() {
+    public ObjectSinkNode getPreviousObjectSinkNode() {
         return this.previousObjectSinkNode;
     }
 
@@ -344,7 +344,7 @@
      * @param previous
      *      The previous ObjectSinkNode
      */
-    public void setPreviousObjectSinkNode(final ObjectTupleSinkNode previous) {
+    public void setPreviousObjectSinkNode(final ObjectSinkNode previous) {
         this.previousObjectSinkNode = previous;
     }
 

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	2008-04-07 02:38:36 UTC (rev 19436)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java	2008-04-07 02:38:49 UTC (rev 19437)
@@ -70,6 +70,18 @@
         out.writeObject( hashedSinkMap );
         out.writeInt( alphaNodeHashingThreshold );
     }
+    
+    public ObjectSinkNodeList getOthers() {
+        return this.otherSinks;        
+    }
+    
+    public ObjectSinkNodeList getHashableSinks() {
+        return this.hashableSinks;
+    }
+    
+    public ObjectHashMap getHashedSinkMap() {
+        return this.hashedSinkMap;
+    }    
 
     public void addObjectSink(final ObjectSink sink) {
         if ( sink instanceof AlphaNode ) {
@@ -100,7 +112,7 @@
                         if ( this.hashableSinks == null ) {
                             this.hashableSinks = new ObjectSinkNodeList();
                         }
-                        this.hashableSinks.add( (ObjectTupleSinkNode) sink );
+                        this.hashableSinks.add( (ObjectSinkNode) sink );
                     }
                     return;
                 }
@@ -112,7 +124,7 @@
             this.otherSinks = new ObjectSinkNodeList();
         }
 
-        this.otherSinks.add( (ObjectTupleSinkNode) sink );
+        this.otherSinks.add( (ObjectSinkNode) sink );
     }
 
     public void removeObjectSink(final ObjectSink sink) {
@@ -139,7 +151,7 @@
                             unHashSinks( fieldIndex );
                         }
                     } else {
-                        this.hashableSinks.remove( (ObjectTupleSinkNode) sink );
+                        this.hashableSinks.remove( (ObjectSinkNode) sink );
                     }
 
                     if ( this.hashableSinks != null && this.hashableSinks.isEmpty() ) {
@@ -151,7 +163,7 @@
             }
         }
 
-        this.otherSinks.remove( (ObjectTupleSinkNode) sink );
+        this.otherSinks.remove( (ObjectSinkNode) sink );
 
         if ( this.otherSinks.isEmpty() ) {
             this.otherSinks = null;
@@ -167,7 +179,7 @@
             this.hashedSinkMap = new ObjectHashMap();
         }
 
-        for ( ObjectTupleSinkNode sink = this.hashableSinks.getFirst(); sink != null; sink = sink.getNextObjectSinkNode() ) {
+        for ( ObjectSinkNode sink = this.hashableSinks.getFirst(); sink != null; sink = sink.getNextObjectSinkNode() ) {
             final AlphaNode alphaNode = (AlphaNode) sink;
             final AlphaNodeFieldConstraint fieldConstraint = alphaNode.getConstraint();
             final LiteralConstraint literalConstraint = (LiteralConstraint) fieldConstraint;
@@ -183,7 +195,7 @@
         }
 
         for ( final java.util.Iterator it = list.iterator(); it.hasNext(); ) {
-            final ObjectTupleSinkNode sink = (ObjectTupleSinkNode) it.next();
+            final ObjectSinkNode sink = (ObjectSinkNode) it.next();
             this.hashableSinks.remove( sink );
         }
 
@@ -326,7 +338,7 @@
 
         // propagate unhashed
         if ( this.hashableSinks != null ) {
-            for ( ObjectTupleSinkNode sink = this.hashableSinks.getFirst(); sink != null; sink = sink.getNextObjectSinkNode() ) {
+            for ( ObjectSinkNode sink = this.hashableSinks.getFirst(); sink != null; sink = sink.getNextObjectSinkNode() ) {
                 sink.assertObject( factHandle,
                                    context,
                                    workingMemory );
@@ -335,7 +347,7 @@
 
         if ( this.otherSinks != null ) {
             // propagate others
-            for ( ObjectTupleSinkNode sink = this.otherSinks.getFirst(); sink != null; sink = sink.getNextObjectSinkNode() ) {
+            for ( ObjectSinkNode sink = this.otherSinks.getFirst(); sink != null; sink = sink.getNextObjectSinkNode() ) {
                 sink.assertObject( factHandle,
                                    context,
                                    workingMemory );
@@ -346,7 +358,7 @@
 
     public BaseNode getMatchingNode(BaseNode candidate) {
         if ( this.otherSinks != null ) {
-            for ( ObjectTupleSinkNode sink = this.otherSinks.getFirst(); sink != null; sink = sink.getNextObjectSinkNode() ) {
+            for ( ObjectSinkNode sink = this.otherSinks.getFirst(); sink != null; sink = sink.getNextObjectSinkNode() ) {
                 if (candidate.equals( sink )) {
                     return (BaseNode)sink;
                 }
@@ -354,7 +366,7 @@
         }
 
         if ( this.hashableSinks != null ) {
-            for ( ObjectTupleSinkNode sink = this.hashableSinks.getFirst(); sink != null; sink = sink.getNextObjectSinkNode() ) {
+            for ( ObjectSinkNode sink = this.hashableSinks.getFirst(); sink != null; sink = sink.getNextObjectSinkNode() ) {
                 if (candidate.equals( sink )) {
                     return (BaseNode)sink;
                 }
@@ -378,13 +390,13 @@
         int             at      = 0;
 
         if ( this.otherSinks != null ) {
-            for ( ObjectTupleSinkNode sink = this.otherSinks.getFirst(); sink != null; sink = sink.getNextObjectSinkNode() ) {
+            for ( ObjectSinkNode sink = this.otherSinks.getFirst(); sink != null; sink = sink.getNextObjectSinkNode() ) {
                 sinks[at++] = sink;
             }
         }
 
         if ( this.hashableSinks != null ) {
-            for ( ObjectTupleSinkNode sink = this.hashableSinks.getFirst(); sink != null; sink = sink.getNextObjectSinkNode() ) {
+            for ( ObjectSinkNode sink = this.hashableSinks.getFirst(); sink != null; sink = sink.getNextObjectSinkNode() ) {
                 sinks[at++] = sink;
             }
         }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java	2008-04-07 02:38:36 UTC (rev 19436)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java	2008-04-07 02:38:49 UTC (rev 19437)
@@ -44,7 +44,7 @@
  */
 public class LeftInputAdapterNode extends LeftTupleSource
     implements
-    ObjectTupleSinkNode,
+    ObjectSinkNode,
     NodeMemory {
 
     /**
@@ -53,8 +53,8 @@
     private static final long   serialVersionUID = 400L;
     private ObjectSource        objectSource;
 
-    private ObjectTupleSinkNode previousRightTupleSinkNode;
-    private ObjectTupleSinkNode nextRightTupleSinkNode;
+    private ObjectSinkNode previousRightTupleSinkNode;
+    private ObjectSinkNode nextRightTupleSinkNode;
     
     private boolean leftTupleMemoryEnabled;
 
@@ -86,8 +86,8 @@
                                             ClassNotFoundException {
         super.readExternal( in );
         objectSource = (ObjectSource) in.readObject();
-        previousRightTupleSinkNode = (ObjectTupleSinkNode) in.readObject();
-        nextRightTupleSinkNode = (ObjectTupleSinkNode) in.readObject();
+        previousRightTupleSinkNode = (ObjectSinkNode) in.readObject();
+        nextRightTupleSinkNode = (ObjectSinkNode) in.readObject();
         leftTupleMemoryEnabled = in.readBoolean();
     }
 
@@ -182,7 +182,7 @@
      * @return
      *      The next ObjectSinkNode
      */
-    public ObjectTupleSinkNode getNextObjectSinkNode() {
+    public ObjectSinkNode getNextObjectSinkNode() {
         return this.nextRightTupleSinkNode;
     }
 
@@ -191,7 +191,7 @@
      * @param next
      *      The next ObjectSinkNode
      */
-    public void setNextObjectSinkNode(final ObjectTupleSinkNode next) {
+    public void setNextObjectSinkNode(final ObjectSinkNode next) {
         this.nextRightTupleSinkNode = next;
     }
 
@@ -200,7 +200,7 @@
      * @return
      *      The previous ObjectSinkNode
      */
-    public ObjectTupleSinkNode getPreviousObjectSinkNode() {
+    public ObjectSinkNode getPreviousObjectSinkNode() {
         return this.previousRightTupleSinkNode;
     }
 
@@ -209,7 +209,7 @@
      * @param previous
      *      The previous ObjectSinkNode
      */
-    public void setPreviousObjectSinkNode(final ObjectTupleSinkNode previous) {
+    public void setPreviousObjectSinkNode(final ObjectSinkNode previous) {
         this.previousRightTupleSinkNode = previous;
     }
 
@@ -268,6 +268,10 @@
                                       final InternalWorkingMemory workingMemory) {
             throw new UnsupportedOperationException( "ObjectSinkAdapter onlys supports assertObject method calls" );
         }
+
+        public int getId() {
+            return 0;
+        }
     }
 
 }

Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSinkNode.java (from rev 19429, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTupleSinkNode.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSinkNode.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSinkNode.java	2008-04-07 02:38:49 UTC (rev 19437)
@@ -0,0 +1,60 @@
+package org.drools.reteoo;
+
+/*
+ * 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.
+ */
+
+/**
+ * Items placed in a <code>LinkedList<code> must implement this interface .
+ * 
+ * @see LeftTupleSinkNodeList
+ * 
+ * @author <a href="mailto:mark.proctor at jboss.com">Mark Proctor</a>
+ * @author <a href="mailto:bob at werken.com">Bob McWhirter</a>
+ */
+public interface ObjectSinkNode
+    extends
+    ObjectSink {
+
+    /**
+     * Returns the next node
+     * @return
+     *      The next LinkedListNode
+     */
+
+    public ObjectSinkNode getNextObjectSinkNode();
+
+    /**
+     * Sets the next node 
+     * @param next
+     *      The next LinkedListNode
+     */
+    public void setNextObjectSinkNode(ObjectSinkNode next);
+
+    /**
+     * Returns the previous node
+     * @return
+     *      The previous LinkedListNode
+     */
+    public ObjectSinkNode getPreviousObjectSinkNode();
+
+    /**
+     * Sets the previous node 
+     * @param previous
+     *      The previous LinkedListNode
+     */
+    public void setPreviousObjectSinkNode(ObjectSinkNode previous);
+
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSinkNodeList.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSinkNodeList.java	2008-04-07 02:38:36 UTC (rev 19436)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSinkNodeList.java	2008-04-07 02:38:49 UTC (rev 19437)
@@ -51,8 +51,8 @@
     Externalizable {
     private static final long   serialVersionUID = 400L;
 
-    private ObjectTupleSinkNode firstNode;
-    private ObjectTupleSinkNode lastNode;
+    private ObjectSinkNode firstNode;
+    private ObjectSinkNode lastNode;
 
     private int                 size;
 
@@ -65,8 +65,8 @@
 
     public void readExternal(ObjectInput in) throws IOException,
                                             ClassNotFoundException {
-        firstNode = (ObjectTupleSinkNode) in.readObject();
-        lastNode = (ObjectTupleSinkNode) in.readObject();
+        firstNode = (ObjectSinkNode) in.readObject();
+        lastNode = (ObjectSinkNode) in.readObject();
         size = in.readInt();
     }
 
@@ -83,7 +83,7 @@
      * @param node
      *      The <code>ObjectSinkNode</code> to be added
      */
-    public void add(final ObjectTupleSinkNode node) {
+    public void add(final ObjectSinkNode node) {
         if ( this.firstNode == null ) {
             this.firstNode = node;
             this.lastNode = node;;
@@ -103,7 +103,7 @@
      * @param node
      *      The <code>ObjectSinkNode</code> to be removed.
      */
-    public void remove(final ObjectTupleSinkNode node) {
+    public void remove(final ObjectSinkNode node) {
         if ( (this.firstNode != node) && (this.lastNode != node) ) {
             node.getPreviousObjectSinkNode().setNextObjectSinkNode( node.getNextObjectSinkNode() );
             node.getNextObjectSinkNode().setPreviousObjectSinkNode( node.getPreviousObjectSinkNode() );
@@ -125,7 +125,7 @@
      * @return
      *      The first <code>ObjectSinkNode</code>.
      */
-    public final ObjectTupleSinkNode getFirst() {
+    public final ObjectSinkNode getFirst() {
         return this.firstNode;
     }
 
@@ -134,7 +134,7 @@
      * @return
      *      The last <code>ObjectSinkNode</code>.
      */
-    public final ObjectTupleSinkNode getLast() {
+    public final ObjectSinkNode getLast() {
         return this.lastNode;
     }
 
@@ -145,11 +145,11 @@
      * @return
      *      The first <code>ObjectSinkNode</code>.
      */
-    public ObjectTupleSinkNode removeFirst() {
+    public ObjectSinkNode removeFirst() {
         if ( this.firstNode == null ) {
             return null;
         }
-        final ObjectTupleSinkNode node = this.firstNode;
+        final ObjectSinkNode node = this.firstNode;
         this.firstNode = node.getNextObjectSinkNode();
         node.setNextObjectSinkNode( null );
         if ( this.firstNode != null ) {
@@ -168,11 +168,11 @@
      * @return
      *      The first <code>ObjectSinkNode</code>.
      */
-    public ObjectTupleSinkNode removeLast() {
+    public ObjectSinkNode removeLast() {
         if ( this.lastNode == null ) {
             return null;
         }
-        final ObjectTupleSinkNode node = this.lastNode;
+        final ObjectSinkNode node = this.lastNode;
         this.lastNode = node.getPreviousObjectSinkNode();
         node.setPreviousObjectSinkNode( null );
         if ( this.lastNode != null ) {
@@ -214,8 +214,8 @@
      */
     public Iterator iterator() {
         return new Iterator() {
-            private ObjectTupleSinkNode currentNode = null;
-            private ObjectTupleSinkNode nextNode    = getFirst();
+            private ObjectSinkNode currentNode = null;
+            private ObjectSinkNode nextNode    = getFirst();
 
             public boolean hasNext() {
                 return (this.nextNode != null);

Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTupleSinkNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTupleSinkNode.java	2008-04-07 02:38:36 UTC (rev 19436)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTupleSinkNode.java	2008-04-07 02:38:49 UTC (rev 19437)
@@ -1,60 +0,0 @@
-package org.drools.reteoo;
-
-/*
- * 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.
- */
-
-/**
- * Items placed in a <code>LinkedList<code> must implement this interface .
- * 
- * @see LeftTupleSinkNodeList
- * 
- * @author <a href="mailto:mark.proctor at jboss.com">Mark Proctor</a>
- * @author <a href="mailto:bob at werken.com">Bob McWhirter</a>
- */
-public interface ObjectTupleSinkNode
-    extends
-    ObjectSink {
-
-    /**
-     * Returns the next node
-     * @return
-     *      The next LinkedListNode
-     */
-
-    public ObjectTupleSinkNode getNextObjectSinkNode();
-
-    /**
-     * Sets the next node 
-     * @param next
-     *      The next LinkedListNode
-     */
-    public void setNextObjectSinkNode(ObjectTupleSinkNode next);
-
-    /**
-     * Returns the previous node
-     * @return
-     *      The previous LinkedListNode
-     */
-    public ObjectTupleSinkNode getPreviousObjectSinkNode();
-
-    /**
-     * Sets the previous node 
-     * @param previous
-     *      The previous LinkedListNode
-     */
-    public void setPreviousObjectSinkNode(ObjectTupleSinkNode previous);
-
-}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/PropagationQueuingNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/PropagationQueuingNode.java	2008-04-07 02:38:36 UTC (rev 19436)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/PropagationQueuingNode.java	2008-04-07 02:38:49 UTC (rev 19437)
@@ -42,7 +42,7 @@
  */
 public class PropagationQueuingNode extends ObjectSource
     implements
-    ObjectTupleSinkNode,
+    ObjectSinkNode,
     NodeMemory {
 
     private static final long   serialVersionUID        = -615639068150958767L;
@@ -50,8 +50,8 @@
     // should we make this one configurable?
     private static final int    PROPAGATION_SLICE_LIMIT = 1000;
 
-    private ObjectTupleSinkNode previousObjectSinkNode;
-    private ObjectTupleSinkNode nextObjectSinkNode;
+    private ObjectSinkNode previousObjectSinkNode;
+    private ObjectSinkNode nextObjectSinkNode;
     private PropagateAction     action;
 
     public PropagationQueuingNode() {
@@ -79,8 +79,8 @@
     public void readExternal(ObjectInput in) throws IOException,
                                             ClassNotFoundException {
         super.readExternal( in );
-        previousObjectSinkNode = (ObjectTupleSinkNode) in.readObject();
-        nextObjectSinkNode = (ObjectTupleSinkNode) in.readObject();
+        previousObjectSinkNode = (ObjectSinkNode) in.readObject();
+        nextObjectSinkNode = (ObjectSinkNode) in.readObject();
         action = (PropagateAction) in.readObject();
     }
 
@@ -152,30 +152,30 @@
     }
 
     /**
-     * @see org.drools.reteoo.ObjectTupleSinkNode#getNextObjectSinkNode()
+     * @see org.drools.reteoo.ObjectSinkNode#getNextObjectSinkNode()
      */
-    public ObjectTupleSinkNode getNextObjectSinkNode() {
+    public ObjectSinkNode getNextObjectSinkNode() {
         return this.nextObjectSinkNode;
     }
 
     /**
-     * @see org.drools.reteoo.ObjectTupleSinkNode#getPreviousObjectSinkNode()
+     * @see org.drools.reteoo.ObjectSinkNode#getPreviousObjectSinkNode()
      */
-    public ObjectTupleSinkNode getPreviousObjectSinkNode() {
+    public ObjectSinkNode getPreviousObjectSinkNode() {
         return this.previousObjectSinkNode;
     }
 
     /**
-     * @see org.drools.reteoo.ObjectTupleSinkNode#setNextObjectSinkNode(org.drools.reteoo.ObjectTupleSinkNode)
+     * @see org.drools.reteoo.ObjectSinkNode#setNextObjectSinkNode(org.drools.reteoo.ObjectSinkNode)
      */
-    public void setNextObjectSinkNode(ObjectTupleSinkNode next) {
+    public void setNextObjectSinkNode(ObjectSinkNode next) {
         this.nextObjectSinkNode = next;
     }
 
     /**
-     * @see org.drools.reteoo.ObjectTupleSinkNode#setPreviousObjectSinkNode(org.drools.reteoo.ObjectTupleSinkNode)
+     * @see org.drools.reteoo.ObjectSinkNode#setPreviousObjectSinkNode(org.drools.reteoo.ObjectSinkNode)
      */
-    public void setPreviousObjectSinkNode(ObjectTupleSinkNode previous) {
+    public void setPreviousObjectSinkNode(ObjectSinkNode previous) {
         this.previousObjectSinkNode = previous;
     }
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Sink.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Sink.java	2008-04-07 02:38:36 UTC (rev 19436)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Sink.java	2008-04-07 02:38:49 UTC (rev 19437)
@@ -6,5 +6,5 @@
  * @author etirelli
  */
 interface Sink {
-
+    public int getId();
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockObjectSink.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockObjectSink.java	2008-04-07 02:38:36 UTC (rev 19436)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/MockObjectSink.java	2008-04-07 02:38:49 UTC (rev 19437)
@@ -25,13 +25,13 @@
 
 public class MockObjectSink
     implements
-    ObjectTupleSinkNode,
+    ObjectSinkNode,
     RightTupleSink {
     private final List     asserted  = new ArrayList();
     private final List     retracted = new ArrayList();
 
-    private ObjectTupleSinkNode previousObjectSinkNode;
-    private ObjectTupleSinkNode nextObjectSinkNode;
+    private ObjectSinkNode previousObjectSinkNode;
+    private ObjectSinkNode nextObjectSinkNode;
 
     public void assertObject(final InternalFactHandle factHandle,
                              final PropagationContext context,
@@ -59,7 +59,7 @@
      * @return
      *      The next ObjectSinkNode
      */
-    public ObjectTupleSinkNode getNextObjectSinkNode() {
+    public ObjectSinkNode getNextObjectSinkNode() {
         return this.nextObjectSinkNode;
     }
 
@@ -68,7 +68,7 @@
      * @param next
      *      The next ObjectSinkNode
      */
-    public void setNextObjectSinkNode(final ObjectTupleSinkNode next) {
+    public void setNextObjectSinkNode(final ObjectSinkNode next) {
         this.nextObjectSinkNode = next;
     }
 
@@ -77,7 +77,7 @@
      * @return
      *      The previous ObjectSinkNode
      */
-    public ObjectTupleSinkNode getPreviousObjectSinkNode() {
+    public ObjectSinkNode getPreviousObjectSinkNode() {
         return this.previousObjectSinkNode;
     }
 
@@ -86,7 +86,7 @@
      * @param previous
      *      The previous ObjectSinkNode
      */
-    public void setPreviousObjectSinkNode(final ObjectTupleSinkNode previous) {
+    public void setPreviousObjectSinkNode(final ObjectSinkNode previous) {
         this.previousObjectSinkNode = previous;
     }
 
@@ -99,4 +99,9 @@
         // TODO Auto-generated method stub
         
     }
+
+    public int getId() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
 }
\ No newline at end of file




More information about the jboss-svn-commits mailing list