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%2Fosgi%2FBundleContextBackedModuleFactoriesResolver.java;h=0cbbbab912d3cce521fda7de34837092613b9a47;hp=2a533ab9a3a6813ad4fed4c4dcfe4a5dbcec2cf6;hb=0e74e5866c506da072cae3a2897335df7170f958;hpb=089bfc0f3f32322b54dba2bf9402769638c09e06 diff --git a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/osgi/BundleContextBackedModuleFactoriesResolver.java b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/osgi/BundleContextBackedModuleFactoriesResolver.java index 2a533ab9a3..0cbbbab912 100644 --- a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/osgi/BundleContextBackedModuleFactoriesResolver.java +++ b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/osgi/BundleContextBackedModuleFactoriesResolver.java @@ -7,6 +7,10 @@ */ package org.opendaylight.controller.config.manager.impl.osgi; +import java.util.AbstractMap; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; import org.opendaylight.controller.config.manager.impl.factoriesresolver.ModuleFactoriesResolver; import org.opendaylight.controller.config.spi.ModuleFactory; import org.osgi.framework.BundleContext; @@ -15,22 +19,15 @@ import org.osgi.framework.ServiceReference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.AbstractMap; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - /** * Retrieves list of currently registered Module Factories using bundlecontext. */ -public class BundleContextBackedModuleFactoriesResolver implements - ModuleFactoriesResolver { - private static final Logger logger = LoggerFactory - .getLogger(BundleContextBackedModuleFactoriesResolver.class); +public class BundleContextBackedModuleFactoriesResolver implements ModuleFactoriesResolver { + private static final Logger LOG = LoggerFactory.getLogger(BundleContextBackedModuleFactoriesResolver.class); private final BundleContext bundleContext; public BundleContextBackedModuleFactoriesResolver( - BundleContext bundleContext) { + final BundleContext bundleContext) { this.bundleContext = bundleContext; } @@ -38,8 +35,7 @@ public class BundleContextBackedModuleFactoriesResolver implements public Map> getAllFactories() { Collection> serviceReferences; try { - serviceReferences = bundleContext.getServiceReferences( - ModuleFactory.class, null); + serviceReferences = bundleContext.getServiceReferences(ModuleFactory.class, null); } catch (InvalidSyntaxException e) { throw new IllegalStateException(e); } @@ -50,10 +46,10 @@ public class BundleContextBackedModuleFactoriesResolver implements // returned by a ServiceFactory does not // implement the classes under which it was registered or the // ServiceFactory threw an exception. - if(factory == null) { + if (factory == null) { throw new NullPointerException("ServiceReference of class" + serviceReference.getClass() + "not found."); } - StringBuffer errors = new StringBuffer(); + String moduleName = factory.getImplementationName(); if (moduleName == null || moduleName.isEmpty()) { throw new IllegalStateException( @@ -62,25 +58,19 @@ public class BundleContextBackedModuleFactoriesResolver implements if (serviceReference.getBundle() == null || serviceReference.getBundle().getBundleContext() == null) { throw new NullPointerException("Bundle context of " + factory + " ModuleFactory not found."); } - logger.debug("Reading factory {} {}", moduleName, factory); - String error = null; + LOG.debug("Reading factory {} {}", moduleName, factory); + Map.Entry conflicting = result.get(moduleName); if (conflicting != null) { - error = String - .format("Module name is not unique. Found two conflicting factories with same name '%s': " + - "\n\t%s\n\t%s\n", moduleName, conflicting.getKey(), factory); - + String error = String.format( + "Module name is not unique. Found two conflicting factories with same name '%s': '%s' '%s'", + moduleName, conflicting.getKey(), factory); + LOG.error(error); + throw new IllegalArgumentException(error); } - if (error == null) { - result.put(moduleName, new AbstractMap.SimpleImmutableEntry<>(factory, - serviceReference.getBundle().getBundleContext())); - } else { - errors.append(error); - } - if (errors.length() > 0) { - throw new IllegalArgumentException(errors.toString()); - } + result.put(moduleName, new AbstractMap.SimpleImmutableEntry<>(factory, + serviceReference.getBundle().getBundleContext())); } return result; }