now linking required and provided interfaces only once.
[utils] / system / general / src / main / java / org / wamblee / system / graph / component / ComponentGraph.java
index 008f0026c1127750598fcde2c5f5b296f299951c..b41c41c81445d277165fed2eb7f44414b224d944 100644 (file)
@@ -36,12 +36,14 @@ import org.wamblee.system.graph.Node;
  */
 public class ComponentGraph extends Graph {
     
+    private boolean _isLinked; 
     private CompositeEdgeFilter _edgeFilter; 
 
     /**
      * Constructs an empty component graph. 
      */
     public ComponentGraph() {
+        _isLinked = false; 
         _edgeFilter = new CompositeEdgeFilter(); 
     }
     
@@ -82,8 +84,12 @@ public class ComponentGraph extends Graph {
      * Links provided and required interfaces together in the component
      * model based on the graph model. 
      */
-    public void link() { 
+    public void link() {
+        if ( _isLinked ) { 
+            return; 
+        }
         accept(new LinkVisitor());
+        _isLinked = true; 
     }
     
     /**