import org.opendaylight.yangtools.concepts.ObjectRegistration;
import org.opendaylight.yangtools.sal.binding.generator.api.ClassLoadingStrategy;
import org.opendaylight.yangtools.sal.binding.generator.api.ModuleInfoRegistry;
+import org.opendaylight.yangtools.sal.binding.generator.util.BindingRuntimeContext;
import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
+import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
+import org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceProvider;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
private final ModuleInfoRegistry moduleInfoRegistry;
private final SchemaContextProvider schemaContextProvider;
+ private final SchemaSourceProvider<YangTextSchemaSource> sourceProvider;
private final BindingContextProvider bindingContextProvider;
private final ClassLoadingStrategy classLoadingStrat;
private final ServiceRegistration<SchemaContextProvider> osgiReg;
public RefreshingSCPModuleInfoRegistry(final ModuleInfoRegistry moduleInfoRegistry,
- final SchemaContextProvider schemaContextProvider, final ClassLoadingStrategy classLoadingStrat, final BindingContextProvider bindingContextProvider, final BundleContext bundleContext) {
+ final SchemaContextProvider schemaContextProvider, final ClassLoadingStrategy classLoadingStrat,
+ final SchemaSourceProvider<YangTextSchemaSource> sourceProvider, final BindingContextProvider bindingContextProvider,
+ final BundleContext bundleContext) {
+
this.moduleInfoRegistry = moduleInfoRegistry;
this.schemaContextProvider = schemaContextProvider;
this.classLoadingStrat = classLoadingStrat;
+ this.sourceProvider = sourceProvider;
this.bindingContextProvider = bindingContextProvider;
- osgiReg = bundleContext.registerService(SchemaContextProvider.class, schemaContextProvider, new Hashtable<String, String>());
+ osgiReg = bundleContext
+ .registerService(SchemaContextProvider.class, schemaContextProvider, new Hashtable<String, String>());
}
private void updateService() {
bindingContextProvider.update(classLoadingStrat, schemaContextProvider);
- osgiReg.setProperties(null); // send modifiedService event
+ osgiReg.setProperties(new Hashtable<String, Object>() {{
+ put(BindingRuntimeContext.class.getName(), bindingContextProvider.getBindingContext());
+ put(SchemaSourceProvider.class.getName(), sourceProvider);
+ }
+ }); // send modifiedService event
}
@Override
osgiReg.unregister();
}
-
private class ObjectRegistrationWrapper implements ObjectRegistration<YangModuleInfo> {
private final ObjectRegistration<YangModuleInfo> inner;
updateService();// send modify event when a bundle disappears
}
-
@Override
public String toString() {
return inner.toString();