X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fconfig%2Fconfig-manager-facade-xml%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Ffacade%2Fxml%2Fosgi%2FYangStoreSnapshot.java;h=452054518e54ed96b8026a3d20bf0015eeaa2faf;hb=f43b01b81319959b1907e3e04537f5169e7f33d8;hp=c819339afcb30dfec02727eeec77182eef6264ad;hpb=3fbfbc2881e4f18fd5972ec01c53c2a2d21aece1;p=controller.git diff --git a/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/osgi/YangStoreSnapshot.java b/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/osgi/YangStoreSnapshot.java index c819339afc..452054518e 100644 --- a/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/osgi/YangStoreSnapshot.java +++ b/opendaylight/config/config-manager-facade-xml/src/main/java/org/opendaylight/controller/config/facade/xml/osgi/YangStoreSnapshot.java @@ -1,5 +1,5 @@ /* - * 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, @@ -8,13 +8,12 @@ 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; @@ -25,45 +24,46 @@ import java.util.Map; 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.controller.config.yangjmxgenerator.TypeProviderWrapper; -import org.opendaylight.yangtools.sal.binding.generator.util.BindingRuntimeContext; -import org.opendaylight.yangtools.sal.binding.yang.types.TypeProviderImpl; +import org.opendaylight.mdsal.binding.generator.util.BindingRuntimeContext; +import org.opendaylight.mdsal.binding.yang.types.TypeProviderImpl; import org.opendaylight.yangtools.yang.common.QName; 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> moduleMXBeanEntryMap; - private final Map> qNamesToIdentitiesToModuleMXBeanEntries; + private final Map> namesToIdentitiesToModuleMXBeanEntries; MXBeans(final SchemaContext schemaContext) { LOG.trace("Resolved modules:{}", schemaContext.getModules()); // JMX generator - Map namespaceToPackageMapping = Maps.newHashMap(); - PackageTranslator packageTranslator = new PackageTranslator(namespaceToPackageMapping); - Map qNamesToSIEs = new HashMap<>(); - Map knownSEITracker = new HashMap<>(); + final Map namespaceToPackageMapping = Maps.newHashMap(); + final PackageTranslator packageTranslator = new PackageTranslator(namespaceToPackageMapping); + final Map qNamesToSIEs = new HashMap<>(); + final Map knownSEITracker = new HashMap<>(); // create SIE structure qNamesToSIEs - for (Module module : schemaContext.getModules()) { - String packageName = packageTranslator.getPackageName(module); - Map namesToSIEntries = ServiceInterfaceEntry + for (final Module module : schemaContext.getModules()) { + final String packageName = packageTranslator.getPackageName(module); + final Map namesToSIEntries = ServiceInterfaceEntry .create(module, packageName, knownSEITracker); - for (Entry sieEntry : namesToSIEntries.entrySet()) { + for (final Entry 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 " @@ -72,27 +72,29 @@ final class YangStoreSnapshot implements YangStoreContext, EnumResolver { } } - Map> moduleMXBeanEntryMap = Maps.newHashMap(); + final Map> moduleMXBeanEntries = Maps.newHashMap(); - Map> qNamesToIdentitiesToModuleMXBeanEntries = new HashMap<>(); + final Map> qNamesToIdentitiesToModuleMXBeanEntries = new HashMap<>(); - for (Module module : schemaContext.getModules()) { - String packageName = packageTranslator.getPackageName(module); - TypeProviderWrapper typeProviderWrapper = new TypeProviderWrapper( + for (final Module module : schemaContext.getModules()) { + final String packageName = packageTranslator.getPackageName(module); + final TypeProviderWrapper typeProviderWrapper = new TypeProviderWrapper( new TypeProviderImpl(schemaContext)); - QName qName = QName.create(module.getNamespace(), module.getRevision(), module.getName()); + final QName qName = QName.create(module.getNamespace(), module.getRevision(), module.getName()); - Map namesToMBEs = + final Map 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); } } @@ -114,14 +116,14 @@ final class YangStoreSnapshot implements YangStoreContext, EnumResolver { } private MXBeans getMXBeans() { - MXBeans mxBean = ref.get(); + MXBeans mxBean = this.ref.get(); if (mxBean == null) { synchronized (this) { - mxBean = ref.get(); + mxBean = this.ref.get(); if (mxBean == null) { - mxBean = new MXBeans(bindingContextProvider.getSchemaContext()); - ref = new SoftReference<>(mxBean); + mxBean = new MXBeans(this.bindingContextProvider.getSchemaContext()); + this.ref = new SoftReference<>(mxBean); } } } @@ -136,30 +138,28 @@ final class YangStoreSnapshot implements YangStoreContext, EnumResolver { @Override public Map> getQNamesToIdentitiesToModuleMXBeanEntries() { - return getMXBeans().qNamesToIdentitiesToModuleMXBeanEntries; + return getMXBeans().namesToIdentitiesToModuleMXBeanEntries; } @Override public Set getModules() { - final Set modules = Sets.newHashSet(bindingContextProvider.getSchemaContext().getModules()); - for (final Module module : bindingContextProvider.getSchemaContext().getModules()) { + final Set modules = Sets.newHashSet(this.bindingContextProvider.getSchemaContext().getModules()); + for (final Module module : this.bindingContextProvider.getSchemaContext().getModules()) { modules.addAll(module.getSubmodules()); } return modules; } @Override - public String getModuleSource(final org.opendaylight.yangtools.yang.model.api.ModuleIdentifier moduleIdentifier) { - final CheckedFuture source = sourceProvider.getSource( - SourceIdentifier.create(moduleIdentifier.getName(), Optional.fromNullable( - QName.formattedRevision(moduleIdentifier.getRevision())))); - + public String getModuleSource(final SourceIdentifier moduleIdentifier) { + final ListenableFuture 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); } @@ -180,26 +180,28 @@ final class YangStoreSnapshot implements YangStoreContext, EnumResolver { } final YangStoreSnapshot other = (YangStoreSnapshot) obj; - return Objects.equals(bindingContextProvider, other.bindingContextProvider); + return Objects.equals(this.bindingContextProvider, other.bindingContextProvider); } @Override public int hashCode() { - return Objects.hashCode(bindingContextProvider); + return Objects.hashCode(this.bindingContextProvider); } @Override public String fromYang(final String enumClass, final String enumYangValue) { - Preconditions.checkState(bindingContextProvider != null, "Binding context provider was not set yet"); - final BiMap enumMapping = bindingContextProvider.getEnumMapping(enumClass); + Preconditions.checkState(this.bindingContextProvider != null, "Binding context provider was not set yet"); + final BiMap 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 public String toYang(final String enumClass, final String enumJavaValue) { - Preconditions.checkState(bindingContextProvider != null, "Binding context provider was not set yet"); - final BiMap enumMapping = bindingContextProvider.getEnumMapping(enumClass); + Preconditions.checkState(this.bindingContextProvider != null, "Binding context provider was not set yet"); + final BiMap enumMapping = this.bindingContextProvider.getEnumMapping(enumClass); final String javaName = enumMapping.inverse().get(enumJavaValue); return Preconditions.checkNotNull(javaName, "Unable to map enum value %s for enum class %s with assumed enum mapping: %s", enumJavaValue, enumClass,