X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-broker-config%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyang%2Fmd%2Fsal%2Fdom%2Fimpl%2FSchemaServiceImplSingletonModule.java;h=93942957df705cc942c73ab3903d7d437c791e33;hb=0e5d0eeeda176fe4ef0d5f65097998b32e38abf1;hp=fb4043053beb72443db5a056b52e736d58c8727e;hpb=08cebe000ade997fd2c84ee0e690beddd4ce9209;p=controller.git diff --git a/opendaylight/md-sal/sal-dom-broker-config/src/main/java/org/opendaylight/controller/config/yang/md/sal/dom/impl/SchemaServiceImplSingletonModule.java b/opendaylight/md-sal/sal-dom-broker-config/src/main/java/org/opendaylight/controller/config/yang/md/sal/dom/impl/SchemaServiceImplSingletonModule.java index fb4043053b..93942957df 100644 --- a/opendaylight/md-sal/sal-dom-broker-config/src/main/java/org/opendaylight/controller/config/yang/md/sal/dom/impl/SchemaServiceImplSingletonModule.java +++ b/opendaylight/md-sal/sal-dom-broker-config/src/main/java/org/opendaylight/controller/config/yang/md/sal/dom/impl/SchemaServiceImplSingletonModule.java @@ -8,10 +8,9 @@ package org.opendaylight.controller.config.yang.md.sal.dom.impl; import com.google.common.util.concurrent.CheckedFuture; +import org.opendaylight.controller.config.api.osgi.WaitingServiceTracker; import org.opendaylight.controller.sal.core.api.model.SchemaService; import org.opendaylight.controller.sal.core.api.model.YangTextSourceProvider; -import org.opendaylight.controller.sal.dom.broker.GlobalBundleScanningSchemaServiceImpl; -import org.opendaylight.yangtools.concepts.Delegator; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; @@ -64,57 +63,54 @@ org.opendaylight.controller.config.yang.md.sal.dom.impl.AbstractSchemaServiceImp } @Override - public java.lang.AutoCloseable createInstance() { - return new GlobalSchemaServiceProxy(GlobalBundleScanningSchemaServiceImpl.getInstance()); - } - - private static class GlobalSchemaServiceProxy implements AutoCloseable, SchemaService, YangTextSourceProvider, - Delegator { - private final GlobalBundleScanningSchemaServiceImpl delegate; - - public GlobalSchemaServiceProxy(GlobalBundleScanningSchemaServiceImpl service) { - this.delegate = service; - } - - @Override - public void close() { - // Intentional noop as the life-cycle is controlled via blueprint. - } - - @Override - public void addModule(final Module arg0) { - delegate.addModule(arg0); - } - - @Override - public SchemaContext getGlobalContext() { - return delegate.getGlobalContext(); + public AutoCloseable createInstance() { + final WaitingServiceTracker schemaServiceTracker = + WaitingServiceTracker.create(SchemaService.class, bundleContext); + final SchemaService schemaService = schemaServiceTracker.waitForService(WaitingServiceTracker.FIVE_MINUTES); + + final WaitingServiceTracker sourceProviderTracker = + WaitingServiceTracker.create(YangTextSourceProvider.class, bundleContext); + final YangTextSourceProvider sourceProvider = sourceProviderTracker.waitForService(WaitingServiceTracker.FIVE_MINUTES); + + class GlobalSchemaServiceProxy implements AutoCloseable, SchemaService, YangTextSourceProvider { + @Override + public void close() { + schemaServiceTracker.close(); + sourceProviderTracker.close(); + } + + @Override + public void addModule(final Module arg0) { + schemaService.addModule(arg0); + } + + @Override + public SchemaContext getGlobalContext() { + return schemaService.getGlobalContext(); + } + + @Override + public SchemaContext getSessionContext() { + return schemaService.getSessionContext(); + } + + @Override + public ListenerRegistration registerSchemaContextListener(final SchemaContextListener arg0) { + return schemaService.registerSchemaContextListener(arg0); + } + + @Override + public void removeModule(final Module arg0) { + schemaService.removeModule(arg0); + } + + @Override + public CheckedFuture getSource( + SourceIdentifier sourceIdentifier) { + return sourceProvider.getSource(sourceIdentifier); + } } - @Override - public SchemaContext getSessionContext() { - return delegate.getSessionContext(); - } - - @Override - public ListenerRegistration registerSchemaContextListener(final SchemaContextListener arg0) { - return delegate.registerSchemaContextListener(arg0); - } - - @Override - public void removeModule(final Module arg0) { - delegate.removeModule(arg0); - } - - @Override - public SchemaService getDelegate() { - return delegate; - } - - @Override - public CheckedFuture getSource( - SourceIdentifier sourceIdentifier) { - return delegate.getSource(sourceIdentifier); - } + return new GlobalSchemaServiceProxy(); } }