[jboss-svn-commits] JBL Code SVN: r21201 - labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jul 23 21:28:21 EDT 2008


Author: KrisVerlaenen
Date: 2008-07-23 21:28:21 -0400 (Wed, 23 Jul 2008)
New Revision: 21201

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/CompositeNode.java
Log:


Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/CompositeNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/CompositeNode.java	2008-07-23 21:05:15 UTC (rev 21200)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/CompositeNode.java	2008-07-24 01:28:21 UTC (rev 21201)
@@ -2,7 +2,6 @@
 
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -210,38 +209,56 @@
     
     public void validateRemoveIncomingConnection(final String type, final Connection connection) {
         CompositeNode.NodeAndType nodeAndType = internalGetLinkedIncomingNode(type);
-        ((NodeImpl) nodeAndType.getNode()).validateRemoveIncomingConnection(nodeAndType.getType(), connection);
+        for (Connection inConnection: nodeAndType.getNode().getIncomingConnections(nodeAndType.getType())) {
+            if (((CompositeNodeStart) inConnection.getFrom()).getInNodeId() == connection.getFrom().getId()) {
+                ((NodeImpl) nodeAndType.getNode()).validateRemoveIncomingConnection(nodeAndType.getType(), inConnection);
+                return;
+            }
+        }
+        throw new IllegalArgumentException(
+            "Could not find internal incoming connection for node");
     }
     
     public void removeIncomingConnection(String type, Connection connection) {
         super.removeIncomingConnection(type, connection);
-        CompositeNode.NodeAndType inNode = internalGetLinkedIncomingNode(type);
-        List<Connection> connections = inNode.getNode().getIncomingConnections(inNode.getType());
-        for (Iterator<Connection> iterator = connections.iterator(); iterator.hasNext(); ) {
-            Connection internalConnection = iterator.next();
-            if (((CompositeNodeStart) internalConnection.getFrom()).getInNode().equals(connection.getFrom())) {
-                ((ConnectionImpl) internalConnection).terminate();
-                removeNode(internalConnection.getFrom());
+        CompositeNode.NodeAndType nodeAndType = internalGetLinkedIncomingNode(type);
+        for (Connection inConnection: nodeAndType.getNode().getIncomingConnections(nodeAndType.getType())) {
+            if (((CompositeNodeStart) inConnection.getFrom()).getInNodeId() == connection.getFrom().getId()) {
+                Node compositeNodeStart = inConnection.getFrom();
+                ((ConnectionImpl) inConnection).terminate();
+                removeNode(compositeNodeStart);
+                return;
             }
         }
+        throw new IllegalArgumentException(
+            "Could not find internal incoming connection for node");
     }
     
     public void validateRemoveOutgoingConnection(final String type, final Connection connection) {
         CompositeNode.NodeAndType nodeAndType = internalGetLinkedOutgoingNode(type);
-        ((NodeImpl) nodeAndType.getNode()).validateRemoveOutgoingConnection(nodeAndType.getType(), connection);
+        for (Connection outConnection: nodeAndType.getNode().getOutgoingConnections(nodeAndType.getType())) {
+            if (((CompositeNodeEnd) outConnection.getTo()).getOutNodeId() == connection.getTo().getId()) {
+                ((NodeImpl) nodeAndType.getNode()).validateRemoveOutgoingConnection(nodeAndType.getType(), outConnection);
+                return;
+            }
+        }
+        throw new IllegalArgumentException(
+            "Could not find internal outgoing connection for node");
     }
     
     public void removeOutgoingConnection(String type, Connection connection) {
         super.removeOutgoingConnection(type, connection);
-        CompositeNode.NodeAndType outNode = internalGetLinkedOutgoingNode(type);
-        List<Connection> connections = outNode.getNode().getOutgoingConnections(outNode.getType());
-        for (Iterator<Connection> iterator = connections.iterator(); iterator.hasNext(); ) {
-            Connection internalConnection = iterator.next();
-            if (((CompositeNodeEnd) internalConnection.getTo()).getOutNode().equals(connection.getTo())) {
-                ((ConnectionImpl) internalConnection).terminate();
-                removeNode(internalConnection.getTo());
+        CompositeNode.NodeAndType nodeAndType = internalGetLinkedOutgoingNode(type);
+        for (Connection outConnection: nodeAndType.getNode().getOutgoingConnections(nodeAndType.getType())) {
+            if (((CompositeNodeEnd) outConnection.getTo()).getOutNodeId() == connection.getTo().getId()) {
+                Node compositeNodeEnd = outConnection.getTo();
+                ((ConnectionImpl) outConnection).terminate();
+                removeNode(compositeNodeEnd);
+                return;
             }
         }
+        throw new IllegalArgumentException(
+            "Could not find internal outgoing connection for node");
     }
     
     public class NodeAndType {




More information about the jboss-svn-commits mailing list