[jboss-svn-commits] JBL Code SVN: r7074 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: . common reteoo spi
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Oct 24 07:32:17 EDT 2006
Author: mark.proctor at jboss.com
Date: 2006-10-24 07:32:09 -0400 (Tue, 24 Oct 2006)
New Revision: 7074
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/FactHandle.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.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/EqualityAssertMapComparator.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/IdentityAssertMapComparator.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalFactHandle.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ColumnExtractor.java
Log:
-Fixed logical assertion issues
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/FactHandle.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/FactHandle.java 2006-10-24 11:31:53 UTC (rev 7073)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/FactHandle.java 2006-10-24 11:32:09 UTC (rev 7074)
@@ -35,5 +35,5 @@
*
* @return The external string form.
*/
- String toExternalForm();
+ String toExternalForm();
}
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 11:31:53 UTC (rev 7073)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2006-10-24 11:32:09 UTC (rev 7074)
@@ -37,6 +37,7 @@
import org.drools.RuleBase;
import org.drools.RuleBaseConfiguration;
import org.drools.WorkingMemory;
+import org.drools.base.ShadowProxy;
import org.drools.event.AgendaEventListener;
import org.drools.event.AgendaEventSupport;
import org.drools.event.WorkingMemoryEventListener;
@@ -51,6 +52,7 @@
import org.drools.spi.PropagationContext;
import org.drools.util.ObjectHashMap;
import org.drools.util.PrimitiveLongMap;
+import org.drools.util.ObjectHashMap.ObjectEntry;
import org.drools.util.concurrent.locks.Lock;
import org.drools.util.concurrent.locks.ReentrantLock;
@@ -421,23 +423,26 @@
public List getObjects() {
final List list = new ArrayList( this.assertMap.size() );
- // for ( final Iterator it = this.assertMap.keySet().iterator(); it.hasNext(); ) {
- // list.add( ((InternalFactHandle) it.next()).getObject() );
- // }
+ org.drools.util.Iterator it = this.assertMap.iterator();
+ for ( ObjectEntry entry = (ObjectEntry)it.next(); entry != null; entry = (ObjectEntry)it.next() ) {
+ InternalFactHandle handle = (InternalFactHandle) entry.getKey();
+ Object object = ( handle.isShadowFact() ) ? ((ShadowProxy)handle.getObject()).getShadowedObject() : handle.getObject();
+ list.add( object );
+ }
return list;
}
public List getObjects(final Class objectClass) {
- final List list = new ArrayList();
+ final List list = new ArrayList( this.assertMap.size() );
- // for ( final Iterator it = this.assertMap.keySet().iterator(); it.hasNext(); ) {
- // final Object object = ((InternalFactHandle) it.next()).getObject();
- //
- // if ( objectClass.isInstance( object ) ) {
- // list.add( object );
- // }
- // }
-
+ org.drools.util.Iterator it = this.assertMap.iterator();
+ for ( ObjectEntry entry = (ObjectEntry)it.next(); entry != null; entry = (ObjectEntry)it.next() ) {
+ InternalFactHandle handle = (InternalFactHandle) entry.getKey();
+ Object object = ( handle.isShadowFact() ) ? ((ShadowProxy)handle.getObject()).getShadowedObject() : handle.getObject();
+ if ( objectClass.isInstance( object ) ) {
+ list.add( object );
+ }
+ }
return list;
}
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 2006-10-24 11:31:53 UTC (rev 7073)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java 2006-10-24 11:32:09 UTC (rev 7074)
@@ -40,6 +40,7 @@
private Object object;
private EqualityKey key;
private int objectHashCode;
+ private boolean shadowFact;
// ----------------------------------------------------------------------
// Constructors
@@ -133,6 +134,14 @@
this.object = null;
}
+ public boolean isShadowFact() {
+ return this.shadowFact;
+ }
+
+ public void setShadowFact(boolean shadowFact) {
+ this.shadowFact = shadowFact;
+ }
+
public Object getObject() {
return this.object;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EqualityAssertMapComparator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EqualityAssertMapComparator.java 2006-10-24 11:31:53 UTC (rev 7073)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EqualityAssertMapComparator.java 2006-10-24 11:32:09 UTC (rev 7074)
@@ -16,6 +16,7 @@
* limitations under the License.
*/
+import org.drools.base.ShadowProxy;
import org.drools.util.AbstractHashTable.ObjectComparator;
public class EqualityAssertMapComparator
@@ -52,12 +53,16 @@
* equals with the identity of the objects involved
*/
public boolean equal(final Object o1,
- final Object o2) {
+ Object o2) {
if ( o1.getClass() == this.factHandleClass ) {
return o1 == o2;
}
- return o1 == ((InternalFactHandle) o2).getObject() || o1.equals( ((InternalFactHandle) o2).getObject() );
+ InternalFactHandle handle = ((InternalFactHandle) o2);
+
+ o2 = ( handle.isShadowFact() ) ? ((ShadowProxy) handle.getObject() ).getShadowedObject() : handle.getObject();
+
+ return o1 == o2 || o1.equals( o2 );
}
public int compare(final Object o1,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/IdentityAssertMapComparator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/IdentityAssertMapComparator.java 2006-10-24 11:31:53 UTC (rev 7073)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/IdentityAssertMapComparator.java 2006-10-24 11:32:09 UTC (rev 7074)
@@ -16,6 +16,7 @@
* limitations under the License.
*/
+import org.drools.base.ShadowProxy;
import org.drools.util.AbstractHashTable.ObjectComparator;
public class IdentityAssertMapComparator
@@ -57,7 +58,9 @@
return ((InternalFactHandle) o1).getObject() == ((InternalFactHandle) o2).getObject();
}
- return o1 == ((InternalFactHandle) o2).getObject();
+ InternalFactHandle handle = ((InternalFactHandle) o2);
+
+ return o1 == ( ( handle.isShadowFact() ) ? ((ShadowProxy) handle.getObject() ).getShadowedObject() : handle.getObject() );
}
public int compare(final Object o1,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalFactHandle.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalFactHandle.java 2006-10-24 11:31:53 UTC (rev 7073)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalFactHandle.java 2006-10-24 11:32:09 UTC (rev 7074)
@@ -38,4 +38,8 @@
public void invalidate();
public int getObjectHashCode();
+
+ public boolean isShadowFact();
+
+ public void setShadowFact(boolean shadowFact);
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java 2006-10-24 11:31:53 UTC (rev 7073)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java 2006-10-24 11:32:09 UTC (rev 7074)
@@ -143,6 +143,7 @@
if ( !(handle.getObject() instanceof ShadowProxy) ) {
// replaces the actual object by its shadow before propagating
handle.setObject( this.objectType.getShadow( handle.getObject() ) );
+ handle.setShadowFact( true );
} else {
((ShadowProxy) handle.getObject()).updateProxy();
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ColumnExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ColumnExtractor.java 2006-10-24 11:31:53 UTC (rev 7073)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ColumnExtractor.java 2006-10-24 11:32:09 UTC (rev 7074)
@@ -39,8 +39,7 @@
}
public Object getValue(final Object object) {
- return object;
- //return ( this.objectType.isShadowEnabled() ) ? ((ShadowProxy)object).getShadowedObject() : object;
+ return ( this.objectType.isShadowEnabled() ) ? ((ShadowProxy)object).getShadowedObject() : object;
}
public ObjectType getObjectType() {
More information about the jboss-svn-commits
mailing list