X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fconfig%2Fyang-store-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyang%2Fstore%2Fimpl%2FMbeParser.java;fp=opendaylight%2Fconfig%2Fyang-store-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyang%2Fstore%2Fimpl%2FMbeParser.java;h=dd07c5a84fa81976fe5dd97937d0a2c2afedaf0b;hp=d54996dbb77fcd38799e9a705bcc26a77a28b763;hb=11d70e30dbd8a075b3f846b68ee9409c670a7965;hpb=12e8be867090f66dc7d205efe9156210dc57214d diff --git a/opendaylight/config/yang-store-impl/src/main/java/org/opendaylight/controller/config/yang/store/impl/MbeParser.java b/opendaylight/config/yang-store-impl/src/main/java/org/opendaylight/controller/config/yang/store/impl/MbeParser.java index d54996dbb7..dd07c5a84f 100644 --- a/opendaylight/config/yang-store-impl/src/main/java/org/opendaylight/controller/config/yang/store/impl/MbeParser.java +++ b/opendaylight/config/yang-store-impl/src/main/java/org/opendaylight/controller/config/yang/store/impl/MbeParser.java @@ -21,25 +21,27 @@ import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.IOException; import java.io.InputStream; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; public class MbeParser { + private static final Logger logger = LoggerFactory.getLogger(MbeParser.class); - public YangStoreSnapshotImpl parseYangFiles( - Collection allInput) - throws YangStoreException { + public YangStoreSnapshotImpl parseYangFiles(Collection allInput) throws YangStoreException { YangParserImpl parser = YangParserWrapper.getYangParserInstance(); Map allYangModules = YangParserWrapper.parseYangFiles(parser, allInput); SchemaContext resolveSchemaContext = YangParserWrapper.getSchemaContextFromModules(parser, allYangModules); - + logger.trace("Resolved modules:{}", resolveSchemaContext.getModules()); // JMX generator Map namespaceToPackageMapping = Maps.newHashMap(); @@ -69,35 +71,47 @@ public class MbeParser { } } - Map> retVal = Maps.newHashMap(); - Map> modulesMap = new HashMap<>(); + Map> moduleMXBeanEntryMap = Maps.newHashMap(); + Map modulesToSources = new HashMap<>(); + Map> + qNamesToIdentitiesToModuleMXBeanEntries = new HashMap<>(); + for (Entry moduleEntry : allYangModules.entrySet()) { - String packageName = packageTranslator.getPackageName(moduleEntry - .getValue()); + Module module = moduleEntry.getValue(); + String packageName = packageTranslator.getPackageName(module); TypeProviderWrapper typeProviderWrapper = new TypeProviderWrapper( new TypeProviderImpl(resolveSchemaContext)); - String yangAsString; - try { - moduleEntry.getKey().reset(); - yangAsString = IOUtils.toString(moduleEntry.getKey()); - } catch (IOException e) { - throw new IllegalStateException(e); - } - modulesMap.put(moduleEntry.getValue().getName(), - Maps.immutableEntry(moduleEntry.getValue(), yangAsString)); - Map namesToMBEs = ModuleMXBeanEntry - .create(moduleEntry.getValue(), qNamesToSIEs, resolveSchemaContext, typeProviderWrapper, - packageName); - retVal.put(moduleEntry.getValue().getNamespace().toString(), - namesToMBEs); + String yangAsString = reReadInputStream(moduleEntry); + + QName qName = new QName(module.getNamespace(), module.getRevision(), module.getName()); + + Map namesToMBEs = + Collections.unmodifiableMap(ModuleMXBeanEntry.create(module, qNamesToSIEs, resolveSchemaContext, + typeProviderWrapper, packageName)); + moduleMXBeanEntryMap.put(module.getNamespace().toString(), namesToMBEs); + modulesToSources.put(module, yangAsString); + qNamesToIdentitiesToModuleMXBeanEntries.put(qName, namesToMBEs); } - return new YangStoreSnapshotImpl(retVal, modulesMap); + return new YangStoreSnapshotImpl(moduleMXBeanEntryMap, modulesToSources, qNamesToIdentitiesToModuleMXBeanEntries); + } + + private String reReadInputStream(Entry moduleEntry) { + String yangAsString; + try { + moduleEntry.getKey().reset(); + yangAsString = IOUtils.toString(moduleEntry.getKey()); + } catch (IOException e) { + throw new IllegalStateException("Cannot reread " + moduleEntry.getValue(), e); + } + return yangAsString; } - public Map parseYangFilesToString( - Collection allYangs) { + @Deprecated + public Map parseYangFilesToString(Collection allYangs) { + + logger.error("Using deprecated method that will be removed soon", new UnsupportedOperationException("Deprecated")); YangParserImpl parser = YangParserWrapper.getYangParserInstance(); Map allYangModules = parser