[jboss-svn-commits] JBL Code SVN: r6202 - 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:26:52 EDT 2006
Author: mark.proctor at jboss.com
Date: 2006-09-13 12:26:51 -0400 (Wed, 13 Sep 2006)
New Revision: 6202
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 16:24:00 UTC (rev 6201)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/CompositeObjectSinkAdapter.java 2006-09-13 16:26:51 UTC (rev 6202)
@@ -49,10 +49,6 @@
FieldIndex fieldIndex = registerFieldIndex( index,
literalConstraint.getFieldExtractor() );
- if ( this.hashedSinks == null ) {
- this.hashedSinks = new ObjectSinkNodeList();
- }
-
if ( fieldIndex.getCount() >= 3 ) {
if ( !fieldIndex.isHashed() ) {
hashSinks( fieldIndex );
@@ -62,13 +58,11 @@
value ),
sink );
} else {
+ if ( this.hashedSinks == null ) {
+ this.hashedSinks = new ObjectSinkNodeList();
+ }
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 );
- }
return;
}
@@ -127,6 +121,8 @@
public void hashSinks(FieldIndex fieldIndex) {
int index = fieldIndex.getIndex();
+ List list = new ArrayList();
+
if ( this.hashedSinkMap == null ) {
this.hashedSinkMap = new HashMap();
}
@@ -138,13 +134,23 @@
Evaluator evaluator = literalConstraint.getEvaluator();
if ( evaluator.getOperator() == Operator.EQUAL && index == literalConstraint.getFieldExtractor().getIndex() ) {
Object value = literalConstraint.getField().getValue();
- this.hashedSinks.remove( sink );
+ list.add( sink );
hashedSinkMap.put( new HashKey( index,
value ),
sink );
}
+ }
+
+ for ( Iterator it = list.iterator(); it.hasNext(); ) {
+ ObjectSinkNode sink = ( ObjectSinkNode ) it.next();
+ this.hashedSinks.remove( sink );
}
- fieldIndex.setHashed( true );
+
+ if ( this.hashedSinks.isEmpty() ) {
+ this.hashedSinks = null;
+ }
+
+ fieldIndex.setHashed( true );
}
public void unHashSinks(FieldIndex fieldIndex) {
More information about the jboss-svn-commits
mailing list