[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