X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-config%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyang%2Fmd%2Fsal%2Fbinding%2Fimpl%2FRuntimeMappingModule.java;h=ba264635a08048430c1f825a3a666e0fbd58122d;hb=bb813bc67d165b02078e0d9aaa194d3232e170e5;hp=87ce27d501159a0736b9b73d31545e660716a878;hpb=2fb4d7e732175a31d32e67968c957f8bfd887196;p=controller.git diff --git a/opendaylight/md-sal/sal-binding-config/src/main/java/org/opendaylight/controller/config/yang/md/sal/binding/impl/RuntimeMappingModule.java b/opendaylight/md-sal/sal-binding-config/src/main/java/org/opendaylight/controller/config/yang/md/sal/binding/impl/RuntimeMappingModule.java index 87ce27d501..ba264635a0 100644 --- a/opendaylight/md-sal/sal-binding-config/src/main/java/org/opendaylight/controller/config/yang/md/sal/binding/impl/RuntimeMappingModule.java +++ b/opendaylight/md-sal/sal-binding-config/src/main/java/org/opendaylight/controller/config/yang/md/sal/binding/impl/RuntimeMappingModule.java @@ -8,21 +8,17 @@ package org.opendaylight.controller.config.yang.md.sal.binding.impl; import com.google.common.base.Preconditions; -import java.util.Hashtable; +import org.opendaylight.controller.config.api.osgi.WaitingServiceTracker; import org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec; -import org.opendaylight.controller.sal.binding.codegen.impl.SingletonHolder; -import org.opendaylight.yangtools.binding.data.codec.gen.impl.StreamWriterGenerator; -import org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry; -import org.opendaylight.yangtools.sal.binding.generator.impl.GeneratedClassLoadingStrategy; -import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceReference; /** + * Deprecated. * -**/ + * @deprecated Replaced by blueprint wiring + */ +@Deprecated public final class RuntimeMappingModule extends AbstractRuntimeMappingModule { - private BundleContext bundleContext; public RuntimeMappingModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, @@ -49,17 +45,18 @@ public final class RuntimeMappingModule extends AbstractRuntimeMappingModule { } @Override - public java.lang.AutoCloseable createInstance() { - final GeneratedClassLoadingStrategy classLoading = getGlobalClassLoadingStrategy(); - final BindingNormalizedNodeCodecRegistry codecRegistry = new BindingNormalizedNodeCodecRegistry(StreamWriterGenerator.create(SingletonHolder.JAVASSIST)); - final BindingToNormalizedNodeCodec instance = new BindingToNormalizedNodeCodec(classLoading, codecRegistry,getWaitForSchema()); - bundleContext.registerService(SchemaContextListener.class, instance, new Hashtable()); - return instance; - } + public AutoCloseable createInstance() { + // We need to return the concrete BindingToNormalizedNodeCodec instance for backwards compatibility + // for CSS users that inject the binding-dom-mapping-service. + final WaitingServiceTracker tracker = + WaitingServiceTracker.create(BindingToNormalizedNodeCodec.class, bundleContext); + final BindingToNormalizedNodeCodec service = tracker.waitForService(WaitingServiceTracker.FIVE_MINUTES); - private GeneratedClassLoadingStrategy getGlobalClassLoadingStrategy() { - final ServiceReference ref = bundleContext.getServiceReference(GeneratedClassLoadingStrategy.class); - return bundleContext.getService(ref); + // Ideally we would close the ServiceTracker via the returned AutoCloseable but then we'd have to + // proxy the BindingToNormalizedNodeCodec instance which is problematic. It's OK to close the + // ServiceTracker here. + tracker.close(); + return service; } public void setBundleContext(final BundleContext bundleContext) {