X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fconfig%2Fconfig-manager%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fmanager%2Fimpl%2Fdependencyresolver%2FDependencyResolverManager.java;h=645aab37ff770cfc3cbe6399f139a7cf68a07470;hp=34b3093f5d3933daf456eb8a263369aedc50ef02;hb=6117dc1c03128e9f7eac249b4a997449e254cdd6;hpb=9fb64948564e252018f9b1e13e7cea2c92f991aa diff --git a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dependencyresolver/DependencyResolverManager.java b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dependencyresolver/DependencyResolverManager.java index 34b3093f5d..645aab37ff 100644 --- a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dependencyresolver/DependencyResolverManager.java +++ b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dependencyresolver/DependencyResolverManager.java @@ -7,15 +7,8 @@ */ package org.opendaylight.controller.config.manager.impl.dependencyresolver; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.concurrent.GuardedBy; -import javax.management.InstanceAlreadyExistsException; - +import org.opendaylight.controller.config.api.DependencyResolver; +import org.opendaylight.controller.config.api.DependencyResolverFactory; import org.opendaylight.controller.config.api.JmxAttribute; import org.opendaylight.controller.config.api.ModuleIdentifier; import org.opendaylight.controller.config.manager.impl.CommitInfo; @@ -24,12 +17,20 @@ import org.opendaylight.controller.config.manager.impl.TransactionStatus; import org.opendaylight.controller.config.spi.Module; import org.opendaylight.controller.config.spi.ModuleFactory; +import javax.annotation.concurrent.GuardedBy; +import javax.management.InstanceAlreadyExistsException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * Holds information about modules being created and destroyed within this * transaction. Observes usage of DependencyResolver within modules to figure * out dependency tree. */ -public class DependencyResolverManager implements TransactionHolder { +public class DependencyResolverManager implements TransactionHolder, DependencyResolverFactory { @GuardedBy("this") private final Map moduleIdentifiersToDependencyResolverMap = new HashMap<>(); private final ModulesHolder modulesHolder; @@ -41,6 +42,11 @@ public class DependencyResolverManager implements TransactionHolder { this.transactionStatus = transactionStatus; } + @Override + public DependencyResolver createDependencyResolver(ModuleIdentifier moduleIdentifier) { + return getOrCreate(moduleIdentifier); + } + public synchronized DependencyResolverImpl getOrCreate(ModuleIdentifier name) { DependencyResolverImpl dependencyResolver = moduleIdentifiersToDependencyResolverMap .get(name); @@ -73,7 +79,7 @@ public class DependencyResolverManager implements TransactionHolder { List result = new ArrayList<>( moduleIdentifiersToDependencyResolverMap.size()); for (DependencyResolverImpl dri : getAllSorted()) { - ModuleIdentifier driName = dri.getName(); + ModuleIdentifier driName = dri.getIdentifier(); result.add(driName); } return result; @@ -111,6 +117,11 @@ public class DependencyResolverManager implements TransactionHolder { jmxAttributeForReporting); } + @Override + public ModuleInternalTransactionalInfo findModuleInternalTransactionalInfo(ModuleIdentifier moduleIdentifier) { + return modulesHolder.findModuleInternalTransactionalInfo(moduleIdentifier); + } + @Override public ModuleFactory findModuleFactory(ModuleIdentifier moduleIdentifier, JmxAttribute jmxAttributeForReporting) { @@ -128,4 +139,14 @@ public class DependencyResolverManager implements TransactionHolder { throws InstanceAlreadyExistsException { modulesHolder.assertNotExists(moduleIdentifier); } + + public List findAllByFactory(ModuleFactory factory) { + List result = new ArrayList<>(); + for( ModuleInternalTransactionalInfo info : modulesHolder.getAllInfos()) { + if (factory.equals(info.getModuleFactory())) { + result.add(info.getIdentifier()); + } + } + return result; + } }