[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