- private static final class SchemaContextHolder implements DOMSchemaService, EffectiveModelContextProvider {
-
- private final EffectiveModelContext schemaContext;
- private final ListenerRegistry<EffectiveModelContextListener> listeners;
- private final AdapterContext adapterContext;
-
- private SchemaContextHolder() {
- List<YangModuleInfo> moduleInfos = loadModuleInfos();
- this.schemaContext = BindingRuntimeHelpers.createEffectiveModel(moduleInfos);
- this.listeners = ListenerRegistry.create();
- this.adapterContext = new ConstantAdapterContext();
- }
-
- @Override
- public EffectiveModelContext getGlobalContext() {
- return this.schemaContext;
- }
-
-
- /**
- * Loads all {@link YangModelBindingProvider} on the classpath.
- *
- * @return list of known {@link YangModuleInfo}
- */
- private List<YangModuleInfo> loadModuleInfos() {
- List<YangModuleInfo> moduleInfos = new LinkedList<>();
- ServiceLoader<YangModelBindingProvider> yangProviderLoader =
- ServiceLoader.load(YangModelBindingProvider.class);
- for (YangModelBindingProvider yangModelBindingProvider : yangProviderLoader) {
- moduleInfos.add(yangModelBindingProvider.getModuleInfo());
- LOG.debug("Adding [{}] module into known modules", yangModelBindingProvider.getModuleInfo());
- }
- return moduleInfos;
- }
-
- @Override
- public ListenerRegistration<EffectiveModelContextListener> registerSchemaContextListener(
- EffectiveModelContextListener listener) {
- return this.listeners.register(listener);
- }
-
- @Override
- public @NonNull EffectiveModelContext getEffectiveModelContext() {
- return this.schemaContext;
- }
-
- @Override
- public @NonNull ClassToInstanceMap<DOMSchemaServiceExtension> getExtensions() {
- return ImmutableClassToInstanceMap.of();
- }