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%2FModulesHolder.java;h=1132f991d171def6652f42c490b0956d4ea634a9;hp=6bbd7875a94b1fa8a1d4dd8662b2a9cb835420ea;hb=f43b01b81319959b1907e3e04537f5169e7f33d8;hpb=9d2212483a4fca225d5ad58e7f924f58b638ddb6 diff --git a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dependencyresolver/ModulesHolder.java b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dependencyresolver/ModulesHolder.java index 6bbd7875a9..1132f991d1 100644 --- a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dependencyresolver/ModulesHolder.java +++ b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dependencyresolver/ModulesHolder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * Copyright (c) 2013, 2017 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, @@ -7,17 +7,6 @@ */ package org.opendaylight.controller.config.manager.impl.dependencyresolver; -import org.opendaylight.controller.config.api.JmxAttribute; -import org.opendaylight.controller.config.api.JmxAttributeValidationException; -import org.opendaylight.controller.config.api.ModuleIdentifier; -import org.opendaylight.controller.config.manager.impl.CommitInfo; -import org.opendaylight.controller.config.manager.impl.DestroyedModule; -import org.opendaylight.controller.config.manager.impl.ModuleInternalTransactionalInfo; -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.Collection; import java.util.Collections; @@ -26,101 +15,104 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import javax.annotation.concurrent.GuardedBy; +import javax.management.InstanceAlreadyExistsException; +import org.opendaylight.controller.config.api.JmxAttribute; +import org.opendaylight.controller.config.api.JmxAttributeValidationException; +import org.opendaylight.controller.config.api.ModuleIdentifier; +import org.opendaylight.controller.config.manager.impl.CommitInfo; +import org.opendaylight.controller.config.manager.impl.TransactionIdentifier; +import org.opendaylight.controller.config.spi.Module; +import org.opendaylight.controller.config.spi.ModuleFactory; /** * Represents modules to be committed. */ -class ModulesHolder implements TransactionHolder { - private final String transactionName; +class ModulesHolder implements AutoCloseable { + private final TransactionIdentifier transactionIdentifier; @GuardedBy("this") private final Map commitMap = new HashMap<>(); @GuardedBy("this") private final Set unorderedDestroyedFromPreviousTransactions = new HashSet<>(); - ModulesHolder(String transactionName) { - this.transactionName = transactionName; + ModulesHolder(final TransactionIdentifier transactionIdentifier) { + this.transactionIdentifier = transactionIdentifier; } - @Override public CommitInfo toCommitInfo() { List orderedDestroyedFromPreviousTransactions = new ArrayList<>( unorderedDestroyedFromPreviousTransactions.size()); for (ModuleInternalTransactionalInfo toBeDestroyed : unorderedDestroyedFromPreviousTransactions) { - orderedDestroyedFromPreviousTransactions.add(toBeDestroyed - .toDestroyedModule()); + orderedDestroyedFromPreviousTransactions.add(toBeDestroyed.toDestroyedModule()); } Collections.sort(orderedDestroyedFromPreviousTransactions); - return new CommitInfo(orderedDestroyedFromPreviousTransactions, - commitMap); + return new CommitInfo(orderedDestroyedFromPreviousTransactions, commitMap); } - private ModuleInternalTransactionalInfo findModuleInternalTransactionalInfo( - ModuleIdentifier moduleIdentifier, - JmxAttribute jmxAttributeForReporting) { - ModuleInternalTransactionalInfo moduleInternalTransactionalInfo = commitMap - .get(moduleIdentifier); - JmxAttributeValidationException.checkNotNull( - moduleInternalTransactionalInfo, "Module " + moduleIdentifier - + "" + " not found in transaction " + transactionName, + private ModuleInternalTransactionalInfo findModuleInternalTransactionalInfo(final ModuleIdentifier moduleIdentifier, + final JmxAttribute jmxAttributeForReporting) { + ModuleInternalTransactionalInfo moduleInternalTransactionalInfo = commitMap.get(moduleIdentifier); + JmxAttributeValidationException.checkNotNull(moduleInternalTransactionalInfo, + "Module " + moduleIdentifier + "" + " not found in transaction " + transactionIdentifier, jmxAttributeForReporting); return moduleInternalTransactionalInfo; } - @Override - public Module findModule(ModuleIdentifier moduleIdentifier, - JmxAttribute jmxAttributeForReporting) { - return findModuleInternalTransactionalInfo(moduleIdentifier, - jmxAttributeForReporting).getModule(); + public ModuleInternalTransactionalInfo findModuleInternalTransactionalInfo( + final ModuleIdentifier moduleIdentifier) { + ModuleInternalTransactionalInfo found = commitMap.get(moduleIdentifier); + if (found == null) { + throw new IllegalStateException("Not found:" + moduleIdentifier); + } + return found; } - @Override - public ModuleFactory findModuleFactory(ModuleIdentifier moduleIdentifier, - JmxAttribute jmxAttributeForReporting) { - return findModuleInternalTransactionalInfo(moduleIdentifier, - jmxAttributeForReporting).getModuleFactory(); + public Module findModule(final ModuleIdentifier moduleIdentifier, final JmxAttribute jmxAttributeForReporting) { + return findModuleInternalTransactionalInfo(moduleIdentifier, jmxAttributeForReporting).getProxiedModule(); + } + + public ModuleFactory findModuleFactory(final ModuleIdentifier moduleIdentifier, + final JmxAttribute jmxAttributeForReporting) { + return findModuleInternalTransactionalInfo(moduleIdentifier, jmxAttributeForReporting).getModuleFactory(); } - @Override public Map getAllModules() { Map result = new HashMap<>(); for (ModuleInternalTransactionalInfo entry : commitMap.values()) { - ModuleIdentifier name = entry.getName(); - result.put(name, entry.getModule()); + ModuleIdentifier name = entry.getIdentifier(); + result.put(name, entry.getProxiedModule()); } return result; } - @Override - public void put( - ModuleInternalTransactionalInfo moduleInternalTransactionalInfo) { - commitMap.put(moduleInternalTransactionalInfo.getName(), - moduleInternalTransactionalInfo); + public void put(final ModuleInternalTransactionalInfo moduleInternalTransactionalInfo) { + commitMap.put(moduleInternalTransactionalInfo.getIdentifier(), moduleInternalTransactionalInfo); } - @Override - public ModuleInternalTransactionalInfo destroyModule( - ModuleIdentifier moduleIdentifier) { - ModuleInternalTransactionalInfo found = commitMap - .remove(moduleIdentifier); - if (found == null) + public ModuleInternalTransactionalInfo destroyModule(final ModuleIdentifier moduleIdentifier) { + ModuleInternalTransactionalInfo found = commitMap.remove(moduleIdentifier); + if (found == null) { throw new IllegalStateException("Not found:" + moduleIdentifier); + } if (found.hasOldModule()) { unorderedDestroyedFromPreviousTransactions.add(found); } return found; } - @Override - public void assertNotExists(ModuleIdentifier moduleIdentifier) - throws InstanceAlreadyExistsException { + public void assertNotExists(final ModuleIdentifier moduleIdentifier) throws InstanceAlreadyExistsException { if (commitMap.containsKey(moduleIdentifier)) { - throw new InstanceAlreadyExistsException( - "There is an instance registered with name " + moduleIdentifier); + throw new InstanceAlreadyExistsException("There is an instance registered with name " + moduleIdentifier); } } - public Collection getAllInfos(){ + public Collection getAllInfos() { return commitMap.values(); } + + @Override + public void close() { + unorderedDestroyedFromPreviousTransactions.clear(); + } }