X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fconfig-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fconfignetconfconnector%2Fosgi%2FYangStoreSnapshot.java;h=c798da7f7629a4ac4783900a65c56895cc925543;hp=283ec424badac4a18703044cd95175f5b0aeef88;hb=cd50f92c60580b546a696aab7c3ff4fbf3f9a5f0;hpb=be1359a7418043c3961fd8ffa91eacd224bed952 diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/osgi/YangStoreSnapshot.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/osgi/YangStoreSnapshot.java index 283ec424ba..c798da7f76 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/osgi/YangStoreSnapshot.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/osgi/YangStoreSnapshot.java @@ -9,7 +9,9 @@ package org.opendaylight.controller.netconf.confignetconfconnector.osgi; import com.google.common.base.Optional; +import com.google.common.base.Preconditions; import com.google.common.base.Predicate; +import com.google.common.collect.BiMap; import com.google.common.collect.Iterables; import com.google.common.collect.Maps; import com.google.common.collect.Sets; @@ -23,6 +25,7 @@ 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.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode; @@ -32,19 +35,21 @@ import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleIdentifierImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -final class YangStoreSnapshot implements YangStoreContext { +final class YangStoreSnapshot implements YangStoreContext, EnumResolver { private static final Logger LOG = LoggerFactory.getLogger(YangStoreSnapshot.class); private final Map> moduleMXBeanEntryMap; + Map> moduleMXBeanEntryMap; private final Map> qNamesToIdentitiesToModuleMXBeanEntries; private final SchemaContext schemaContext; + private final BindingRuntimeContext bindingContextProvider; - public YangStoreSnapshot(final SchemaContext resolveSchemaContext) { + public YangStoreSnapshot(final SchemaContext resolveSchemaContext, final BindingRuntimeContext bindingContextProvider) { + this.bindingContextProvider = bindingContextProvider; LOG.trace("Resolved modules:{}", resolveSchemaContext.getModules()); this.schemaContext = resolveSchemaContext; // JMX generator @@ -132,6 +137,11 @@ final class YangStoreSnapshot implements YangStoreContext { } } + @Override + public EnumResolver getEnumResolver() { + return this; + } + @Override public boolean equals(final Object o) { if (this == o) return true; @@ -149,4 +159,21 @@ final class YangStoreSnapshot implements YangStoreContext { public int hashCode() { return schemaContext != null ? schemaContext.hashCode() : 0; } + + @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); + 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); + } + + @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); + final String javaName = enumMapping.inverse().get(enumJavaValue); + return Preconditions.checkNotNull(javaName, "Unable to map enumcd .." + + "cd value %s for enum class %s with assumed enum mapping: %s", enumJavaValue, enumClass, enumMapping.inverse()); + } }