/*
- * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
+ * Copyright (c) 2015, 2017 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
package org.opendaylight.controller.config.facade.xml.osgi;
-import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import com.google.common.collect.BiMap;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.google.common.io.ByteStreams;
-import com.google.common.util.concurrent.CheckedFuture;
+import com.google.common.util.concurrent.ListenableFuture;
import java.io.IOException;
import java.io.InputStream;
import java.lang.ref.SoftReference;
import java.util.Map.Entry;
import java.util.Objects;
import java.util.Set;
+import java.util.concurrent.ExecutionException;
import org.opendaylight.controller.config.yangjmxgenerator.ModuleMXBeanEntry;
import org.opendaylight.controller.config.yangjmxgenerator.PackageTranslator;
import org.opendaylight.controller.config.yangjmxgenerator.ServiceInterfaceEntry;
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.model.repo.api.SchemaSourceException;
+import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
import org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-final class YangStoreSnapshot implements YangStoreContext, EnumResolver {
+public final class YangStoreSnapshot implements YangStoreContext, EnumResolver {
private static final class MXBeans {
private final Map<String /* Namespace from yang file */,
Map<String /* Name of module entry from yang file */, ModuleMXBeanEntry>> moduleMXBeanEntryMap;
- private final Map<QName, Map<String, ModuleMXBeanEntry>> qNamesToIdentitiesToModuleMXBeanEntries;
+ private final Map<QName, Map<String, ModuleMXBeanEntry>> namesToIdentitiesToModuleMXBeanEntries;
MXBeans(final SchemaContext schemaContext) {
LOG.trace("Resolved modules:{}", schemaContext.getModules());
.create(module, packageName, knownSEITracker);
for (final Entry<QName, ServiceInterfaceEntry> sieEntry : namesToSIEntries.entrySet()) {
// merge value into qNamesToSIEs
- if (qNamesToSIEs.containsKey(sieEntry.getKey()) == false) {
+ if (!qNamesToSIEs.containsKey(sieEntry.getKey())) {
qNamesToSIEs.put(sieEntry.getKey(), sieEntry.getValue());
} else {
throw new IllegalStateException("Cannot add two SIE with same qname "
}
}
- final Map<String, Map<String, ModuleMXBeanEntry>> moduleMXBeanEntryMap = Maps.newHashMap();
+ final Map<String, Map<String, ModuleMXBeanEntry>> moduleMXBeanEntries = Maps.newHashMap();
- final Map<QName, Map<String /* identity local name */, ModuleMXBeanEntry>> qNamesToIdentitiesToModuleMXBeanEntries = new HashMap<>();
+ final Map<QName, Map<String /* identity local name */,
+ ModuleMXBeanEntry>> qNamesToIdentitiesToModuleMXBeanEntries = new HashMap<>();
for (final Module module : schemaContext.getModules()) {
final Map<String /* MB identity local name */, ModuleMXBeanEntry> namesToMBEs =
Collections.unmodifiableMap(ModuleMXBeanEntry.create(module, qNamesToSIEs, schemaContext,
typeProviderWrapper, packageName));
- moduleMXBeanEntryMap.put(module.getNamespace().toString(), namesToMBEs);
+ moduleMXBeanEntries.put(module.getNamespace().toString(), namesToMBEs);
qNamesToIdentitiesToModuleMXBeanEntries.put(qName, namesToMBEs);
}
- this.moduleMXBeanEntryMap = Collections.unmodifiableMap(moduleMXBeanEntryMap);
- this.qNamesToIdentitiesToModuleMXBeanEntries = Collections.unmodifiableMap(qNamesToIdentitiesToModuleMXBeanEntries);
+ this.moduleMXBeanEntryMap = Collections.unmodifiableMap(moduleMXBeanEntries);
+ this.namesToIdentitiesToModuleMXBeanEntries =
+ Collections.unmodifiableMap(qNamesToIdentitiesToModuleMXBeanEntries);
}
}
@Override
public Map<QName, Map<String, ModuleMXBeanEntry>> getQNamesToIdentitiesToModuleMXBeanEntries() {
- return getMXBeans().qNamesToIdentitiesToModuleMXBeanEntries;
+ return getMXBeans().namesToIdentitiesToModuleMXBeanEntries;
}
@Override
}
@Override
- public String getModuleSource(final org.opendaylight.yangtools.yang.model.api.ModuleIdentifier moduleIdentifier) {
- final CheckedFuture<? extends YangTextSchemaSource, SchemaSourceException> source = this.sourceProvider.getSource(
- SourceIdentifier.create(moduleIdentifier.getName(), Optional.fromNullable(
- QName.formattedRevision(moduleIdentifier.getRevision()))));
-
+ public String getModuleSource(final SourceIdentifier moduleIdentifier) {
+ final ListenableFuture<? extends YangTextSchemaSource> source = this.sourceProvider.getSource(
+ RevisionSourceIdentifier.create(moduleIdentifier.getName(), moduleIdentifier.getRevision()));
try {
- final YangTextSchemaSource yangTextSchemaSource = source.checkedGet();
- try(InputStream inStream = yangTextSchemaSource.openStream()) {
+ final YangTextSchemaSource yangTextSchemaSource = source.get();
+ try (InputStream inStream = yangTextSchemaSource.openStream()) {
return new String(ByteStreams.toByteArray(inStream), StandardCharsets.UTF_8);
}
- } catch (SchemaSourceException | IOException e) {
+ } catch (ExecutionException | InterruptedException | IOException e) {
LOG.warn("Unable to provide source for {}", moduleIdentifier, e);
throw new IllegalArgumentException("Unable to provide source for " + moduleIdentifier, e);
}
Preconditions.checkState(this.bindingContextProvider != null, "Binding context provider was not set yet");
final BiMap<String, String> enumMapping = this.bindingContextProvider.getEnumMapping(enumClass);
final String javaName = enumMapping.get(enumYangValue);
- return Preconditions.checkNotNull(javaName, "Unable to resolve enum value %s for enum class %s with assumed enum mapping: %s", enumYangValue, enumClass, enumMapping);
+ return Preconditions.checkNotNull(javaName,
+ "Unable to resolve enum value %s for enum class %s with assumed enum mapping: %s", enumYangValue,
+ enumClass, enumMapping);
}
@Override