(no commit message)
[utils] / system / general / src / main / java / org / wamblee / system / graph / component / CheckRequiredProvidedMultiplicityVisitor.java
index 526b8923e02e8cd7ca6e8e92792faefa3ca3a942..ae14ead872ea65d6f662819a43afa0efbe12f4be 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2008 the original author or authors.
+ * Copyright 2005-2010 the original author or authors.
  * 
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  */
 package org.wamblee.system.graph.component;
 
-import java.util.List;
-
 import org.wamblee.system.core.SystemAssemblyException;
 import org.wamblee.system.graph.Edge;
 import org.wamblee.system.graph.Graph;
 import org.wamblee.system.graph.Node;
 import org.wamblee.system.graph.Visitor;
 
+import java.util.List;
+
 /**
  * Visitor that checks whether required and provided interfaces are matched
  * appropriately:
  * <ul>
- * <li>Each required interface is connected to at most one provided interface
- * </li>
+ * <li>Each required interface is connected to at most one provided interface</li>
  * <li>Required interfaces that are not optional must be connected to precisely
  * one provided interface</li>
  * </ul>
  * 
  * @author Erik Brakkee
- * 
  */
 public class CheckRequiredProvidedMultiplicityVisitor implements Visitor {
+    private Graph graph;
 
-    private Graph _graph;
-
+    /**
+     * Creates a new CheckRequiredProvidedMultiplicityVisitor object.
+     * 
+     */
     public CheckRequiredProvidedMultiplicityVisitor(Graph aGraph) {
-        _graph = aGraph;
+        graph = aGraph;
     }
 
     @Override
@@ -53,34 +54,44 @@ public class CheckRequiredProvidedMultiplicityVisitor implements Visitor {
     public void visitNode(Node aNode) {
         if (aNode instanceof RequiredInterfaceNode) {
             RequiredInterfaceNode required = (RequiredInterfaceNode) aNode;
-            List<Edge> edges = _graph.findOutgoing(aNode);
+            List<Edge> edges = graph.findOutgoing(aNode);
+
             if (edges.size() > 1) {
-                createDuplicateException("Multiple internal providers of interface found", aNode, edges);
+                createDuplicateException(
+                    "Multiple providers of required interface found", aNode,
+                    edges);
             }
-            if (edges.size() == 0 && !required.getRequired().isOptional()) {
+
+            if ((edges.size() == 0) && !required.getRequired().isOptional()) {
                 throw new SystemAssemblyException(
-                        aNode
-                                + ": mandatpory required interface not provided by other components started earlier");
+                    aNode +
+                        ": mandatpory required interface not provided by other components started earlier");
             }
-        } else if ( aNode instanceof ProvidedInterfaceNode) { 
-            List<Edge> edges = _graph.findOutgoing(aNode); 
-            if ( edges.size() > 1) { 
-                createDuplicateException("multiple internal matches for externally provided interface", aNode, edges);
+        } else if (aNode instanceof ExternalProvidedInterfaceNode) {
+            List<Edge> edges = graph.findOutgoing(aNode);
+
+            if (edges.size() > 1) {
+                createDuplicateException(
+                    "multiple internal matches for externally provided interface",
+                    aNode, edges);
             }
-            if ( edges.size() == 0 ) { 
-                throw new SystemAssemblyException(aNode + ": external provided interface is not provided internally");
+
+            if (edges.size() == 0) {
+                throw new SystemAssemblyException(aNode +
+                    ": external provided interface is not provided internally");
             }
         }
     }
 
-    private void createDuplicateException(String aMsg, Node aNode, List<Edge> edges) {
+    private void createDuplicateException(String aMsg, Node aNode,
+        List<Edge> aEdges) {
         StringBuffer buf = new StringBuffer();
-        buf.append(aNode
-                + ": " + aMsg + ": ");
-        for (Edge edge : edges) {
+        buf.append(aNode + ": " + aMsg + ": ");
+
+        for (Edge edge : aEdges) {
             buf.append(edge.getTo() + "/ ");
         }
+
         throw new SystemAssemblyException(buf.toString());
     }
-
 }