X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=code-generator%2Fbinding-generator-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fsal%2Fbinding%2Fgenerator%2Fimpl%2FModuleInfoBackedContext.java;h=335ec5967e29536f5c8a97d3843146aa59181986;hb=85c0405ed187f2d00d47c12c20f3c5ab8029cd2f;hp=fb70c8f06cb95d85d4a0097d769bde1fcbb7dc05;hpb=fed812a05f09207cfdd19e3c31d8d0167edeb395;p=yangtools.git diff --git a/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/ModuleInfoBackedContext.java b/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/ModuleInfoBackedContext.java index fb70c8f06c..335ec5967e 100644 --- a/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/ModuleInfoBackedContext.java +++ b/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/ModuleInfoBackedContext.java @@ -15,12 +15,15 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import org.opendaylight.yangtools.concepts.AbstractObjectRegistration; -import org.opendaylight.yangtools.concepts.Registration; -import org.opendaylight.yangtools.sal.binding.generator.util.ClassLoaderUtils; +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.yang.binding.YangModuleInfo; import org.opendaylight.yangtools.yang.binding.util.BindingReflections; +import org.opendaylight.yangtools.yang.binding.util.ClassLoaderUtils; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider; import org.opendaylight.yangtools.yang.model.util.repo.AdvancedSchemaSourceProvider; import org.opendaylight.yangtools.yang.model.util.repo.SourceIdentifier; import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl; @@ -33,9 +36,9 @@ import com.google.common.collect.ImmutableSet; public class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy // implements // - AdvancedSchemaSourceProvider { + AdvancedSchemaSourceProvider, ModuleInfoRegistry, SchemaContextProvider { - private ModuleInfoBackedContext(GeneratedClassLoadingStrategy loadingStrategy) { + private ModuleInfoBackedContext(final ClassLoadingStrategy loadingStrategy) { this.backingLoadingStrategy = loadingStrategy; } @@ -43,7 +46,7 @@ public class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy // return new ModuleInfoBackedContext(getTCCLClassLoadingStrategy()); } - public static ModuleInfoBackedContext create(GeneratedClassLoadingStrategy loadingStrategy) { + public static ModuleInfoBackedContext create(final ClassLoadingStrategy loadingStrategy) { return new ModuleInfoBackedContext(loadingStrategy); } @@ -52,10 +55,10 @@ public class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy // private final ConcurrentMap> packageNameToClassLoader = new ConcurrentHashMap<>(); private final ConcurrentMap sourceIdentifierToModuleInfo = new ConcurrentHashMap<>(); - private final GeneratedClassLoadingStrategy backingLoadingStrategy; + private final ClassLoadingStrategy backingLoadingStrategy; @Override - public Class loadClass(String fullyQualifiedName) throws ClassNotFoundException { + public Class loadClass(final String fullyQualifiedName) throws ClassNotFoundException { String modulePackageName = BindingReflections.getModelRootPackageName(fullyQualifiedName); WeakReference classLoaderRef = packageNameToClassLoader.get(modulePackageName); @@ -108,15 +111,15 @@ public class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy // return sourceStreams.build(); } - private boolean resolveModuleInfo(Class cls) { + private boolean resolveModuleInfo(final Class cls) { try { return resolveModuleInfo(BindingReflections.getModuleInfo(cls)); } catch (Exception e) { - throw new IllegalStateException(e); + throw new IllegalStateException(String.format("Failed to resolve module information for class %s", cls), e); } } - private boolean resolveModuleInfo(YangModuleInfo moduleInfo) { + private boolean resolveModuleInfo(final YangModuleInfo moduleInfo) { SourceIdentifier identifier = sourceIdentifierFrom(moduleInfo); YangModuleInfo previous = sourceIdentifierToModuleInfo.putIfAbsent(identifier, moduleInfo); @@ -134,17 +137,18 @@ public class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy // return true; } - private SourceIdentifier sourceIdentifierFrom(YangModuleInfo moduleInfo) { + private SourceIdentifier sourceIdentifierFrom(final YangModuleInfo moduleInfo) { return SourceIdentifier.create(moduleInfo.getName(), Optional.of(moduleInfo.getRevision())); } - public void addModuleInfos(Iterable moduleInfos) { + public void addModuleInfos(final Iterable moduleInfos) { for (YangModuleInfo yangModuleInfo : moduleInfos) { registerModuleInfo(yangModuleInfo); } } - public Registration registerModuleInfo(YangModuleInfo yangModuleInfo) { + @Override + public ObjectRegistration registerModuleInfo(final YangModuleInfo yangModuleInfo) { YangModuleInfoRegistration registration = new YangModuleInfoRegistration(yangModuleInfo, this); resolveModuleInfo(yangModuleInfo); @@ -153,7 +157,7 @@ public class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy // } @Override - public Optional getSchemaSource(SourceIdentifier sourceIdentifier) { + public Optional getSchemaSource(final SourceIdentifier sourceIdentifier) { YangModuleInfo info = sourceIdentifierToModuleInfo.get(sourceIdentifier); if (info == null) { return Optional.absent(); @@ -166,7 +170,7 @@ public class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy // } @Override - public Optional getSchemaSource(String moduleName, Optional revision) { + public Optional getSchemaSource(final String moduleName, final Optional revision) { return getSchemaSource(SourceIdentifier.create(moduleName, revision)); } @@ -174,7 +178,7 @@ public class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy // private final ModuleInfoBackedContext context; - public YangModuleInfoRegistration(YangModuleInfo instance, ModuleInfoBackedContext context) { + public YangModuleInfoRegistration(final YangModuleInfo instance, final ModuleInfoBackedContext context) { super(instance); this.context = context; } @@ -186,7 +190,12 @@ public class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy // } - private void remove(YangModuleInfoRegistration registration) { + private void remove(final YangModuleInfoRegistration registration) { // FIXME implement } + + @Override + public SchemaContext getSchemaContext() { + return tryToCreateSchemaContext().get(); + } }