X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=system%2Fgeneral%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fgraph%2Fcomponent%2FRequiredProvidedEdgeFactory.java;h=3f89884fd84982d1c47c6f55548a06eb16a8eff8;hb=89c06d4d52b46c154128c97d6e758fa1f4fc7a6e;hp=983acba1c78c61e343f75b7af1f9374c6e5693f0;hpb=aa78ce0aeaa36871bd926eefa1eabf9cb3254c7a;p=utils
diff --git a/system/general/src/main/java/org/wamblee/system/graph/component/RequiredProvidedEdgeFactory.java b/system/general/src/main/java/org/wamblee/system/graph/component/RequiredProvidedEdgeFactory.java
index 983acba1..3f89884f 100644
--- a/system/general/src/main/java/org/wamblee/system/graph/component/RequiredProvidedEdgeFactory.java
+++ b/system/general/src/main/java/org/wamblee/system/graph/component/RequiredProvidedEdgeFactory.java
@@ -1,12 +1,12 @@
/*
* Copyright 2008 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.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -15,54 +15,75 @@
*/
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:
+ *
+ * - Edges between provided and required interfaces of a
+ * container.
+ * - Edges between required and externally required interfaces
+ * - Edges between externally provided and provided interfaces.
+ *
+ *
* @author Erik Brakkee
- *
*/
public class RequiredProvidedEdgeFactory implements EdgeFactory {
-
+ /**
+ * Creates a new RequiredProvidedEdgeFactory object.
+ */
public RequiredProvidedEdgeFactory() {
// Empty.
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param aFrom DOCUMENT ME!
+ * @param aTo DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
@Override
public List create(Node aFrom, Node aTo) {
List result = new ArrayList();
+
if (aFrom instanceof RequiredInterfaceNode) {
RequiredInterfaceNode required = (RequiredInterfaceNode) aFrom;
+
if (aTo instanceof ProvidedInterfaceNode) {
-
ProvidedInterfaceNode provided = (ProvidedInterfaceNode) aTo;
- if (required.getRequired()
- .implementedBy(provided.getProvided())) {
+
+ if (required.getRequired().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;
}
-
}