From 86ed935221b79680e8aca7a5e561fed6d89ed084 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 5 Mar 2018 15:11:45 +0100 Subject: [PATCH] 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 --- .../util/AbstractModuleStringIdentityrefCodec.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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); } } -- 2.36.6