[jboss-svn-commits] JBL Code SVN: r26140 - in labs/jbossrules/branches/DroolsChance: drools-compiler/src/main/java/org/drools/compiler and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Apr 19 10:36:50 EDT 2009


Author: dsotty
Date: 2009-04-19 10:36:49 -0400 (Sun, 19 Apr 2009)
New Revision: 26140

Modified:
   labs/jbossrules/branches/DroolsChance/drools-api/src/main/java/org/drools/reteoo/ConstraintKey.java
   labs/jbossrules/branches/DroolsChance/drools-api/src/main/java/org/drools/reteoo/DynamicConstraintKey.java
   labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java
   labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java
   labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
   labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeEvaluation.java
   labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeEvaluationTemplate.java
   labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EvalRecord.java
   labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ImperfectRuleBase.java
   labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/JoinNode.java
   labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ModusPonensNode.java
   labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/NodeTypeEnums.java
   labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
   labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
   labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java
   labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java
   labs/jbossrules/branches/DroolsChance/drools-guvnor/src/main/java/org/drools/guvnor/public/version.txt
Log:
inter-pattern operators

Modified: labs/jbossrules/branches/DroolsChance/drools-api/src/main/java/org/drools/reteoo/ConstraintKey.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-api/src/main/java/org/drools/reteoo/ConstraintKey.java	2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-api/src/main/java/org/drools/reteoo/ConstraintKey.java	2009-04-19 14:36:49 UTC (rev 26140)
@@ -22,10 +22,13 @@
 	}
 	
 	
-	
 
+	protected String buildKey(String op, String arg) {
+		return op+"("+arg+")";
+	}
+
 	public ConstraintKey(String op, String arg) {
-		this.key = op+"("+arg+")";
+		this.key = buildKey(op, arg); 
 	}
 
 	public ConstraintKey(String key) {

Modified: labs/jbossrules/branches/DroolsChance/drools-api/src/main/java/org/drools/reteoo/DynamicConstraintKey.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-api/src/main/java/org/drools/reteoo/DynamicConstraintKey.java	2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-api/src/main/java/org/drools/reteoo/DynamicConstraintKey.java	2009-04-19 14:36:49 UTC (rev 26140)
@@ -2,11 +2,18 @@
 
 public class DynamicConstraintKey extends ConstraintKey {
 
+	private String op;
+	
 	public DynamicConstraintKey(String op) {
 		super(op, "");
+		this.op = op;
 	}
 
 	
+	public void reset() {
+		this.key = buildKey(op, "");
+	}
+	
 	public void addArg(ConstraintKey arg) {
 		
 		

Modified: labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java	2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-compiler/src/main/java/org/drools/compiler/DrlParser.java	2009-04-19 14:36:49 UTC (rev 26140)
@@ -238,7 +238,9 @@
             DroolsTree resultTree = (DroolsTree) parser.compilation_unit().getTree();
             
             System.out.println(this.getClass().toString() + " HACKED TO GET DROOLSTREE");
-           //System.out.println((((DroolsTree) resultTree.getChild(9)).toIndentedStringTree()));
+            
+            //System.out.println((((DroolsTree) resultTree.getChild(8)).toStringTree()));
+           //System.out.println((((DroolsTree) resultTree.getChild(4)).toIndentedStringTree()));
 //            
             
             

Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java	2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java	2009-04-19 14:36:49 UTC (rev 26140)
@@ -256,11 +256,12 @@
 					record.setPropagationContext(propagationContext);
 					record.setWorkingMemory(workingMemory);
 				record.addObserver(this);				
-				//wait for more
+				//wait for more1
 				return;
 			
 			case IFilterStrategy.PASS :
 				//go on
+				System.out.println("Alpha PASS ");
 				this.sink.propagateAssertObject(factHandle,
 		            propagationContext,
 		            workingMemory,

Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/BetaNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/BetaNode.java	2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/BetaNode.java	2009-04-19 14:36:49 UTC (rev 26140)
@@ -60,7 +60,8 @@
     LeftTupleSinkNode,
     ObjectSinkNode,
     RightTupleSink,
-    NodeMemory, IFilteringNode {
+    NodeMemory, 
+    IFilteringNode {
     
     // ------------------------------------------------------------
     // Instance members

Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeEvaluation.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeEvaluation.java	2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeEvaluation.java	2009-04-19 14:36:49 UTC (rev 26140)
@@ -34,6 +34,18 @@
 		this.combine();
 	}
 	
+	public CompositeEvaluation(int id, ConstraintKey key, Set<String> deps,
+			int arity, IDegreeCombiner operator, IMergeStrategy mergeStrat, INullHandlingStrategy nullStrat) {		
+		super(id,key,deps,mergeStrat,nullStrat);
+				
+		this.operands = new Evaluation[arity];
+		
+	
+		this.operator = operator;
+		//Don't do combine as operands are not set!
+		//this.combine();
+	}
+	
 
 
 //	public CompositeEvaluation(int id, ConstraintKey key, Set<String> deps,
@@ -139,8 +151,13 @@
 		return operator;
 	}
 	
+	protected void setOperator(IDegreeCombiner newOp) {
+		this.operator = newOp;
+		//combine();
+	}
 	
 	
+	
 
 	
 	public String toStringTree(int depth) {

Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeEvaluationTemplate.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeEvaluationTemplate.java	2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/CompositeEvaluationTemplate.java	2009-04-19 14:36:49 UTC (rev 26140)
@@ -52,7 +52,11 @@
 		return new CompositeEvaluation(id,key,deps,children.values().toArray(new Evaluation[children.values().size()]),operator,mergeStrat,nullStrat);
 	}
 	
+	public Evaluation spawn(int N) {
+		return new CompositeEvaluation(id,key,deps,N,operator,mergeStrat,nullStrat);
+	}
 	
+	
 	protected IDegreeCombiner getOperator() {
 		return operator;
 	}

Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EvalRecord.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EvalRecord.java	2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/EvalRecord.java	2009-04-19 14:36:49 UTC (rev 26140)
@@ -288,7 +288,43 @@
 		return rightTuple;
 	}
 
+	public void replace(CompositeEvaluation operator, int N) {
+		
+		int M = this.getOperands().length;
+		for (int j = M-N; j < M; j++) {
+			Evaluation operand = getOperands()[j];
+			operand.deleteObserver(this);
+			operator.setOperand(j+N-M, operand);
+			((DynamicConstraintKey) operator.getKey()).addArg(operand.getKey());
+		}
+		
+		
+		
+		Evaluation[] locOperands = new Evaluation[M-N+1];
+		((DynamicConstraintKey) this.getKey()).reset();
+		for (int j = 0; j < M-N; j++) {
+			locOperands[j] = operands[j];
+			((DynamicConstraintKey) this.getKey()).addArg(operands[j].getKey());
+		}
+		locOperands[M-N] = operator;
+		((DynamicConstraintKey) this.getKey()).addArg(operator.getKey());
+			
+		operands = locOperands;
+		
+		operator.combine();
+		
+		
+		evalMap.put(operator.getKey(),operator);	
+		operator.addObserver(this);
+		
+		this.combine();
+		this.setChanged();
+		this.notifyObservers(null);
+	}
+
 	
 	
 	
+	
+	
 }

Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ImperfectRuleBase.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ImperfectRuleBase.java	2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ImperfectRuleBase.java	2009-04-19 14:36:49 UTC (rev 26140)
@@ -1,9 +1,11 @@
 package org.drools.reteoo;
 
 import org.drools.RuleBaseConfiguration;
+import org.drools.common.RuleBasePartitionId;
 import org.drools.degrees.factory.IDegreeFactory;
 import org.drools.degrees.factory.SimpleDegreeFactory;
 import org.drools.degrees.factory.SimpleFuzzyDegreeFactory;
+import org.drools.rule.EntryPoint;
 import org.drools.spi.FactHandleFactory;
 
 public class ImperfectRuleBase extends ReteooRuleBase {
@@ -94,22 +96,21 @@
         setDegreeFactory(factory);
     }
     
-//    /**
-//     * Construct.
-//     *
-//     * @param id
-//     *            The rete network.
-//     */
-//    public ImperfectRuleBase(final String id,
-//                          final RuleBaseConfiguration config,
-//                          final FactHandleFactory factHandleFactory,
-//                          final IDegreeFactory degreeFactory) {
-//        super( id,
-//               config,
-//               factHandleFactory );       
-//        this.degreeFactory = degreeFactory;
-//    }
+    
+    protected void setupRete() {
+    	setRete(new Rete( this ));
+    	setReteooBuilder(new ImperfectReteooBuilder( this ));
 
+    	// 	always add the default entry point
+    	EntryPointNode epn = new EntryPointNode( this.getReteooBuilder().getIdGenerator().getNextId(),
+    			RuleBasePartitionId.MAIN_PARTITION,
+    			this.config.isMultithreadEvaluation(),
+    			this.getRete(),
+    			EntryPoint.DEFAULT );
+    	epn.attach();
+    }
+	
+
 	/**
 	 * @param degreeFactory the degreeFactory to set
 	 */

Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/JoinNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/JoinNode.java	2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/JoinNode.java	2009-04-19 14:36:49 UTC (rev 26140)
@@ -238,7 +238,9 @@
 	        		        	        		        		        		        	
         		
         	switch (this.filterStrat.doTry(mainRecord)) {
-        		case IFilterStrategy.DROP : return;
+        		case IFilterStrategy.DROP : 
+        			System.out.println("Beta FAIL at assertTuple: DROP record");
+        			return;
 			
         		case IFilterStrategy.HOLD : //TODO: HOLD
         			System.out.println("HOLD RULES @JOIN NODE"+this.getId());
@@ -254,6 +256,7 @@
         			break;
 			
         		case IFilterStrategy.PASS : 
+        			System.out.println("Beta PASS at assertTuple: propagate record");
         			this.sink.propagateAssertLeftTuple( leftTuple,
                             rightTuple,
                             context,
@@ -428,7 +431,9 @@
         	System.out.println("Situation at join eval"+mainRecord.expand());        		        		        		        	
         		
         	switch (this.filterStrat.doTry(mainRecord)) {
-        		case IFilterStrategy.DROP : return;
+        		case IFilterStrategy.DROP :
+        			System.out.println("Beta DROP at assertobject");
+        			return;
 			
         		case IFilterStrategy.HOLD : //TODO: HOLD
         			System.out.println("HOLD RULES @JOIN NODE"+this.getId());
@@ -444,6 +449,7 @@
         			break;
 			
         		case IFilterStrategy.PASS : 
+        			System.out.println("Beta PASS at assertObjecf: propagate record");
         			this.sink.propagateAssertLeftTuple( leftTuple,
                             rightTuple,
                             context,

Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ModusPonensNode.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ModusPonensNode.java	2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ModusPonensNode.java	2009-04-19 14:36:49 UTC (rev 26140)
@@ -94,7 +94,7 @@
     		
     		
         	EvalRecord mpRecord = new EvalRecord(this.id,factory.getModusPonensOp(),factory.getMergeStrategy(),factory.getNullHandlingStrategy());
-        	mpRecord.addEvaluation(premiseRecord);
+        	mpRecord.addEvaluation(premiseRecord.getOperands()[0]);
         	mpRecord.addEvaluation(implEval);
         	
         	

Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/NodeTypeEnums.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/NodeTypeEnums.java	2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/NodeTypeEnums.java	2009-04-19 14:36:49 UTC (rev 26140)
@@ -11,4 +11,6 @@
     public static final short RightInputAdaterNode = 7;
     public static final short QueryTerminalNode    = 8;
     public static final short RuleTerminalNode     = 9;
+    
+    public static final short Imperfect_OperatorNode     = 105;
 }

Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java	2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java	2009-04-19 14:36:49 UTC (rev 26140)
@@ -90,12 +90,12 @@
      * network.
      */
     ReteooBuilder(final InternalRuleBase ruleBase) {
-        this.ruleBase = ruleBase;
-        this.rules = new HashMap<Rule, BaseNode[]>();
+        this.setRuleBase(ruleBase);
+        this.setRules(new HashMap<Rule, BaseNode[]>());
 
         //Set to 1 as Rete node is set to 0
-        this.idGenerator = new IdGenerator( 1 );
-        this.ruleBuilder = new ReteooRuleBuilder();
+        this.setIdGenerator(new IdGenerator( 1 ));
+        this.setRuleBuilder(new ReteooRuleBuilder());
     }
 
     // ------------------------------------------------------------
@@ -114,11 +114,11 @@
      * @throws InvalidPatternException
      */
     void addRule(final Rule rule) throws InvalidPatternException {
-        final List<TerminalNode> terminals = this.ruleBuilder.addRule( rule,
-                                                                       this.ruleBase,
-                                                                       this.idGenerator );
+        final List<TerminalNode> terminals = this.getRuleBuilder().addRule( rule,
+                                                                       this.getRuleBase(),
+                                                                       this.getIdGenerator() );
 
-        this.rules.put( rule,
+        this.getRules().put( rule,
                         terminals.toArray( new BaseNode[terminals.size()] ) );
     }
 
@@ -137,7 +137,7 @@
         }
         Map map = new HashMap();
 
-        for ( Iterator it = this.rules.values().iterator(); it.hasNext(); ) {
+        for ( Iterator it = this.getRules().values().iterator(); it.hasNext(); ) {
             BaseNode[] nodes = (BaseNode[]) it.next();
             for ( int i = 0; i < nodes.length; i++ ) {
                 if ( nodes[i] instanceof RuleTerminalNode ) {
@@ -170,7 +170,7 @@
                 node.setSequence( i++ );
             }
 
-            ruleBase.getAgendaGroupRuleTotals().put( agendaGroup,
+            getRuleBase().getAgendaGroupRuleTotals().put( agendaGroup,
                                                      new Integer( i ) );
         }
         ordered = true;
@@ -221,14 +221,14 @@
     }
 
     public BaseNode[] getTerminalNodes(final Rule rule) {
-        return (BaseNode[]) this.rules.get( rule );
+        return (BaseNode[]) this.getRules().get( rule );
     }
 
     public void removeRule(final Rule rule) {
         // reset working memories for potential propagation
-        InternalWorkingMemory[] workingMemories = this.ruleBase.getWorkingMemories();
+        InternalWorkingMemory[] workingMemories = this.getRuleBase().getWorkingMemories();
 
-        final Object object = this.rules.remove( rule );
+        final Object object = this.getRules().remove( rule );
 
         final BaseNode[] nodes = (BaseNode[]) object;
         final RuleRemovalContext context = new RuleRemovalContext();
@@ -301,8 +301,8 @@
             bytes = new ByteArrayOutputStream();
             droolsStream = new DroolsObjectOutputStream( bytes );
         }
-        droolsStream.writeObject( rules );
-        droolsStream.writeObject( idGenerator );
+        droolsStream.writeObject( getRules() );
+        droolsStream.writeObject( getIdGenerator() );
         droolsStream.writeBoolean( ordered );
         if ( !isDrools ) {
             bytes.close();
@@ -323,15 +323,64 @@
             bytes = new ByteArrayInputStream( (byte[]) in.readObject() );
             droolsStream = new DroolsObjectInputStream( bytes );
         }
-        this.rules = (Map<Rule, BaseNode[]>) in.readObject();
-        this.idGenerator = (IdGenerator) in.readObject();
+        this.setRules((Map<Rule, BaseNode[]>) in.readObject());
+        this.setIdGenerator((IdGenerator) in.readObject());
         this.ordered = in.readBoolean();
-        this.ruleBase = droolsStream.getRuleBase();
+        this.setRuleBase(droolsStream.getRuleBase());
         if ( !isDrools ) {
             bytes.close();
         }
 
-        this.ruleBuilder = new ReteooRuleBuilder();
+        this.setRuleBuilder(new ReteooRuleBuilder());
     }
 
+	/**
+	 * @param idGenerator the idGenerator to set
+	 */
+	public void setIdGenerator(IdGenerator idGenerator) {
+		this.idGenerator = idGenerator;
+	}
+
+	/**
+	 * @param ruleBuilder the ruleBuilder to set
+	 */
+	public void setRuleBuilder(ReteooRuleBuilder ruleBuilder) {
+		this.ruleBuilder = ruleBuilder;
+	}
+
+	/**
+	 * @return the ruleBuilder
+	 */
+	public ReteooRuleBuilder getRuleBuilder() {
+		return ruleBuilder;
+	}
+
+	/**
+	 * @param ruleBase the ruleBase to set
+	 */
+	public void setRuleBase(InternalRuleBase ruleBase) {
+		this.ruleBase = ruleBase;
+	}
+
+	/**
+	 * @return the ruleBase
+	 */
+	public InternalRuleBase getRuleBase() {
+		return ruleBase;
+	}
+
+	/**
+	 * @param rules the rules to set
+	 */
+	public void setRules(Map<Rule, BaseNode[]> rules) {
+		this.rules = rules;
+	}
+
+	/**
+	 * @return the rules
+	 */
+	public Map<Rule, BaseNode[]> getRules() {
+		return rules;
+	}
+
 }

Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java	2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java	2009-04-19 14:36:49 UTC (rev 26140)
@@ -144,10 +144,10 @@
         super( id,
                config,
                factHandleFactory );
-        setupRete();        
+        this.setupRete();        
     }
 
-    private void setupRete() {
+    protected void setupRete() {
         this.rete = new Rete( this );
         this.reteooBuilder = new ReteooBuilder( this );
 
@@ -483,4 +483,12 @@
             this.reteooBuilder.setOrdered( false );
         }
     }
+    
+    protected void setReteooBuilder(ReteooBuilder reteooBuilder) {
+		this.reteooBuilder = reteooBuilder;		
+	}
+
+	protected void setRete(Rete rete) {
+		this.rete = rete;
+	}
 }

Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java	2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/GroupElementBuilder.java	2009-04-19 14:36:49 UTC (rev 26140)
@@ -36,6 +36,7 @@
 import org.drools.rule.Behavior;
 import org.drools.rule.GroupElement;
 import org.drools.rule.RuleConditionElement;
+import org.drools.rule.GroupElement.Type;
 
 /**
  * @author etirelli
@@ -45,16 +46,16 @@
     implements
     ReteooComponentBuilder {
 
-    private final Map geBuilders = new HashMap();
+    private final Map<Type, ReteooComponentBuilder> geBuilders = new HashMap<Type, ReteooComponentBuilder>();
 
     public GroupElementBuilder() {
-        this.geBuilders.put( GroupElement.AND,
+        this.getGeBuilders().put( GroupElement.AND,
                              new AndBuilder() );
-        this.geBuilders.put( GroupElement.OR,
+        this.getGeBuilders().put( GroupElement.OR,
                              new OrBuilder() );
-        this.geBuilders.put( GroupElement.NOT,
+        this.getGeBuilders().put( GroupElement.NOT,
                              new NotBuilder() );
-        this.geBuilders.put( GroupElement.EXISTS,
+        this.getGeBuilders().put( GroupElement.EXISTS,
                              new ExistsBuilder() );
     }
 
@@ -66,7 +67,7 @@
                       final RuleConditionElement rce) {
         final GroupElement ge = (GroupElement) rce;
 
-        final ReteooComponentBuilder builder = (ReteooComponentBuilder) this.geBuilders.get( ge.getType() );
+        final ReteooComponentBuilder builder = (ReteooComponentBuilder) this.getGeBuilders().get( ge.getType() );
         
         context.push( ge );
 
@@ -84,13 +85,13 @@
                                           final RuleConditionElement rce) {
         final GroupElement ge = (GroupElement) rce;
 
-        final ReteooComponentBuilder builder = (ReteooComponentBuilder) this.geBuilders.get( ge.getType() );
+        final ReteooComponentBuilder builder = (ReteooComponentBuilder) this.getGeBuilders().get( ge.getType() );
 
         return builder.requiresLeftActivation( utils,
                                                rce );
     }
     
-    private static Behavior[] createBehaviorArray(final BuildContext context) {
+    protected 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() ]);
@@ -99,7 +100,14 @@
         return behaviors;
     }
 
-    private static class AndBuilder
+    /**
+	 * @return the geBuilders
+	 */
+	public Map<Type, ReteooComponentBuilder> getGeBuilders() {
+		return geBuilders;
+	}
+
+	private static class AndBuilder
         implements
         ReteooComponentBuilder {
 

Modified: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java	2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/reteoo/builder/ReteooRuleBuilder.java	2009-04-19 14:36:49 UTC (rev 26140)
@@ -22,6 +22,7 @@
 import org.drools.InitialFact;
 import org.drools.RuleBase;
 import org.drools.RuleIntegrationException;
+import org.drools.RuntimeDroolsException;
 import org.drools.RuleBaseConfiguration.EventProcessingMode;
 import org.drools.base.ClassObjectType;
 import org.drools.common.BaseNode;
@@ -58,23 +59,23 @@
     private BuildUtils utils;
 
     public ReteooRuleBuilder() {
-        this.utils = new BuildUtils();
+        this.setUtils(new BuildUtils());
 
-        this.utils.addBuilder( GroupElement.class,
+        this.getUtils().addBuilder( GroupElement.class,
                                new GroupElementBuilder() );
-        this.utils.addBuilder( Pattern.class,
+        this.getUtils().addBuilder( Pattern.class,
                                new PatternBuilder() );
-        this.utils.addBuilder( EvalCondition.class,
+        this.getUtils().addBuilder( EvalCondition.class,
                                new EvalBuilder() );
-        this.utils.addBuilder( From.class,
+        this.getUtils().addBuilder( From.class,
                                new FromBuilder() );
-        this.utils.addBuilder( Collect.class,
+        this.getUtils().addBuilder( Collect.class,
                                new CollectBuilder() );
-        this.utils.addBuilder( Accumulate.class,
+        this.getUtils().addBuilder( Accumulate.class,
                                new AccumulateBuilder() );
-        this.utils.addBuilder( Forall.class,
+        this.getUtils().addBuilder( Forall.class,
                                new ForallBuilder() );
-        this.utils.addBuilder( EntryPoint.class,
+        this.getUtils().addBuilder( EntryPoint.class,
                                new EntryPointBuilder() );
     }
 
@@ -98,6 +99,8 @@
                         final InternalRuleBase rulebase,
                         final ReteooBuilder.IdGenerator idGenerator) throws InvalidPatternException {
 
+    	
+    	
         // the list of terminal nodes
         final List<TerminalNode> nodes = new ArrayList<TerminalNode>();
 
@@ -113,7 +116,7 @@
             
             // if running in STREAM mode, calculate temporal distance for events
             if( EventProcessingMode.STREAM.equals( rulebase.getConfiguration().getEventProcessingMode() ) ) {
-                TemporalDependencyMatrix temporal = this.utils.calculateTemporalDistance( subrules[i] );
+                TemporalDependencyMatrix temporal = this.getUtils().calculateTemporalDistance( subrules[i] );
                 context.setTemporalDistance( temporal );
             }
            
@@ -142,14 +145,14 @@
         return nodes;
     }
 
-    private TerminalNode addSubRule(final BuildContext context,
+    protected TerminalNode addSubRule(final BuildContext context,
                                     final GroupElement subrule,
                                     final Rule rule) throws InvalidPatternException {
         // gets the appropriate builder
-        final ReteooComponentBuilder builder = this.utils.getBuilderFor( subrule );
+        final ReteooComponentBuilder builder = this.getUtils().getBuilderFor( subrule );
 
         // checks if an initial-fact is needed
-        if ( builder.requiresLeftActivation( this.utils,
+        if ( builder.requiresLeftActivation( this.getUtils(),
                                              subrule ) ) {
             this.addInitialFactPattern( context,
                                         subrule,
@@ -158,7 +161,7 @@
 
         // builds and attach
         builder.build( context,
-                       this.utils,
+                       this.getUtils(),
                        subrule );
 
         TerminalNode terminal = null;
@@ -179,7 +182,7 @@
         				context);
         	}
         	
-        	context.setTupleSource((ModusPonensNode) this.utils.attachNode(context, mpNode));
+        	context.setTupleSource((ModusPonensNode) this.getUtils().attachNode(context, mpNode));
             
         	
         	
@@ -230,7 +233,7 @@
      * @param subrule
      * @param rule
      */
-    private void addInitialFactPattern(final BuildContext context,
+    protected void addInitialFactPattern(final BuildContext context,
                                        final GroupElement subrule,
                                        final Rule rule) {
         
@@ -243,4 +246,18 @@
                           pattern );
     }
 
+	/**
+	 * @param utils the utils to set
+	 */
+	public void setUtils(BuildUtils utils) {
+		this.utils = utils;
+	}
+
+	/**
+	 * @return the utils
+	 */
+	public BuildUtils getUtils() {
+		return utils;
+	}
+
 }

Modified: labs/jbossrules/branches/DroolsChance/drools-guvnor/src/main/java/org/drools/guvnor/public/version.txt
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-guvnor/src/main/java/org/drools/guvnor/public/version.txt	2009-04-19 14:21:51 UTC (rev 26139)
+++ labs/jbossrules/branches/DroolsChance/drools-guvnor/src/main/java/org/drools/guvnor/public/version.txt	2009-04-19 14:36:49 UTC (rev 26140)
@@ -1 +1 @@
-5.0.0.SNAPSHOT 25662:25943M
\ No newline at end of file
+5.0.0.SNAPSHOT 25662:26123
\ No newline at end of file




More information about the jboss-svn-commits mailing list