X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=dom%2Fmdsal-dom-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fdom%2Fbroker%2Fosgi%2FOsgiBundleScanningSchemaService.java;h=0e544a84017efef9cdc13bee70ea19653bde66bc;hb=c37d38386002ed12b279938051813f99a4de70ff;hp=1ff49c0186dea19f588aae21511d9025d2a1d885;hpb=e575e21ed557f68a7bb256fa1186e691b440c2ae;p=mdsal.git diff --git a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/osgi/OsgiBundleScanningSchemaService.java b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/osgi/OsgiBundleScanningSchemaService.java index 1ff49c0186..0e544a8401 100644 --- a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/osgi/OsgiBundleScanningSchemaService.java +++ b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/osgi/OsgiBundleScanningSchemaService.java @@ -26,7 +26,7 @@ import org.opendaylight.yangtools.util.ListenerRegistry; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider; -import org.opendaylight.yangtools.yang.parser.repo.URLSchemaContextResolver; +import org.opendaylight.yangtools.yang.parser.repo.YangTextSchemaContextResolver; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.BundleEvent; @@ -38,11 +38,12 @@ import org.osgi.util.tracker.ServiceTrackerCustomizer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class OsgiBundleScanningSchemaService implements SchemaContextProvider, DOMSchemaService, ServiceTrackerCustomizer, AutoCloseable { +public class OsgiBundleScanningSchemaService implements SchemaContextProvider, DOMSchemaService, + ServiceTrackerCustomizer, AutoCloseable { private static final Logger LOG = LoggerFactory.getLogger(OsgiBundleScanningSchemaService.class); private final ListenerRegistry listeners = new ListenerRegistry<>(); - private final URLSchemaContextResolver contextResolver = URLSchemaContextResolver.create("global-bundle"); + private final YangTextSchemaContextResolver contextResolver = YangTextSchemaContextResolver.create("global-bundle"); private final BundleScanner scanner = new BundleScanner(); private final BundleContext context; @@ -55,14 +56,14 @@ public class OsgiBundleScanningSchemaService implements SchemaContextProvider, D this.context = Preconditions.checkNotNull(context); } - public synchronized static OsgiBundleScanningSchemaService createInstance(final BundleContext ctx) { + public static synchronized OsgiBundleScanningSchemaService createInstance(final BundleContext ctx) { Preconditions.checkState(instance == null); instance = new OsgiBundleScanningSchemaService(ctx); instance.start(); return instance; } - public synchronized static OsgiBundleScanningSchemaService getInstance() { + public static synchronized OsgiBundleScanningSchemaService getInstance() { Preconditions.checkState(instance != null, "Global Instance was not instantiated"); return instance; } @@ -84,8 +85,10 @@ public class OsgiBundleScanningSchemaService implements SchemaContextProvider, D checkState(context != null); LOG.debug("start() starting"); - listenerTracker = new ServiceTracker<>(context, SchemaContextListener.class, OsgiBundleScanningSchemaService.this); - bundleTracker = new BundleTracker<>(context, Bundle.RESOLVED | Bundle.STARTING | + listenerTracker = new ServiceTracker<>(context, SchemaContextListener.class, + OsgiBundleScanningSchemaService.this); + bundleTracker = new BundleTracker<>(context, Bundle.RESOLVED | Bundle.STARTING + | Bundle.STOPPING | Bundle.ACTIVE, scanner); bundleTracker.open(); @@ -114,9 +117,10 @@ public class OsgiBundleScanningSchemaService implements SchemaContextProvider, D } @Override - public synchronized ListenerRegistration registerSchemaContextListener(final SchemaContextListener listener) { + public synchronized ListenerRegistration + registerSchemaContextListener(final SchemaContextListener listener) { final Optional potentialCtx = contextResolver.getSchemaContext(); - if(potentialCtx.isPresent()) { + if (potentialCtx.isPresent()) { listener.onGlobalContextUpdated(potentialCtx.get()); } return listeners.register(listener); @@ -136,6 +140,7 @@ public class OsgiBundleScanningSchemaService implements SchemaContextProvider, D } } + @SuppressWarnings("checkstyle:IllegalCatch") private synchronized void updateContext(final SchemaContext snapshot) { final Object[] services = listenerTracker.getServices(); for (final ListenerRegistration listener : listeners) { @@ -157,6 +162,7 @@ public class OsgiBundleScanningSchemaService implements SchemaContextProvider, D } } + @SuppressWarnings("checkstyle:IllegalCatch") private class BundleScanner implements BundleTrackerCustomizer> { @Override public Iterable addingBundle(final Bundle bundle, final BundleEvent event) { @@ -199,9 +205,10 @@ public class OsgiBundleScanningSchemaService implements SchemaContextProvider, D * {@link #getYangStoreSnapshot()} will throw exception. There is no * rollback. */ - + @SuppressWarnings("checkstyle:IllegalCatch") @Override - public synchronized void removedBundle(final Bundle bundle, final BundleEvent event, final Iterable urls) { + public synchronized void removedBundle(final Bundle bundle, final BundleEvent event, + final Iterable urls) { for (final Registration url : urls) { try { url.close(); @@ -211,9 +218,10 @@ public class OsgiBundleScanningSchemaService implements SchemaContextProvider, D } final int numUrls = Iterables.size(urls); - if(numUrls > 0 ) { - if(LOG.isDebugEnabled()) { - LOG.debug("removedBundle: {}, state: {}, # urls: {}", bundle.getSymbolicName(), bundle.getState(), numUrls); + if (numUrls > 0 ) { + if (LOG.isDebugEnabled()) { + LOG.debug("removedBundle: {}, state: {}, # urls: {}", bundle.getSymbolicName(), + bundle.getState(), numUrls); } tryToUpdateSchemaContext(); @@ -237,8 +245,8 @@ public class OsgiBundleScanningSchemaService implements SchemaContextProvider, D return; } final Optional schema = contextResolver.getSchemaContext(); - if(schema.isPresent()) { - if(LOG.isDebugEnabled()) { + if (schema.isPresent()) { + if (LOG.isDebugEnabled()) { LOG.debug("Got new SchemaContext: # of modules {}", schema.get().getAllModuleIdentifiers().size()); } @@ -247,12 +255,14 @@ public class OsgiBundleScanningSchemaService implements SchemaContextProvider, D } @Override - public void modifiedService(final ServiceReference reference, final SchemaContextListener service) { + public void modifiedService(final ServiceReference reference, + final SchemaContextListener service) { // NOOP } @Override - public void removedService(final ServiceReference reference, final SchemaContextListener service) { + public void removedService(final ServiceReference reference, + final SchemaContextListener service) { context.ungetService(reference); } }