[jboss-svn-commits] JBL Code SVN: r19011 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/reteoo and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat Mar 15 03:16:32 EDT 2008
Author: mingjin
Date: 2008-03-15 03:16:31 -0400 (Sat, 15 Mar 2008)
New Revision: 19011
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractFactHandleFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EventFactHandle.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooFactHandleFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FactHandleFactory.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/DefaultFactHandleFactoryTest.java
Log:
merged code compiled, core tests fixed
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractFactHandleFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractFactHandleFactory.java 2008-03-15 06:55:44 UTC (rev 19010)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractFactHandleFactory.java 2008-03-15 07:16:31 UTC (rev 19011)
@@ -21,9 +21,11 @@
import org.drools.util.PrimitiveLongStack;
import java.io.Externalizable;
-import java.io.ObjectInput;
import java.io.IOException;
+import java.io.ObjectInput;
import java.io.ObjectOutput;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
public abstract class AbstractFactHandleFactory
implements
@@ -37,121 +39,82 @@
protected PrimitiveLongStack factHandlePool = new PrimitiveLongStack();
/** The fact id. */
- private long id;
+ private AtomicInteger id;
/** The number of facts created - used for recency. */
- private long counter;
+ private AtomicLong counter;
+ public AbstractFactHandleFactory() {
+ this.id = new AtomicInteger(-1);
+ this.counter = new AtomicLong(-1);
+ }
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- id = in.readLong();
- counter = in.readLong();
+ id = (AtomicInteger)in.readObject();
+ counter = (AtomicLong)in.readObject();
factHandlePool = (PrimitiveLongStack)in.readObject();
}
public void writeExternal(ObjectOutput out) throws IOException {
- out.writeLong(id);
- out.writeLong(counter);
+ out.writeObject(id);
+ out.writeObject(counter);
out.writeObject(factHandlePool);
}
/* (non-Javadoc)
- * @see org.drools.reteoo.FactHandleFactory#newFactHandle()
- */
- public final InternalFactHandle newFactHandle( final Object object, final boolean isEvent, final WorkingMemory workingMemory ) {
- if ( !this.factHandlePool.isEmpty() ) {
- return newFactHandle( this.factHandlePool.pop(),
- object,
- isEvent,
- 0,
- workingMemory );
- }
+ * @see org.drools.reteoo.FactHandleFactory#newFactHandle()
+ */
+ public final InternalFactHandle newFactHandle(final Object object,
+ final boolean isEvent,
+ final WorkingMemory workingMemory) {
+// @FIXME make id re-cycling thread safe
+// if ( !this.factHandlePool.isEmpty() ) {
+// return newFactHandle( this.factHandlePool.pop(),
+// object,
+// isEvent,
+// 0,
+// workingMemory );
+// }
- return newFactHandle( this.id++,
+ return newFactHandle( this.id.incrementAndGet(),
object,
isEvent,
- 0,
workingMemory );
}
/* (non-Javadoc)
- * @see org.drools.reteoo.FactHandleFactory#newFactHandle()
- */
- public final InternalFactHandle newFactHandle( final Object object, final boolean isEvent, long duration, final WorkingMemory workingMemory ) {
- if ( !this.factHandlePool.isEmpty() ) {
- return newFactHandle( this.factHandlePool.pop(),
- object,
- isEvent,
- duration,
- workingMemory );
- }
-
- return newFactHandle( this.id++,
- object,
- isEvent,
- duration,
- workingMemory );
- }
-
- /* (non-Javadoc)
* @see org.drools.reteoo.FactHandleFactory#newFactHandle(long)
*/
- protected final InternalFactHandle newFactHandle(final long id,
+ protected final InternalFactHandle newFactHandle(final int id,
final Object object,
final boolean isEvent,
- final WorkingMemory workingMemory ) {
+ final WorkingMemory workingMemory) {
return newFactHandle( id,
object,
- this.counter++,
+ this.counter.incrementAndGet(),
isEvent,
- 0,
workingMemory );
}
/* (non-Javadoc)
- * @see org.drools.reteoo.FactHandleFactory#newFactHandle(long)
- */
- protected final InternalFactHandle newFactHandle(final long id,
- final Object object,
- final boolean isEvent,
- final long duration,
- final WorkingMemory workingMemory ) {
- return newFactHandle( id,
- object,
- this.counter++,
- isEvent,
- duration,
- workingMemory );
- }
-
- /* (non-Javadoc)
* @see org.drools.reteoo.FactHandleFactory#newFactHandle(long)
*/
- protected abstract InternalFactHandle newFactHandle(final long id,
+ protected abstract InternalFactHandle newFactHandle(final int id,
final Object object,
final long recency,
final boolean isEvent,
- final WorkingMemory workingMemory );
+ final WorkingMemory workingMemory);
/* (non-Javadoc)
- * @see org.drools.reteoo.FactHandleFactory#newFactHandle(long)
- */
- protected abstract InternalFactHandle newFactHandle(final long id,
- final Object object,
- final long recency,
- final boolean isEvent,
- final long duration,
- final WorkingMemory workingMemory );
-
- /* (non-Javadoc)
* @see org.drools.reteoo.FactHandleFactory#increaseFactHandleRecency(org.drools.FactHandle)
*/
public final void increaseFactHandleRecency(final InternalFactHandle factHandle) {
- factHandle.setRecency( this.counter++ );
+ factHandle.setRecency( this.counter.incrementAndGet() );
}
public void destroyFactHandle(final InternalFactHandle factHandle) {
- this.factHandlePool.push( factHandle.getId() );
+// @FIXME make id re-cycling thread safe
+// this.factHandlePool.push( factHandle.getId() );
factHandle.invalidate();
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java 2008-03-15 06:55:44 UTC (rev 19010)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java 2008-03-15 07:16:31 UTC (rev 19011)
@@ -39,7 +39,7 @@
*/
private static final long serialVersionUID = 400L;
/** Handle id. */
- private long id;
+ private int id;
private long recency;
private Object object;
private EqualityKey key;
@@ -47,7 +47,7 @@
private boolean shadowFact;
public void writeExternal(ObjectOutput out) throws IOException {
- out.writeLong(id);
+ out.writeInt(id);
out.writeLong(recency);
out.writeObject(object);
out.writeObject(key);
@@ -56,7 +56,7 @@
}
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- id = in.readLong();
+ id = in.readInt();
recency = in.readLong();
object = in.readObject();
key = (EqualityKey)in.readObject();
@@ -70,7 +70,7 @@
public DefaultFactHandle() {
}
- public DefaultFactHandle(final long id,
+ public DefaultFactHandle(final int id,
final Object object) {
this( id,
object,
@@ -83,7 +83,7 @@
* @param id
* Handle id.
*/
- public DefaultFactHandle(final long id,
+ public DefaultFactHandle(final int id,
final Object object,
final long recency) {
this.id = id;
@@ -119,7 +119,7 @@
* @see Object
*/
public int hashCode() {
- return (int) (this.id ^ (this.id >>> 32));
+ return this.id;
}
/**
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EventFactHandle.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EventFactHandle.java 2008-03-15 06:55:44 UTC (rev 19010)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EventFactHandle.java 2008-03-15 07:16:31 UTC (rev 19011)
@@ -23,7 +23,7 @@
this.duration = 0;
}
- public EventFactHandle(final long id,
+ public EventFactHandle(final int id,
final Object object) {
super( id,
object );
@@ -37,7 +37,7 @@
* @param id
* Handle id.
*/
- public EventFactHandle(final long id,
+ public EventFactHandle(final int id,
final Object object,
final long recency) {
super( id,
@@ -56,7 +56,7 @@
* @param timestamp the timestamp of the occurrence of this event
* @param duration the duration of this event. May be 0 (zero) in case this is a primitive event.
*/
- public EventFactHandle( final long id,
+ public EventFactHandle( final int id,
final Object object,
final long recency,
final long timestamp,
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 2008-03-15 06:55:44 UTC (rev 19010)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AccumulateNode.java 2008-03-15 07:16:31 UTC (rev 19011)
@@ -16,12 +16,6 @@
package org.drools.reteoo;
-import java.util.Arrays;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.io.Externalizable;
-
import org.drools.RuleBaseConfiguration;
import org.drools.RuntimeDroolsException;
import org.drools.common.BetaConstraints;
@@ -38,6 +32,12 @@
import org.drools.util.Iterator;
import org.drools.util.ObjectHashMap.ObjectEntry;
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.Arrays;
+
/**
* AccumulateNode
* A beta node capable of doing accumulate logic.
@@ -94,7 +94,7 @@
out.writeObject(resultConstraints);
out.writeObject(resultBinder);
}
-
+
/**
* @inheritDoc
*
@@ -416,7 +416,7 @@
// First alpha node filters
boolean isAllowed = true;
- final InternalFactHandle createdHandle = workingMemory.getFactHandleFactory().newFactHandle( result, false, 0, workingMemory ); // so far, result is not an event
+ final InternalFactHandle createdHandle = workingMemory.getFactHandleFactory().newFactHandle( result, false, workingMemory ); // so far, result is not an event
for ( int i = 0, length = this.resultConstraints.length; i < length; i++ ) {
if ( !this.resultConstraints[i].isAllowed( createdHandle,
workingMemory,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooFactHandleFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooFactHandleFactory.java 2008-03-15 06:55:44 UTC (rev 19010)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooFactHandleFactory.java 2008-03-15 07:16:31 UTC (rev 19011)
@@ -25,26 +25,14 @@
import org.drools.spi.FactHandleFactory;
import org.drools.temporal.SessionClock;
-import java.io.ObjectInput;
-import java.io.IOException;
-import java.io.ObjectOutput;
-
public class ReteooFactHandleFactory extends AbstractFactHandleFactory {
private static final long serialVersionUID = 400L;
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- super.readExternal(in);
- }
-
- public void writeExternal(ObjectOutput out) throws IOException {
- super.writeExternal(out);
- }
-
/* (non-Javadoc)
* @see org.drools.reteoo.FactHandleFactory#newFactHandle(long)
*/
- protected final InternalFactHandle newFactHandle(final long id,
+ protected final InternalFactHandle newFactHandle(final int id,
final Object object,
final long recency,
final boolean isEvent,
@@ -64,29 +52,6 @@
}
/* (non-Javadoc)
- * @see org.drools.reteoo.FactHandleFactory#newFactHandle(long)
- */
- protected final InternalFactHandle newFactHandle(final long id,
- final Object object,
- final long recency,
- final boolean isEvent,
- final long duration,
- final WorkingMemory workingMemory ) {
- if ( isEvent ) {
- SessionClock clock = ((TemporalSession) workingMemory).getSessionClock();
- return new EventFactHandle( id,
- object,
- recency,
- clock.getCurrentTime(),
- duration ); // primitive events have 0 duration
- } else {
- return new DefaultFactHandle( id,
- object,
- recency );
- }
- }
-
- /* (non-Javadoc)
* @see org.drools.reteoo.FactHandleFactory#newInstance()
*/
public FactHandleFactory newInstance() {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FactHandleFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FactHandleFactory.java 2008-03-15 06:55:44 UTC (rev 19010)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/FactHandleFactory.java 2008-03-15 07:16:31 UTC (rev 19011)
@@ -16,12 +16,12 @@
* limitations under the License.
*/
-import java.io.Serializable;
-
import org.drools.FactHandle;
import org.drools.WorkingMemory;
import org.drools.common.InternalFactHandle;
+import java.io.Serializable;
+
/**
* Factory Interface to return new <code>FactHandle</code>s
*
@@ -38,16 +38,9 @@
*
* @return The handle.
*/
- InternalFactHandle newFactHandle(Object object, boolean isEvent, WorkingMemory workingMemory );
+ public InternalFactHandle newFactHandle(Object object, boolean isEvent, WorkingMemory workingMemory );
/**
- * Construct a handle with a new id and a duration.
- *
- * @return The handle.
- */
- InternalFactHandle newFactHandle(Object object, boolean isEvent, long duration, WorkingMemory workingMemory );
-
- /**
* Increases the recency of the FactHandle
*
* @param factHandle
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/DefaultFactHandleFactoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/DefaultFactHandleFactoryTest.java 2008-03-15 06:55:44 UTC (rev 19010)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/DefaultFactHandleFactoryTest.java 2008-03-15 07:16:31 UTC (rev 19011)
@@ -62,20 +62,21 @@
// destroy handle
factory.destroyFactHandle( handle2 );
- // issue new fact handle and make sure it recycled the id=2
- handle = (DefaultFactHandle) factory.newFactHandle( "cheese", false, null );
- assertEquals( 2,
- handle.getId() );
- assertEquals( 5,
- handle.getRecency() );
+ //@FIXME recycling is currently disabled
+// // issue new fact handle and make sure it recycled the id=2
+// handle = (DefaultFactHandle) factory.newFactHandle( "cheese", false, null );
+// assertEquals( 2,
+// handle.getId() );
+// assertEquals( 5,
+// handle.getRecency() );
+//
+// // issue new handle making sure it correctly resumes ids and recency
+// handle = (DefaultFactHandle) factory.newFactHandle( "cheese", false, null );
+// assertEquals( 4,
+// handle.getId() );
+// assertEquals( 6,
+// handle.getRecency() );
- // issue new handle making sure it correctly resumes ids and recency
- handle = (DefaultFactHandle) factory.newFactHandle( "cheese", false, null );
- assertEquals( 4,
- handle.getId() );
- assertEquals( 6,
- handle.getRecency() );
-
}
}
\ No newline at end of file
More information about the jboss-svn-commits
mailing list