X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fgeneral%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fgraph%2Fcomponent%2FComponentGraph.java;h=f772299bcc53ad990c1be9d0593ac8f9608a80c1;hb=0d8d8f24656e585ee75558cfd6a4c661f8f14985;hp=008f0026c1127750598fcde2c5f5b296f299951c;hpb=32a8562695029cf13d915bc7941a61fe07ff0005;p=utils diff --git a/system/general/src/main/java/org/wamblee/system/graph/component/ComponentGraph.java b/system/general/src/main/java/org/wamblee/system/graph/component/ComponentGraph.java index 008f0026..f772299b 100644 --- a/system/general/src/main/java/org/wamblee/system/graph/component/ComponentGraph.java +++ b/system/general/src/main/java/org/wamblee/system/graph/component/ComponentGraph.java @@ -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; } /** @@ -143,6 +149,6 @@ public class ComponentGraph extends Graph { } public void addEdgeFilter(CompositeEdgeFilter aEdgeFilter) { - _edgeFilter.add(aEdgeFilter); + edgeFilter.add(aEdgeFilter); } }