[jboss-svn-commits] JBL Code SVN: r6200 - labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Sep 13 12:15:47 EDT 2006
Author: mark.proctor at jboss.com
Date: 2006-09-13 12:15:39 -0400 (Wed, 13 Sep 2006)
New Revision: 6200
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java
Log:
JBRULES-484 refactor the core reteoo code for sinle and composite propagations
-alpha node inexing bug fix
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-09-13 14:14:17 UTC (rev 6199)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java 2006-09-13 16:15:39 UTC (rev 6200)
@@ -53,8 +53,18 @@
this.hashedSinks = new ObjectSinkNodeList();
}
- this.hashedSinks.add( (ObjectSinkNode) sink );
-
+ if ( fieldIndex.getCount() >= 3 ) {
+ if ( !fieldIndex.isHashed() ) {
+ hashSinks( fieldIndex );
+ }
+ Object value = literalConstraint.getField().getValue();
+ hashedSinkMap.put( new HashKey( index,
+ value ),
+ sink );
+ } else {
+ this.hashedSinks.add( (ObjectSinkNode) sink );
+ }
+
if ( !fieldIndex.isHashed() && fieldIndex.getCount() >= 3 ) {
// this is our third equal constraint for this field, so hash this index
hashSinks( fieldIndex );
@@ -85,12 +95,7 @@
if ( evaluator.getOperator() == Operator.EQUAL ) {
int index = literalConstraint.getFieldExtractor().getIndex();
FieldIndex fieldIndex = unregisterFieldIndex( index );
- this.hashedSinks.remove( (ObjectSinkNode) sink );
-
- if ( this.hashedSinks.isEmpty() ) {
- this.hashedSinks = null;
- }
-
+
if ( fieldIndex.isHashed() ) {
this.hashKey.setIndex( index );
this.hashKey.setValue( value );
@@ -99,6 +104,12 @@
// we have less than three so unhash
unHashSinks( fieldIndex );
}
+ } else {
+ this.hashedSinks.remove( (ObjectSinkNode) sink );
+ }
+
+ if ( this.hashedSinks.isEmpty() ) {
+ this.hashedSinks = null;
}
return;
More information about the jboss-svn-commits
mailing list