[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