[jboss-svn-commits] JBL Code SVN: r17495 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/ruleflow/instance/impl and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jan 2 09:37:47 EST 2008


Author: mark.proctor at jboss.com
Date: 2008-01-02 09:37:47 -0500 (Wed, 02 Jan 2008)
New Revision: 17495

Added:
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/MockEndNode.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/MockEndNodeInstance.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/MockEndNodeInstanceFactory.java
Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/instance/impl/RuleFlowProcessInstanceImpl.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/EndNodeInstanceImplTest.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/MockNodeInstance.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/StartNodeInstanceImplTest.java
Log:
JBRULES-1394 RuleFlow Nodes should be pluggable
-PackageBuilder node builders are now pluggable and discoverable
-tweaks to node instance factory tests.

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java	2008-01-02 14:37:31 UTC (rev 17494)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBaseConfiguration.java	2008-01-02 14:37:47 UTC (rev 17495)
@@ -524,7 +524,6 @@
                                                                   entry.getValue() );
             }
         }
-
     }
 
     private boolean determineShadowProxy(String userValue) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/instance/impl/RuleFlowProcessInstanceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/instance/impl/RuleFlowProcessInstanceImpl.java	2008-01-02 14:37:31 UTC (rev 17494)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/instance/impl/RuleFlowProcessInstanceImpl.java	2008-01-02 14:37:47 UTC (rev 17495)
@@ -28,6 +28,7 @@
 import org.drools.Agenda;
 import org.drools.WorkingMemory;
 import org.drools.common.EventSupport;
+import org.drools.common.InternalRuleBase;
 import org.drools.common.InternalWorkingMemory;
 import org.drools.event.ActivationCancelledEvent;
 import org.drools.event.ActivationCreatedEvent;
@@ -78,7 +79,6 @@
 
     private InternalWorkingMemory              workingMemory;
     private final List                         nodeInstances    = new ArrayList();
-    private ProcessNodeInstanceFactoryRegistry nodeRegistry;
 
     public RuleFlowProcess getRuleFlowProcess() {
         return (RuleFlowProcess) getProcess();
@@ -127,20 +127,10 @@
         return this.workingMemory;
     }
     
-    public void registerNodeInstanceFactory(Class<? extends Node> cls, ProcessNodeInstanceFactory factory) {
-        if ( this.nodeRegistry == null ) {
-            this.nodeRegistry = new ProcessNodeInstanceFactoryRegistry();
-        }
-        
-        this.nodeRegistry.register( cls, factory );
-    }
-
     public RuleFlowNodeInstance getNodeInstance(final Node node) {
-        if ( this.nodeRegistry == null ) {
-            this.nodeRegistry = new ProcessNodeInstanceFactoryRegistry();
-        }
+        ProcessNodeInstanceFactoryRegistry nodeRegistry = ( (InternalRuleBase) this.workingMemory.getRuleBase() ).getConfiguration().getProcessNodeInstanceFactoryRegistry();
         
-        ProcessNodeInstanceFactory conf = this.nodeRegistry.getRuleFlowNodeFactory( node );
+        ProcessNodeInstanceFactory conf = nodeRegistry.getRuleFlowNodeFactory( node );
         if ( conf == null ) {
             throw new IllegalArgumentException( "Illegal node type: " + node.getClass() );
         }

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/EndNodeInstanceImplTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/EndNodeInstanceImplTest.java	2008-01-02 14:37:31 UTC (rev 17494)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/EndNodeInstanceImplTest.java	2008-01-02 14:37:47 UTC (rev 17495)
@@ -2,6 +2,7 @@
 
 
 import org.drools.RuleBase;
+import org.drools.RuleBaseConfiguration;
 import org.drools.RuleBaseFactory;
 import org.drools.StatefulSession;
 import org.drools.common.InternalWorkingMemory;
@@ -19,10 +20,14 @@
 
 public class EndNodeInstanceImplTest extends TestCase {
     public void testStartNode() {
-        RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+        RuleBaseConfiguration conf = new RuleBaseConfiguration();
+        
+        RuleBase ruleBase = RuleBaseFactory.newRuleBase( conf );
         StatefulSession session = ruleBase.newStatefulSession();        
         
         NodeImpl mockNode = new NodeImpl()  { };        
+        MockNodeInstanceFactory factory = new MockNodeInstanceFactory( new MockNodeInstance( mockNode ) );
+        conf.getProcessNodeInstanceFactoryRegistry().register(  mockNode.getClass(), factory );
         
         RuleFlowProcessImpl process = new RuleFlowProcessImpl(); 
         
@@ -42,8 +47,7 @@
         processInstance.setWorkingMemory( (InternalWorkingMemory) session );
         
         
-        MockNodeInstanceFactory factory = new MockNodeInstanceFactory( new MockNodeInstance( mockNode ) );
-        processInstance.registerNodeInstanceFactory( mockNode.getClass(), factory );
+
         
         MockNodeInstance mockNodeInstance = ( MockNodeInstance ) processInstance.getNodeInstance( mockNode );
         

Added: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/MockEndNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/MockEndNode.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/MockEndNode.java	2008-01-02 14:37:47 UTC (rev 17495)
@@ -0,0 +1,9 @@
+package org.drools.ruleflow.instance.impl;
+
+import org.drools.ruleflow.core.impl.NodeImpl;
+
+public class MockEndNode extends NodeImpl {
+    public MockEndNode() {
+        
+    }
+}

Added: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/MockEndNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/MockEndNodeInstance.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/MockEndNodeInstance.java	2008-01-02 14:37:47 UTC (rev 17495)
@@ -0,0 +1,51 @@
+/**
+ * 
+ */
+package org.drools.ruleflow.instance.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.ruleflow.core.impl.ConnectionImpl;
+import org.drools.ruleflow.core.impl.NodeImpl;
+import org.drools.ruleflow.instance.RuleFlowNodeInstance;
+
+public class MockEndNodeInstance extends RuleFlowNodeInstanceImpl {
+    private List list = new ArrayList();
+    
+    private NodeImpl node;
+    
+    public MockEndNodeInstance(NodeImpl node) {
+        this.node = node;
+    }
+    
+    public NodeImpl getNode() {
+        return this.node;
+    }
+    
+    public void internalTrigger(RuleFlowNodeInstance from) {
+        this.list.add( from );    
+        triggerCompleted();
+    }
+    
+    public List getList() {
+        return this.list;
+    }      
+    
+    public int hashCode() {
+        return (int) this.node.getId();
+    }
+    
+    public boolean equals(Object object) {
+        if ( object == null || (!( object instanceof MockEndNodeInstance ) )) {
+            return false;
+        }
+        
+        MockEndNodeInstance other = ( MockEndNodeInstance ) object;
+        return getNode().getId() == other.getNode().getId();
+    }        
+    
+    public void triggerCompleted() {        
+        getProcessInstance().removeNodeInstance(this);
+    }
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/MockEndNodeInstanceFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/MockEndNodeInstanceFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/MockEndNodeInstanceFactory.java	2008-01-02 14:37:47 UTC (rev 17495)
@@ -0,0 +1,26 @@
+/**
+ * 
+ */
+package org.drools.ruleflow.instance.impl;
+
+import org.drools.ruleflow.core.Node;
+import org.drools.ruleflow.instance.RuleFlowNodeInstance;
+
+public class MockEndNodeInstanceFactory implements ProcessNodeInstanceFactory {
+    private MockEndNodeInstance instance;
+    
+    public MockEndNodeInstanceFactory(MockEndNodeInstance instance) {
+        this.instance = instance;
+    }
+    
+    public MockEndNodeInstance getMockEndNodeInstance() {
+        return this.instance;
+    }
+
+    public RuleFlowNodeInstance getNodeInstance(Node node,
+                                                RuleFlowProcessInstanceImpl processInstance) {
+        this.instance.setNodeId( node.getId() );
+        processInstance.addNodeInstance( this.instance );            
+        return instance;
+    }        
+}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/MockNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/MockNodeInstance.java	2008-01-02 14:37:31 UTC (rev 17494)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/MockNodeInstance.java	2008-01-02 14:37:47 UTC (rev 17495)
@@ -45,9 +45,8 @@
         return getNode().getId() == other.getNode().getId();
     }        
     
-    public void triggerCompleted() {
-        
-        getProcessInstance().getNodeInstance( ((ConnectionImpl) this.node.getOutgoingConnections().get( 0 )).getTo() ).trigger( this );
+    public void triggerCompleted() {        
         getProcessInstance().removeNodeInstance(this);
+        getProcessInstance().getNodeInstance( ((ConnectionImpl) this.node.getOutgoingConnections().get( 0 )).getTo() ).trigger( this );
     }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/StartNodeInstanceImplTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/StartNodeInstanceImplTest.java	2008-01-02 14:37:31 UTC (rev 17494)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/ruleflow/instance/impl/StartNodeInstanceImplTest.java	2008-01-02 14:37:47 UTC (rev 17495)
@@ -2,6 +2,7 @@
 
 
 import org.drools.RuleBase;
+import org.drools.RuleBaseConfiguration;
 import org.drools.RuleBaseFactory;
 import org.drools.StatefulSession;
 import org.drools.common.InternalWorkingMemory;
@@ -9,6 +10,7 @@
 import org.drools.ruleflow.core.Connection;
 import org.drools.ruleflow.core.Node;
 import org.drools.ruleflow.core.impl.ConnectionImpl;
+import org.drools.ruleflow.core.impl.EndNodeImpl;
 import org.drools.ruleflow.core.impl.NodeImpl;
 import org.drools.ruleflow.core.impl.RuleFlowProcessImpl;
 import org.drools.ruleflow.core.impl.StartNodeImpl;
@@ -17,36 +19,46 @@
 
 public class StartNodeInstanceImplTest extends TestCase {
     public void testStartNode() {
-        RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+        RuleBaseConfiguration conf = new RuleBaseConfiguration();
+        
+        RuleBase ruleBase = RuleBaseFactory.newRuleBase( conf );
         StatefulSession session = ruleBase.newStatefulSession();        
         
-        NodeImpl mockNode = new NodeImpl()  { };        
+        MockNode mockNode = new MockNode();
+        MockNodeInstanceFactory mockNodeFactory = new MockNodeInstanceFactory( new MockNodeInstance( mockNode ) );
+        conf.getProcessNodeInstanceFactoryRegistry().register(  mockNode.getClass(), mockNodeFactory );
         
+        MockEndNode mockEndNode = new MockEndNode();
+        MockEndNodeInstanceFactory mockEndNodeFactory = new MockEndNodeInstanceFactory( new MockEndNodeInstance( mockEndNode ) );        
+        conf.getProcessNodeInstanceFactoryRegistry().register(  mockEndNode.getClass(), mockEndNodeFactory );      
+        
         RuleFlowProcessImpl process = new RuleFlowProcessImpl(); 
         
         Node startNode = new  StartNodeImpl();  
         startNode.setId( 1 );
-        startNode.setName( "start node" );        
+        startNode.setName( "start node" );                
                             
         mockNode.setId( 2 );
+        mockEndNode.setId( 3 );
         new ConnectionImpl(startNode, mockNode, Connection.TYPE_NORMAL);
+        new ConnectionImpl(mockNode, mockEndNode, Connection.TYPE_NORMAL);
         
         process.addNode( startNode );
         process.addNode( mockNode );
+        process.addNode( mockEndNode );
                 
         RuleFlowProcessInstanceImpl processInstance = new RuleFlowProcessInstanceImpl();   
         processInstance.setProcess( process );
-        processInstance.setWorkingMemory( (InternalWorkingMemory) session );
+        processInstance.setWorkingMemory( (InternalWorkingMemory) session );              
         
-        
-        MockNodeInstanceFactory factory = new MockNodeInstanceFactory( new MockNodeInstance( mockNode ) );
-        processInstance.registerNodeInstanceFactory( mockNode.getClass(), factory );                
-        
         assertEquals(  ProcessInstance.STATE_PENDING, processInstance.getState() );
         processInstance.start();        
         assertEquals(  ProcessInstance.STATE_ACTIVE, processInstance.getState() );
         
-        MockNodeInstance nodeInstance = factory.getMockNodeInstance();
-        assertSame( startNode, ((RuleFlowNodeInstanceImpl) nodeInstance.getList().get( 0  )).getNode() );                       
+        MockNodeInstance mockNodeInstance = mockNodeFactory.getMockNodeInstance();
+        assertSame( startNode, ((RuleFlowNodeInstanceImpl) mockNodeInstance.getList().get( 0  )).getNode() );
+        
+        MockEndNodeInstance mockEndNodeInstance = mockEndNodeFactory.getMockEndNodeInstance();
+        assertSame( mockNode, ((RuleFlowNodeInstanceImpl) mockEndNodeInstance.getList().get( 0  )).getNode() );        
     }
 }




More information about the jboss-svn-commits mailing list