[jboss-svn-commits] JBL Code SVN: r18904 - 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 Mar 12 18:38:16 EDT 2008


Author: tirelli
Date: 2008-03-12 18:38:16 -0400 (Wed, 12 Mar 2008)
New Revision: 18904

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java
Log:
fixing OTN opt

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	2008-03-12 22:11:21 UTC (rev 18903)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ObjectTypeNode.java	2008-03-12 22:38:16 UTC (rev 18904)
@@ -191,6 +191,7 @@
                                context,
                                workingMemory );
         }
+        this.skipOnModify = canSkipOnModify( this.sink.getSinks() );
     }
 
     /**
@@ -293,7 +294,6 @@
      */
     protected void addObjectSink(final ObjectSink objectSink) {
         super.addObjectSink( objectSink );
-        this.skipOnModify = canSkipOnModify( this.sink.getSinks() );
     }
 
     /**
@@ -301,7 +301,6 @@
      */
     protected void removeObjectSink(final ObjectSink objectSink) {
         super.removeObjectSink( objectSink );
-        this.skipOnModify = canSkipOnModify( this.sink.getSinks() );
     }
 
     /**
@@ -313,25 +312,25 @@
      */
     private boolean canSkipOnModify(final Sink[] sinks) {
         // If we have no alpha or beta node with constraints on this ObjectType, we can just skip modifies
-        return false;
-        //boolean hasConstraints = false;
-        //for ( int i = 0; i < sinks.length && !hasConstraints; i++ ) {
-        //    if ( sinks[i] instanceof AlphaNode ) {
-        //        hasConstraints = this.usesDeclaration( ((AlphaNode) sinks[i]).getConstraint() );
-        //    } else if ( sinks[i] instanceof BetaNode && ((BetaNode) sinks[i]).getConstraints().length > 0 ) {
-        //        hasConstraints = this.usesDeclaration( ((BetaNode) sinks[i]).getConstraints() );
-        //    }
-        //    if ( !hasConstraints && sinks[i] instanceof ObjectSource ) {
-       //         hasConstraints = !this.canSkipOnModify( ((ObjectSource) sinks[i]).getSinkPropagator().getSinks() );
-        //    } else if ( sinks[i] instanceof TupleSource ) {
-        //        hasConstraints = !this.canSkipOnModify( ((TupleSource) sinks[i]).getSinkPropagator().getSinks() );
-        //    }
-        //}
+        boolean hasConstraints = false;
+        for ( int i = 0; i < sinks.length && !hasConstraints; i++ ) {
+            if ( sinks[i] instanceof AlphaNode || sinks[i] instanceof AccumulateNode || sinks[i] instanceof CollectNode || sinks[i] instanceof FromNode ) {
+                hasConstraints = true;
+            } else if ( sinks[i] instanceof BetaNode && ((BetaNode) sinks[i]).getConstraints().length > 0 ) {
+                hasConstraints = this.usesDeclaration( ((BetaNode) sinks[i]).getConstraints() );
+            }
+            if ( !hasConstraints && sinks[i] instanceof ObjectSource ) {
+                hasConstraints = !this.canSkipOnModify( ((ObjectSource) sinks[i]).getSinkPropagator().getSinks() );
+            } else if ( !hasConstraints && sinks[i] instanceof TupleSource ) {
+                hasConstraints = !this.canSkipOnModify( ((TupleSource) sinks[i]).getSinkPropagator().getSinks() );
+            }
+        }
 
         // Can only skip if we have no constraints
-        //return !hasConstraints;
+        return !hasConstraints;
     }
 
+
     private boolean usesDeclaration(final Constraint[] constraints) {
         boolean usesDecl = false;
         for ( int i = 0; !usesDecl && i < constraints.length; i++ ) {




More information about the jboss-svn-commits mailing list