X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-model-util%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fmodel%2Futil%2FBaseTypes.java;h=18e58d41a5d14a8d52c2f4b993c1850feaeb1807;hb=9c98b9b0ea9d0f6ec26e64e8683cb3f1648d10d9;hp=dfc5dfb5c4f0ec385901000ea76b23f1c0f55cc1;hpb=706b37ddd2d46bd82a0b2c114ca4389dc7679568;p=yangtools.git diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/BaseTypes.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/BaseTypes.java index dfc5dfb5c4..18e58d41a5 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/BaseTypes.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/BaseTypes.java @@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.model.util; import com.google.common.base.Optional; import com.google.common.base.Preconditions; +import com.google.common.base.Strings; import com.google.common.collect.ImmutableSet; import java.net.URI; import java.util.Set; @@ -58,26 +59,26 @@ public final class BaseTypes { public static final QName UINT64_QNAME = constructQName("uint64"); public static final QName UNION_QNAME = constructQName("union"); - private static final Set BUILT_IN_TYPES = ImmutableSet.builder() - .add(BINARY_QNAME.getLocalName()) - .add(BITS_QNAME.getLocalName()) - .add(BOOLEAN_QNAME.getLocalName()) - .add(DECIMAL64_QNAME.getLocalName()) - .add(EMPTY_QNAME.getLocalName()) - .add(ENUMERATION_QNAME.getLocalName()) - .add(IDENTITYREF_QNAME.getLocalName()) - .add(INSTANCE_IDENTIFIER_QNAME.getLocalName()) - .add(INT8_QNAME.getLocalName()) - .add(INT16_QNAME.getLocalName()) - .add(INT32_QNAME.getLocalName()) - .add(INT64_QNAME.getLocalName()) - .add(LEAFREF_QNAME.getLocalName()) - .add(STRING_QNAME.getLocalName()) - .add(UINT8_QNAME.getLocalName()) - .add(UINT16_QNAME.getLocalName()) - .add(UINT32_QNAME.getLocalName()) - .add(UINT64_QNAME.getLocalName()) - .add(UNION_QNAME.getLocalName()) + private static final Set BUILT_IN_TYPES = ImmutableSet.builder() + .add(BINARY_QNAME) + .add(BITS_QNAME) + .add(BOOLEAN_QNAME) + .add(DECIMAL64_QNAME) + .add(EMPTY_QNAME) + .add(ENUMERATION_QNAME) + .add(IDENTITYREF_QNAME) + .add(INSTANCE_IDENTIFIER_QNAME) + .add(INT8_QNAME) + .add(INT16_QNAME) + .add(INT32_QNAME) + .add(INT64_QNAME) + .add(LEAFREF_QNAME) + .add(STRING_QNAME) + .add(UINT8_QNAME) + .add(UINT16_QNAME) + .add(UINT32_QNAME) + .add(UINT64_QNAME) + .add(UNION_QNAME) .build(); /** @@ -89,7 +90,7 @@ public final class BaseTypes { * @return built-in base yang type QName. */ public static QName constructQName(final String typeName) { - return QName.cachedReference(QName.create(YangConstants.RFC6020_YANG_MODULE, typeName)); + return QName.create(YangConstants.RFC6020_YANG_MODULE, typeName).intern(); } /** @@ -102,7 +103,26 @@ public final class BaseTypes { * @return true if type is built-in YANG Types. */ public static boolean isYangBuildInType(final String type) { - return BUILT_IN_TYPES.contains(type); + if (Strings.isNullOrEmpty(type)) { + return false; + } + return BUILT_IN_TYPES.contains(QName.create(YangConstants.RFC6020_YANG_MODULE, type)); + } + + /** + * Returns true if supplied type is representation of built-in YANG type as + * per RFC 6020. + * + * See package documentation for description of base types. + * + * @param type + * @return true if type is built-in YANG Types. + */ + public static boolean isYangBuildInType(final TypeDefinition type) { + if(type == null) { + return false; + } + return BUILT_IN_TYPES.contains(type.getQName()); } /**