[jboss-svn-commits] JBL Code SVN: r20175 - labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon May 26 21:05:21 EDT 2008
Author: tirelli
Date: 2008-05-26 21:05:21 -0400 (Mon, 26 May 2008)
New Revision: 20175
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/AccumulateBuilder.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/CollectBuilder.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java
Log:
Fixing behavior building
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/AccumulateBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/AccumulateBuilder.java 2008-05-26 22:11:25 UTC (rev 20174)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/AccumulateBuilder.java 2008-05-27 01:05:21 UTC (rev 20175)
@@ -17,14 +17,15 @@
package org.drools.reteoo.builder;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import org.drools.common.BetaConstraints;
import org.drools.common.TupleStartEqualsConstraint;
import org.drools.reteoo.AccumulateNode;
+import org.drools.reteoo.LeftTupleSource;
import org.drools.reteoo.ObjectSource;
import org.drools.reteoo.RightInputAdapterNode;
-import org.drools.reteoo.LeftTupleSource;
import org.drools.rule.Accumulate;
import org.drools.rule.Behavior;
import org.drools.rule.RuleConditionElement;
@@ -111,6 +112,7 @@
// source pattern was bound, so nulling context
context.setObjectSource( null );
context.setCurrentPatternOffset( currentPatternIndex );
+ context.setBehaviors( Collections.EMPTY_LIST );
}
/**
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/CollectBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/CollectBuilder.java 2008-05-26 22:11:25 UTC (rev 20174)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/CollectBuilder.java 2008-05-27 01:05:21 UTC (rev 20175)
@@ -17,14 +17,15 @@
package org.drools.reteoo.builder;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import org.drools.common.BetaConstraints;
import org.drools.common.TupleStartEqualsConstraint;
import org.drools.reteoo.CollectNode;
+import org.drools.reteoo.LeftTupleSource;
import org.drools.reteoo.ObjectSource;
import org.drools.reteoo.RightInputAdapterNode;
-import org.drools.reteoo.LeftTupleSource;
import org.drools.rule.Behavior;
import org.drools.rule.Collect;
import org.drools.rule.Pattern;
@@ -51,6 +52,7 @@
final List resultBetaConstraints = context.getBetaconstraints();
final List resultAlphaConstraints = context.getAlphaConstraints();
+ final List resultBehaviors = context.getBehaviors();
final Pattern sourcePattern = collect.getSourcePattern();
@@ -90,6 +92,11 @@
// indexing for the results should be always disabled
BetaConstraints resultBinder = utils.createBetaNodeConstraint( context, resultBetaConstraints, true );
+ Behavior[] behaviors = Behavior.EMPTY_BEHAVIOR_LIST;
+ if( ! context.getBehaviors().isEmpty() ) {
+ behaviors = (Behavior[]) context.getBehaviors().toArray( new Behavior[ context.getBehaviors().size() ]);
+ }
+
context.setTupleSource( (LeftTupleSource) utils.attachNode( context,
new CollectNode( context.getNextId(),
context.getTupleSource(),
@@ -97,13 +104,14 @@
(AlphaNodeFieldConstraint[]) resultAlphaConstraints.toArray( new AlphaNodeFieldConstraint[resultAlphaConstraints.size()] ),
binder, // source binder
resultBinder,
- Behavior.EMPTY_BEHAVIOR_LIST,
+ behaviors,
collect,
existSubNetwort,
context ) ) );
// source pattern was bound, so nulling context
context.setObjectSource( null );
context.setCurrentPatternOffset( currentPatternIndex );
+ context.setBehaviors( Collections.EMPTY_LIST );
}
/**
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java 2008-05-26 22:11:25 UTC (rev 20174)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java 2008-05-27 01:05:21 UTC (rev 20175)
@@ -17,6 +17,7 @@
package org.drools.reteoo.builder;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -28,10 +29,10 @@
import org.drools.reteoo.ExistsNode;
import org.drools.reteoo.JoinNode;
import org.drools.reteoo.LeftInputAdapterNode;
+import org.drools.reteoo.LeftTupleSource;
import org.drools.reteoo.NotNode;
import org.drools.reteoo.ObjectSource;
import org.drools.reteoo.RightInputAdapterNode;
-import org.drools.reteoo.LeftTupleSource;
import org.drools.rule.Behavior;
import org.drools.rule.GroupElement;
import org.drools.rule.RuleConditionElement;
@@ -84,6 +85,15 @@
return builder.requiresLeftActivation( utils,
rce );
}
+
+ private static Behavior[] createBehaviorArray(final BuildContext context) {
+ Behavior[] behaviors = Behavior.EMPTY_BEHAVIOR_LIST;
+ if( ! context.getBehaviors().isEmpty() ) {
+ behaviors = (Behavior[]) context.getBehaviors().toArray( new Behavior[ context.getBehaviors().size() ]);
+ }
+ context.setBehaviors( Collections.EMPTY_LIST );
+ return behaviors;
+ }
private static class AndBuilder
implements
@@ -115,11 +125,11 @@
// if a previous object source was bound, but no tuple source
if ( context.getObjectSource() != null && context.getTupleSource() == null ) {
- // adapt it to a Tuple source
+ // adapt it to a Tuple source
context.setTupleSource( (LeftTupleSource) utils.attachNode( context,
- new LeftInputAdapterNode( context.getNextId(),
- context.getObjectSource(),
- context ) ) );
+ new LeftInputAdapterNode( context.getNextId(),
+ context.getObjectSource(),
+ context ) ) );
context.setObjectSource( null );
}
@@ -130,14 +140,16 @@
final BetaConstraints betaConstraints = utils.createBetaNodeConstraint( context,
context.getBetaconstraints(),
false );
-
+
+ Behavior[] behaviors = createBehaviorArray( context );
+
context.setTupleSource( (LeftTupleSource) utils.attachNode( context,
- new JoinNode( context.getNextId(),
- context.getTupleSource(),
- context.getObjectSource(),
- betaConstraints,
- Behavior.EMPTY_BEHAVIOR_LIST,
- context ) ) );
+ new JoinNode( context.getNextId(),
+ context.getTupleSource(),
+ context.getObjectSource(),
+ betaConstraints,
+ behaviors,
+ context ) ) );
context.setBetaconstraints( null );
context.setObjectSource( null );
}
@@ -236,16 +248,18 @@
final BetaConstraints betaConstraints = utils.createBetaNodeConstraint( context,
context.getBetaconstraints(),
false );
+ Behavior[] behaviors = createBehaviorArray( context );
+
// then attach the NOT node. It will work both as a simple not node
// or as subnetwork join node as the context was set appropriatelly
// in each case
context.setTupleSource( (LeftTupleSource) utils.attachNode( context,
- new NotNode( context.getNextId(),
- context.getTupleSource(),
- context.getObjectSource(),
- betaConstraints,
- Behavior.EMPTY_BEHAVIOR_LIST,
- context ) ) );
+ new NotNode( context.getNextId(),
+ context.getTupleSource(),
+ context.getObjectSource(),
+ betaConstraints,
+ behaviors,
+ context ) ) );
context.setBetaconstraints( null );
context.setObjectSource( null );
@@ -315,16 +329,18 @@
context.getBetaconstraints(),
false );
+ Behavior[] behaviors = createBehaviorArray( context );
+
// then attach the EXISTS node. It will work both as a simple exists node
// or as subnetwork join node as the context was set appropriatelly
// in each case
context.setTupleSource( (LeftTupleSource) utils.attachNode( context,
- new ExistsNode( context.getNextId(),
- context.getTupleSource(),
- context.getObjectSource(),
- betaConstraints,
- Behavior.EMPTY_BEHAVIOR_LIST,
- context ) ) );
+ new ExistsNode( context.getNextId(),
+ context.getTupleSource(),
+ context.getObjectSource(),
+ betaConstraints,
+ behaviors,
+ context ) ) );
context.setBetaconstraints( null );
context.setObjectSource( null );
More information about the jboss-svn-commits
mailing list