[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