X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fconfig%2Fconfig-manager%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fmanager%2Fimpl%2Fosgi%2FModuleFactoryBundleTracker.java;h=8ca5da282511b88ee4cf5e7ea2887ecfba634b4b;hb=refs%2Fchanges%2F73%2F46573%2F5;hp=cc71370c95891d58bb6473c8ec3f2425702fa7f9;hpb=4497e2212e73e13356447b9644bbdc935411949a;p=controller.git diff --git a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/osgi/ModuleFactoryBundleTracker.java b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/osgi/ModuleFactoryBundleTracker.java index cc71370c95..8ca5da2825 100644 --- a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/osgi/ModuleFactoryBundleTracker.java +++ b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/osgi/ModuleFactoryBundleTracker.java @@ -7,13 +7,11 @@ */ package org.opendaylight.controller.config.manager.impl.osgi; -import static java.lang.String.format; - import com.google.common.annotations.VisibleForTesting; -import java.io.InputStream; +import com.google.common.io.Resources; +import java.io.IOException; import java.net.URL; -import java.util.List; -import org.apache.commons.io.IOUtils; +import java.nio.charset.StandardCharsets; import org.opendaylight.controller.config.spi.ModuleFactory; import org.osgi.framework.Bundle; import org.osgi.framework.BundleEvent; @@ -22,7 +20,6 @@ import org.osgi.util.tracker.BundleTrackerCustomizer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - /** * OSGi extender that listens for bundle activation events. Reads file * META-INF/services/org.opendaylight.controller.config.spi.ModuleFactory, each @@ -32,7 +29,7 @@ import org.slf4j.LoggerFactory; * the services are unregistered automatically. * Code based on http://www.toedter.com/blog/?p=236 */ -public class ModuleFactoryBundleTracker implements BundleTrackerCustomizer { +public class ModuleFactoryBundleTracker implements BundleTrackerCustomizer { private final BlankTransactionServiceTracker blankTransactionServiceTracker; private static final Logger LOG = LoggerFactory.getLogger(ModuleFactoryBundleTracker.class); @@ -41,33 +38,37 @@ public class ModuleFactoryBundleTracker implements BundleTrackerCustomizer lines = IOUtils.readLines(inputStream); - for (String factoryClassName : lines) { + try { + for (String factoryClassName : Resources.readLines(resource, StandardCharsets.UTF_8)) { registerFactory(factoryClassName, bundle); } - } catch (Exception e) { + + return Boolean.TRUE; + } catch (IOException e) { LOG.error("Error while reading {}", resource, e); throw new RuntimeException(e); } } - return bundle; + + return Boolean.FALSE; } @Override - public void modifiedBundle(Bundle bundle, BundleEvent event, Object object) { + public void modifiedBundle(Bundle bundle, BundleEvent event, Boolean hasFactory) { // NOOP } @Override - public void removedBundle(Bundle bundle, BundleEvent event, Object object) { - // workaround for service tracker not getting removed service event - blankTransactionServiceTracker.blankTransaction(); + public void removedBundle(Bundle bundle, BundleEvent event, Boolean hasFactory) { + if(hasFactory) { + // workaround for service tracker not getting removed service event + blankTransactionServiceTracker.blankTransactionSync(); + } } @VisibleForTesting @@ -112,6 +113,6 @@ public class ModuleFactoryBundleTracker implements BundleTrackerCustomizer