X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-runtime-spi%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fruntime%2Fspi%2FDefaultModuleInfoSnapshot.java;h=a439c50899211fb61fa2a76231c34434784e7761;hb=8a0509e7b8909c4fa5b1b4b54b62a6474e55a8eb;hp=1f0a238d99e3d00c66f671359f08391ec2987712;hpb=5b45057b26a4c86487f569b940f553c977cb3798;p=mdsal.git diff --git a/binding/mdsal-binding-runtime-spi/src/main/java/org/opendaylight/mdsal/binding/runtime/spi/DefaultModuleInfoSnapshot.java b/binding/mdsal-binding-runtime-spi/src/main/java/org/opendaylight/mdsal/binding/runtime/spi/DefaultModuleInfoSnapshot.java index 1f0a238d99..a439c50899 100644 --- a/binding/mdsal-binding-runtime-spi/src/main/java/org/opendaylight/mdsal/binding/runtime/spi/DefaultModuleInfoSnapshot.java +++ b/binding/mdsal-binding-runtime-spi/src/main/java/org/opendaylight/mdsal/binding/runtime/spi/DefaultModuleInfoSnapshot.java @@ -10,55 +10,58 @@ package org.opendaylight.mdsal.binding.runtime.spi; import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableMap; -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.ListenableFuture; import java.util.Map; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.mdsal.binding.runtime.api.ModuleInfoSnapshot; import org.opendaylight.yangtools.yang.binding.YangModuleInfo; import org.opendaylight.yangtools.yang.binding.contract.Naming; import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; +import org.opendaylight.yangtools.yang.model.api.source.SourceIdentifier; +import org.opendaylight.yangtools.yang.model.api.source.YangTextSource; import org.opendaylight.yangtools.yang.model.repo.api.MissingSchemaSourceException; -import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; -import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource; +import org.opendaylight.yangtools.yang.model.spi.source.DelegatedYangTextSource; final class DefaultModuleInfoSnapshot implements ModuleInfoSnapshot { private final ImmutableMap moduleInfos; private final ImmutableMap classLoaders; - private final @NonNull EffectiveModelContext effectiveModel; + private final @NonNull EffectiveModelContext modelContext; - DefaultModuleInfoSnapshot(final EffectiveModelContext effectiveModel, + DefaultModuleInfoSnapshot(final EffectiveModelContext modelContext, final Map moduleInfos, final Map classLoaders) { - this.effectiveModel = requireNonNull(effectiveModel); + this.modelContext = requireNonNull(modelContext); this.moduleInfos = ImmutableMap.copyOf(moduleInfos); this.classLoaders = ImmutableMap.copyOf(classLoaders); } @Override - public EffectiveModelContext getEffectiveModelContext() { - return effectiveModel; + public EffectiveModelContext modelContext() { + return modelContext; } @Override - public ListenableFuture getSource(final SourceIdentifier sourceIdentifier) { - final YangModuleInfo info = moduleInfos.get(sourceIdentifier); - if (info == null) { - return Futures.immediateFailedFuture( - new MissingSchemaSourceException("No source registered", sourceIdentifier)); + public YangTextSource yangTextSource(final SourceIdentifier sourceId) { + final var info = moduleInfos.get(sourceId); + return info == null ? null : new DelegatedYangTextSource(sourceId, info.getYangTextCharSource()); + } + + @Override + public YangTextSource getYangTextSource(final SourceIdentifier sourceId) throws MissingSchemaSourceException { + final var source = yangTextSource(sourceId); + if (source == null) { + throw new MissingSchemaSourceException(sourceId, "No source registered"); } - return Futures.immediateFuture(YangTextSchemaSource.delegateForByteSource(sourceIdentifier, - info.getYangTextByteSource())); + return source; } @Override public Class loadClass(final String fullyQualifiedName) throws ClassNotFoundException { - final String packageName = Naming.getModelRootPackageName(fullyQualifiedName); - final ClassLoader loader = classLoaders.get(packageName); + final var packageName = Naming.getModelRootPackageName(fullyQualifiedName); + final var loader = classLoaders.get(packageName); if (loader == null) { throw new ClassNotFoundException("Package " + packageName + " not found"); } @SuppressWarnings("unchecked") - final Class loaded = (Class) loader.loadClass(fullyQualifiedName); + final var loaded = (Class) loader.loadClass(fullyQualifiedName); return loaded; } }