X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fdom%2Fbroker%2FGlobalBundleScanningSchemaServiceImpl.java;h=68edea7d754657927936d8cc28eae8f573855e44;hp=82637327f6b10d719c04e4fa04ad6a7b53b2dafe;hb=f5742910345f48f6e8502bf5a5a673ee3c63d155;hpb=eb887b1c2c8cd2768f8b4c2ed2b5054f97798466 diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/GlobalBundleScanningSchemaServiceImpl.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/GlobalBundleScanningSchemaServiceImpl.java index 82637327f6..68edea7d75 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/GlobalBundleScanningSchemaServiceImpl.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/GlobalBundleScanningSchemaServiceImpl.java @@ -8,23 +8,24 @@ package org.opendaylight.controller.sal.dom.broker; import static com.google.common.base.Preconditions.checkState; - import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; import java.net.URL; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; import java.util.List; - import org.opendaylight.controller.sal.core.api.model.SchemaService; -import org.opendaylight.controller.sal.dom.broker.impl.SchemaContextProvider; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.concepts.Registration; -import org.opendaylight.yangtools.concepts.util.ListenerRegistry; +import org.opendaylight.yangtools.util.ListenerRegistry; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; -import org.opendaylight.yangtools.yang.parser.impl.util.URLSchemaContextResolver; +import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider; +import org.opendaylight.yangtools.yang.parser.repo.URLSchemaContextResolver; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.BundleEvent; @@ -36,15 +37,11 @@ import org.osgi.util.tracker.ServiceTrackerCustomizer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Optional; -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableList; - public class GlobalBundleScanningSchemaServiceImpl implements SchemaContextProvider, SchemaService, ServiceTrackerCustomizer, AutoCloseable { private static final Logger LOG = LoggerFactory.getLogger(GlobalBundleScanningSchemaServiceImpl.class); private final ListenerRegistry listeners = new ListenerRegistry<>(); - private final URLSchemaContextResolver contextResolver = new URLSchemaContextResolver(); + private final URLSchemaContextResolver contextResolver = URLSchemaContextResolver.create("global-bundle"); private final BundleScanner scanner = new BundleScanner(); private final BundleContext context; @@ -71,7 +68,11 @@ public class GlobalBundleScanningSchemaServiceImpl implements SchemaContextProvi @VisibleForTesting public static synchronized void destroyInstance() { - instance = null; + try { + instance.close(); + } finally { + instance = null; + } } public BundleContext getContext() { @@ -124,16 +125,18 @@ public class GlobalBundleScanningSchemaServiceImpl implements SchemaContextProvi } @Override - public void close() throws Exception { + public void close() { if (bundleTracker != null) { bundleTracker.close(); } if (listenerTracker != null) { listenerTracker.close(); } - // FIXME: Add listeners.close(); - } + for (ListenerRegistration l : listeners.getListeners()) { + l.close(); + } + } private synchronized void updateContext(final SchemaContext snapshot) { Object[] services = listenerTracker.getServices(); @@ -227,7 +230,7 @@ public class GlobalBundleScanningSchemaServiceImpl implements SchemaContextProvi if (starting) { return; } - Optional schema = contextResolver.tryToUpdateSchemaContext(); + Optional schema = contextResolver.getSchemaContext(); if(schema.isPresent()) { updateContext(schema.get()); }