updated coding rules.
[utils] / system / general / src / main / java / org / wamblee / system / graph / component / ComponentGraph.java
index aedaa0c3e94021a33c86cc7bdaf14bcc47e48a75..f772299bcc53ad990c1be9d0593ac8f9608a80c1 100644 (file)
@@ -36,13 +36,15 @@ import org.wamblee.system.graph.Node;
  */
 public class ComponentGraph extends Graph {
     
-    private CompositeEdgeFilter _edgeFilter; 
+    private boolean isLinked; 
+    private CompositeEdgeFilter edgeFilter; 
 
     /**
      * Constructs an empty component graph. 
      */
     public ComponentGraph() {
-        _edgeFilter = new CompositeEdgeFilter(); 
+        isLinked = false; 
+        edgeFilter = new CompositeEdgeFilter(); 
     }
     
     /**
@@ -71,7 +73,7 @@ public class ComponentGraph extends Graph {
      */
     public void validate() { 
         extend(new RequiredProvidedEdgeFactory());
-        applyFilter(_edgeFilter);
+        applyFilter(edgeFilter);
         accept(new CheckRequiredProvidedMultiplicityVisitor(this));
         accept(new CheckExternallyRequiredVisitor(this)); 
         accept(new CheckExternallyProvidedVisitor(this));
@@ -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; 
     }
     
     /**
@@ -111,7 +117,7 @@ public class ComponentGraph extends Graph {
      * provided interfaces. 
      * @param aComponent Component to add. 
      */
-    public void addComponent(Component aComponent) { 
+    public void addComponent(Component<?> aComponent) { 
         // Add required interfaces. 
         Node compNode = new ComponentNode(aComponent);
         List<Node> requiredNodes = new ArrayList<Node>();
@@ -143,6 +149,6 @@ public class ComponentGraph extends Graph {
     }
 
     public void addEdgeFilter(CompositeEdgeFilter aEdgeFilter) {
-        _edgeFilter.add(aEdgeFilter);    
+        edgeFilter.add(aEdgeFilter);    
     }
 }