private void buildDependecyNodesAndEdges() { for(DependencyGraphNode node : m_componentToNode.values()) { ComponentNode componentNode = (ComponentNode)node; ComponentDependencyDeclaration[] dependencyDeclarations = componentNode.getComponentDeclaration().getComponentDependencies(); for(ComponentDependencyDeclaration cdd : dependencyDeclarations) { if(dependencyMustBeAddedToGraph(cdd)) { DependencyNode dependencyNode = new DependencyNode(cdd); m_dependencyToNode.put(cdd, dependencyNode); // add edges from the component node to newly created dependency node componentNode.addSuccessor(dependencyNode); // add edges from the newly created dependency node to the components // providing those dependencies (only applicable to service dependencies) List<ComponentNode> providerComponents = getProviderComponents(dependencyNode); for(ComponentNode p : providerComponents) { dependencyNode.addSuccessor(p); } } } } }