*/
public class ComponentGraph extends Graph {
+ private boolean _isLinked;
private CompositeEdgeFilter _edgeFilter;
/**
* Constructs an empty component graph.
*/
public ComponentGraph() {
+ _isLinked = false;
_edgeFilter = new CompositeEdgeFilter();
}
* 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;
}
/**
* 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>();