[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