From 27b13859967885ddecb002aa6f92db59266f14c3 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 18 Jul 2019 11:08:30 +0200 Subject: [PATCH] Reorganize ModuleInfoBackedContext This is just a shuffle of methods, cleaning up the structure of the file, making things more discoverable. JIRA: MDSAL-461 Change-Id: Ibf80248cd91880cc0169e1d9a86eb6a95b2f7860 Signed-off-by: Robert Varga --- .../impl/ModuleInfoBackedContext.java | 99 +++++++++---------- 1 file changed, 47 insertions(+), 52 deletions(-) diff --git a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/ModuleInfoBackedContext.java b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/ModuleInfoBackedContext.java index d12dcfe5bf..333912f987 100644 --- a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/ModuleInfoBackedContext.java +++ b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/ModuleInfoBackedContext.java @@ -41,6 +41,7 @@ import org.slf4j.LoggerFactory; public final class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy implements ModuleInfoRegistry, SchemaContextProvider, SchemaSourceProvider { + private static final Logger LOG = LoggerFactory.getLogger(ModuleInfoBackedContext.class); private static final LoadingCache, ModuleInfoBackedContext>> CONTEXT_CACHES = CacheBuilder.newBuilder() @@ -62,6 +63,11 @@ public final class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy }); private final YangTextSchemaContextResolver ctxResolver = YangTextSchemaContextResolver.create("binding-context"); + private final ConcurrentMap> packageNameToClassLoader = + new ConcurrentHashMap<>(); + private final ConcurrentMap sourceIdentifierToModuleInfo = + new ConcurrentHashMap<>(); + private final ClassLoadingStrategy backingLoadingStrategy; private ModuleInfoBackedContext(final ClassLoadingStrategy loadingStrategy) { this.backingLoadingStrategy = loadingStrategy; @@ -81,14 +87,15 @@ public final class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy return new ModuleInfoBackedContext(loadingStrategy); } - private static final Logger LOG = LoggerFactory.getLogger(ModuleInfoBackedContext.class); - - private final ConcurrentMap> packageNameToClassLoader = - new ConcurrentHashMap<>(); - private final ConcurrentMap sourceIdentifierToModuleInfo = - new ConcurrentHashMap<>(); + @Override + public SchemaContext getSchemaContext() { + final Optional contextOptional = tryToCreateSchemaContext(); + if (contextOptional.isPresent()) { + return contextOptional.get(); - private final ClassLoadingStrategy backingLoadingStrategy; + } + throw new IllegalStateException("Unable to recreate SchemaContext, error while parsing"); + } @Override public Class loadClass(final String fullyQualifiedName) throws ClassNotFoundException { @@ -113,6 +120,35 @@ public final class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy return cls; } + @Override + public ObjectRegistration registerModuleInfo(final YangModuleInfo yangModuleInfo) { + YangModuleInfoRegistration registration = new YangModuleInfoRegistration(yangModuleInfo, this); + resolveModuleInfo(yangModuleInfo); + return registration; + } + + @Override + public ListenableFuture getSource( + final SourceIdentifier sourceIdentifier) { + final YangModuleInfo yangModuleInfo = sourceIdentifierToModuleInfo.get(sourceIdentifier); + + if (yangModuleInfo == null) { + LOG.debug("Unknown schema source requested: {}, available sources: {}", sourceIdentifier, + sourceIdentifierToModuleInfo.keySet()); + return Futures.immediateFailedFuture(new SchemaSourceException( + "Unknown schema source: " + sourceIdentifier)); + } + + return Futures.immediateFuture(YangTextSchemaSource.delegateForByteSource(sourceIdentifier, + yangModuleInfo.getYangTextByteSource())); + } + + public void addModuleInfos(final Iterable moduleInfos) { + for (YangModuleInfo yangModuleInfo : moduleInfos) { + registerModuleInfo(yangModuleInfo); + } + } + // TODO finish schema parsing and expose as SchemaService // Unite with current SchemaService // Implement remove ModuleInfo to update SchemaContext @@ -153,6 +189,10 @@ public final class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy return true; } + private void remove(final YangModuleInfoRegistration registration) { + // FIXME implement + } + private static YangTextSchemaSource toYangTextSource(final SourceIdentifier identifier, final YangModuleInfo moduleInfo) { return YangTextSchemaSource.delegateForByteSource(identifier, moduleInfo.getYangTextByteSource()); @@ -163,37 +203,7 @@ public final class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy return RevisionSourceIdentifier.create(name.getLocalName(), name.getRevision()); } - public void addModuleInfos(final Iterable moduleInfos) { - for (YangModuleInfo yangModuleInfo : moduleInfos) { - registerModuleInfo(yangModuleInfo); - } - } - - @Override - public ObjectRegistration registerModuleInfo(final YangModuleInfo yangModuleInfo) { - YangModuleInfoRegistration registration = new YangModuleInfoRegistration(yangModuleInfo, this); - resolveModuleInfo(yangModuleInfo); - return registration; - } - - @Override - public ListenableFuture getSource( - final SourceIdentifier sourceIdentifier) { - final YangModuleInfo yangModuleInfo = sourceIdentifierToModuleInfo.get(sourceIdentifier); - - if (yangModuleInfo == null) { - LOG.debug("Unknown schema source requested: {}, available sources: {}", sourceIdentifier, - sourceIdentifierToModuleInfo.keySet()); - return Futures.immediateFailedFuture(new SchemaSourceException( - "Unknown schema source: " + sourceIdentifier)); - } - - return Futures.immediateFuture(YangTextSchemaSource.delegateForByteSource(sourceIdentifier, - yangModuleInfo.getYangTextByteSource())); - } - private static class YangModuleInfoRegistration extends AbstractObjectRegistration { - private final ModuleInfoBackedContext context; YangModuleInfoRegistration(final YangModuleInfo instance, final ModuleInfoBackedContext context) { @@ -205,20 +215,5 @@ public final class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy protected void removeRegistration() { context.remove(this); } - - } - - private void remove(final YangModuleInfoRegistration registration) { - // FIXME implement - } - - @Override - public SchemaContext getSchemaContext() { - final Optional contextOptional = tryToCreateSchemaContext(); - if (contextOptional.isPresent()) { - return contextOptional.get(); - - } - throw new IllegalStateException("Unable to recreate SchemaContext, error while parsing"); } } -- 2.36.6