[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