(no commit message)
[utils] / system / general / src / main / java / org / wamblee / system / graph / component / RequiredProvidedEdgeFactory.java
index 983acba1c78c61e343f75b7af1f9374c6e5693f0..9c8c038ec0a86b08571a1533edbc11f723ea0590 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.ArrayList;
-import java.util.List;
-
 import org.wamblee.system.graph.DefaultEdge;
 import org.wamblee.system.graph.Edge;
 import org.wamblee.system.graph.EdgeFactory;
 import org.wamblee.system.graph.Node;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
- * Factory that creates links between required and provided interfaces.
+ * Factory that creates edges between required and provided interfaces.
+ * Speciflcally it creates:
+ * <ul>
+ * <li>Edges between provided and required interfaces of a container.</li>
+ * <li>Edges between required and externally required interfaces</li>
+ * <li>Edges between externally provided and provided interfaces.
+ * </ul>
  * 
  * @author Erik Brakkee
- * 
  */
 public class RequiredProvidedEdgeFactory implements EdgeFactory {
-
+    /**
+     * Creates a new RequiredProvidedEdgeFactory object.
+     */
     public RequiredProvidedEdgeFactory() {
         // Empty.
     }
@@ -38,31 +45,36 @@ public class RequiredProvidedEdgeFactory implements EdgeFactory {
     @Override
     public List<Edge> create(Node aFrom, Node aTo) {
         List<Edge> result = new ArrayList<Edge>();
+
         if (aFrom instanceof RequiredInterfaceNode) {
             RequiredInterfaceNode required = (RequiredInterfaceNode) aFrom;
+
             if (aTo instanceof ProvidedInterfaceNode) {
-             
                 ProvidedInterfaceNode provided = (ProvidedInterfaceNode) aTo;
+
                 if (required.getRequired()
-                        .implementedBy(provided.getProvided())) {
+                    .implementedBy(provided.getProvided())) {
                     result.add(new DefaultEdge(required, provided));
                 }
             } else if (aTo instanceof ExternalRequiredInterfaceNode) {
                 ExternalRequiredInterfaceNode external = (ExternalRequiredInterfaceNode) aTo;
-                if ( required.getRequired().equals(external.getRequired())) { 
+
+                if (external.getRequired().covers(required.getRequired())) {
                     result.add(new DefaultEdge(required, external));
                 }
             }
-        } else if ( aFrom instanceof ProvidedInterfaceNode) { 
-            ProvidedInterfaceNode provided = (ProvidedInterfaceNode)aFrom;
-            if ( aTo instanceof ExternalProvidedInterfaceNode) { 
-                ExternalProvidedInterfaceNode external = (ExternalProvidedInterfaceNode)aTo;
-                if ( provided.getProvided().equals(external.getProvided())) { 
+        } else if (aFrom instanceof ProvidedInterfaceNode) {
+            ProvidedInterfaceNode provided = (ProvidedInterfaceNode) aFrom;
+
+            if (aTo instanceof ExternalProvidedInterfaceNode) {
+                ExternalProvidedInterfaceNode external = (ExternalProvidedInterfaceNode) aTo;
+
+                if (provided.getProvided().covers(external.getProvided())) {
                     result.add(new DefaultEdge(external, provided));
                 }
             }
         }
+
         return result;
     }
-
 }