From: Robert Varga Date: Mon, 5 Mar 2018 14:11:45 +0000 (+0100) Subject: Validate parsed QName to identity X-Git-Tag: v2.0.2~6 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=86ed935221b79680e8aca7a5e561fed6d89ed084;hp=e7e0e48e6a79b08bb2c976ee3fd69582d84a7e4c;p=yangtools.git Validate parsed QName to identity We need to validate if parsed QName refers to an existing identity, this fixes up unused AbstractModuleStringIdentityrefCodec to check Module references. Change-Id: Iebbb43681e9b384c43bd81607d169294373bdd72 JIRA: YANGTOOLS-846 Signed-off-by: Robert Varga --- diff --git a/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractModuleStringIdentityrefCodec.java b/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractModuleStringIdentityrefCodec.java index 29c0d173ed..d2c373eea1 100644 --- a/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractModuleStringIdentityrefCodec.java +++ b/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractModuleStringIdentityrefCodec.java @@ -12,6 +12,7 @@ import static com.google.common.base.Preconditions.checkArgument; import com.google.common.annotations.Beta; import javax.annotation.Nonnull; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; @Beta @@ -28,6 +29,14 @@ public abstract class AbstractModuleStringIdentityrefCodec extends AbstractStrin protected final QName createQName(@Nonnull final String prefix, @Nonnull final String localName) { final Module module = moduleForPrefix(prefix); checkArgument(module != null, "Failed to lookup prefix %s", prefix); - return QName.create(module.getQNameModule(), localName); + + final QName qname = QName.create(module.getQNameModule(), localName); + for (IdentitySchemaNode identity : module.getIdentities()) { + if (qname.equals(identity.getQName())) { + return identity.getQName(); + } + } + + throw new IllegalArgumentException("Failed to find identity matching " + qname); } }