[jboss-svn-commits] JBL Code SVN: r7059 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: common reteoo
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Oct 23 21:36:21 EDT 2006
Author: mark.proctor at jboss.com
Date: 2006-10-23 21:36:16 -0400 (Mon, 23 Oct 2006)
New Revision: 7059
Added:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EmptyObjectSinkAdapter.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EmptyTupleSinkAdapter.java
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TerminalNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSource.java
Log:
-Fixed dynamic rule tests
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2006-10-24 01:19:58 UTC (rev 7058)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2006-10-24 01:36:16 UTC (rev 7059)
@@ -411,9 +411,8 @@
*
* @return
*/
- public Map getFactHandleMap() {
- return null;
- //return Collections.unmodifiableMap( this.assertMap );
+ public ObjectHashMap getFactHandleMap() {
+ return this.assertMap;
}
/**
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java 2006-10-24 01:19:58 UTC (rev 7058)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java 2006-10-24 01:36:16 UTC (rev 7059)
@@ -5,6 +5,7 @@
import org.drools.WorkingMemory;
import org.drools.event.AgendaEventSupport;
import org.drools.spi.FactHandleFactory;
+import org.drools.util.ObjectHashMap;
public interface InternalWorkingMemory
extends
@@ -17,7 +18,7 @@
public long getNextPropagationIdCounter();
- public Map getFactHandleMap();
+ public ObjectHashMap getFactHandleMap();
public AgendaEventSupport getAgendaEventSupport();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java 2006-10-24 01:19:58 UTC (rev 7058)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java 2006-10-24 01:36:16 UTC (rev 7059)
@@ -362,7 +362,11 @@
}
public int size() {
- return this.otherSinks.size();
+ int size;
+ size =+ ( ( otherSinks != null ) ? otherSinks.size() : 0);
+ size =+ (( hashableSinks != null ) ? hashableSinks.size() : 0);
+ size =+ ( ( hashedSinkMap != null ) ? hashedSinkMap.size() : 0);
+ return size;
}
public static class HashKey {
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EmptyObjectSinkAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EmptyObjectSinkAdapter.java 2006-10-24 01:19:58 UTC (rev 7058)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EmptyObjectSinkAdapter.java 2006-10-24 01:36:16 UTC (rev 7059)
@@ -0,0 +1,35 @@
+package org.drools.reteoo;
+
+import org.drools.common.InternalFactHandle;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.spi.PropagationContext;
+
+public class EmptyObjectSinkAdapter
+ implements
+ ObjectSinkPropagator {
+ private static final EmptyObjectSinkAdapter instance = new EmptyObjectSinkAdapter();
+
+ public static EmptyObjectSinkAdapter getInstance() {
+ return instance;
+ }
+
+ private EmptyObjectSinkAdapter() {
+ }
+
+ public void propagateAssertObject(final InternalFactHandle handle,
+ final PropagationContext context,
+ final InternalWorkingMemory workingMemory) {
+
+ }
+
+ public void propagateRetractObject(final InternalFactHandle handle,
+ final PropagationContext context,
+ final InternalWorkingMemory workingMemory,
+ final boolean useHash) {
+ }
+
+ public ObjectSink[] getSinks() {
+ return new ObjectSink[]{};
+ }
+
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EmptyTupleSinkAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EmptyTupleSinkAdapter.java 2006-10-24 01:19:58 UTC (rev 7058)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/EmptyTupleSinkAdapter.java 2006-10-24 01:36:16 UTC (rev 7059)
@@ -0,0 +1,59 @@
+package org.drools.reteoo;
+
+import org.drools.common.InternalFactHandle;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.spi.PropagationContext;
+
+public class EmptyTupleSinkAdapter
+ implements
+ TupleSinkPropagator {
+
+ private static final EmptyTupleSinkAdapter instance = new EmptyTupleSinkAdapter();
+
+ public static final EmptyTupleSinkAdapter getInstance() {
+ return instance;
+ }
+
+ private EmptyTupleSinkAdapter() {
+ }
+
+ public void propagateAssertTuple(final ReteTuple tuple,
+ final InternalFactHandle handle,
+ final PropagationContext context,
+ final InternalWorkingMemory workingMemory) {
+ }
+
+ public void propagateAssertTuple(final ReteTuple tuple,
+ final PropagationContext context,
+ final InternalWorkingMemory workingMemory) {
+ }
+
+ public void propagateRetractTuple(final ReteTuple tuple,
+ final InternalFactHandle handle,
+ final PropagationContext context,
+ final InternalWorkingMemory workingMemory) {
+ }
+
+ public void propagateRetractTuple(final ReteTuple tuple,
+ final PropagationContext context,
+ final InternalWorkingMemory workingMemory) {
+ }
+
+ public void createAndPropagateAssertTuple(final InternalFactHandle handle,
+ final PropagationContext context,
+ final InternalWorkingMemory workingMemory) {
+ }
+
+ public void createAndPropagateRetractTuple(final InternalFactHandle handle,
+ final PropagationContext context,
+ final InternalWorkingMemory workingMemory) {
+ }
+
+ public TupleSink[] getSinks() {
+ return new TupleSink[]{};
+ }
+
+ public int size() {
+ return 0;
+ }
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java 2006-10-24 01:19:58 UTC (rev 7058)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectSource.java 2006-10-24 01:36:16 UTC (rev 7059)
@@ -61,6 +61,7 @@
ObjectSource(final int id) {
this( id,
null );
+ this.sink = EmptyObjectSinkAdapter.getInstance();
}
/**
@@ -88,7 +89,7 @@
* <code>FactHandleImpl</code>.
*/
protected void addObjectSink(final ObjectSink objectSink) {
- if ( this.sink == null ) {
+ if ( this.sink == EmptyObjectSinkAdapter.getInstance() ) {
this.sink = new SingleObjectSinkAdapter( objectSink );
} else if ( this.sink.getClass() == SingleObjectSinkAdapter.class ) {
final CompositeObjectSinkAdapter sinkAdapter = new CompositeObjectSinkAdapter();
@@ -107,12 +108,12 @@
* The <code>ObjectSink</code> to remove
*/
protected void removeObjectSink(final ObjectSink objectSink) {
- if ( this.sink == null ){
+ if ( this.sink == EmptyObjectSinkAdapter.getInstance() ){
throw new IllegalArgumentException( "Cannot remove a sink, when the list of sinks is null" );
}
if ( this.sink.getClass() == SingleObjectSinkAdapter.class ) {
- this.sink = null;
+ this.sink = EmptyObjectSinkAdapter.getInstance();
} else {
CompositeObjectSinkAdapter sinkAdapter = ( CompositeObjectSinkAdapter ) this.sink;
sinkAdapter.removeObjectSink( objectSink );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java 2006-10-24 01:19:58 UTC (rev 7058)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java 2006-10-24 01:36:16 UTC (rev 7059)
@@ -230,8 +230,8 @@
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
final ObjectTypeNode node = (ObjectTypeNode) sink;
- for ( final java.util.Iterator i = workingMemory.getFactHandleMap().entrySet().iterator(); i.hasNext(); ) {
- final java.util.Map.Entry entry = (java.util.Map.Entry) i.next();
+ Iterator it = workingMemory.getFactHandleMap().iterator();
+ for ( ObjectEntry entry = ( ObjectEntry ) it.next(); entry != null; entry = ( ObjectEntry ) it.next() ) {
final InternalFactHandle handle = (InternalFactHandle) entry.getValue();
if ( node.matches( handle.getObject() ) ) {
node.assertObject( handle,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TerminalNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TerminalNode.java 2006-10-24 01:19:58 UTC (rev 7058)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TerminalNode.java 2006-10-24 01:36:16 UTC (rev 7059)
@@ -276,8 +276,8 @@
final TerminalNodeMemory memory = (TerminalNodeMemory) workingMemory.getNodeMemory( this );
final Iterator it = memory.getTupleMemory().iterator();
- for ( ObjectEntry entry = (ObjectEntry) it.next(); entry != null; entry = (ObjectEntry) it.next() ) {
- final Activation activation = (Activation) entry.getValue();
+ for ( ReteTuple tuple = (ReteTuple) it.next(); tuple != null; tuple = (ReteTuple) it.next() ) {
+ final Activation activation = (Activation) tuple.getActivation();
if ( activation.isActivated() ) {
activation.remove();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSource.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSource.java 2006-10-24 01:19:58 UTC (rev 7058)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/TupleSource.java 2006-10-24 01:36:16 UTC (rev 7059)
@@ -56,6 +56,7 @@
*/
TupleSource(final int id) {
super( id );
+ this.sink = EmptyTupleSinkAdapter.getInstance();
}
// ------------------------------------------------------------
@@ -71,7 +72,7 @@
* <code>Tuples</code>.
*/
protected void addTupleSink(final TupleSink tupleSink) {
- if ( this.sink == null ) {
+ if ( this.sink == EmptyTupleSinkAdapter.getInstance() ) {
this.sink = new SingleTupleSinkAdapter( tupleSink );
} else if ( this.sink.getClass() == SingleTupleSinkAdapter.class ) {
final CompositeTupleSinkAdapter sinkAdapter = new CompositeTupleSinkAdapter();
@@ -90,10 +91,14 @@
* The <code>TupleSink</code> to remove
*/
protected void removeTupleSink(final TupleSink tupleSink) {
+ if ( this.sink == EmptyTupleSinkAdapter.getInstance()){
+ throw new IllegalArgumentException( "Cannot remove a sink, when the list of sinks is null" );
+ }
+
if ( this.sink.getClass() == SingleTupleSinkAdapter.class ) {
- this.sink = null;
+ this.sink = EmptyTupleSinkAdapter.getInstance();
} else {
- final CompositeTupleSinkAdapter sinkAdapter = (CompositeTupleSinkAdapter) tupleSink;
+ final CompositeTupleSinkAdapter sinkAdapter = (CompositeTupleSinkAdapter) this.sink;
sinkAdapter.removeTupleSink( tupleSink );
if ( sinkAdapter.size() == 1 ) {
this.sink = new SingleTupleSinkAdapter( sinkAdapter.getSinks()[0] );
More information about the jboss-svn-commits
mailing list