[YANGTOOLS-1411] JSON codec fails to decode instance-identifier to a choice/case/choice item Created: 23/Mar/22  Updated: 24/Mar/22  Resolved: 24/Mar/22

Status: Resolved
Project: yangtools
Component/s: data-util
Affects Version/s: 6.0.0, 7.0.0, 8.0.0, 6.0.12, 7.0.14
Fix Version/s: 7.0.15, 8.0.2

Type: Bug Priority: Medium
Reporter: Robert Varga Assignee: Robert Varga
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

With the following model:

module foo {
  namespace foo;
  prefix foo;

  choice foo {
    case bar {
      choice baz {
        leaf xyzzy {
          type string;
        }
      }
    }
  }
}

Attempting to parse "/foo:xyzzy" as an instance-identifier leaf in JSON results in a NullPointerException:

java.lang.NullPointerException
	at org.opendaylight.yangtools.yang.data.util.XpathStringParsingPathArgumentBuilder.nextContextNode(XpathStringParsingPathArgumentBuilder.java:114)
	at org.opendaylight.yangtools.yang.data.util.XpathStringParsingPathArgumentBuilder.computeIdentifier(XpathStringParsingPathArgumentBuilder.java:180)
	at org.opendaylight.yangtools.yang.data.util.XpathStringParsingPathArgumentBuilder.computeNextArgument(XpathStringParsingPathArgumentBuilder.java:104)
	at org.opendaylight.yangtools.yang.data.util.XpathStringParsingPathArgumentBuilder.build(XpathStringParsingPathArgumentBuilder.java:91)
	at org.opendaylight.yangtools.yang.data.util.AbstractStringInstanceIdentifierCodec.deserializeImpl(AbstractStringInstanceIdentifierCodec.java:102)
	at org.opendaylight.yangtools.yang.data.util.AbstractStringInstanceIdentifierCodec.deserializeImpl(AbstractStringInstanceIdentifierCodec.java:1)
	at org.opendaylight.yangtools.concepts.AbstractIllegalArgumentCodec.deserialize(AbstractIllegalArgumentCodec.java:30)
	at org.opendaylight.yangtools.yang.data.codec.gson.JSONInstanceIdentifierCodec.parseValue(JSONInstanceIdentifierCodec.java:71)
	at org.opendaylight.yangtools.yang.data.codec.gson.JSONInstanceIdentifierCodec.parseValue(JSONInstanceIdentifierCodec.java:1)
	at org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream.translateValueByType(JsonParserStream.java:372)
	at org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream.setValue(JsonParserStream.java:366)
	at org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream.read(JsonParserStream.java:270)
	at org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream.read(JsonParserStream.java:336)
	at org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream.read(JsonParserStream.java:286)
	at org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream.read(JsonParserStream.java:336)
	at org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream.read(JsonParserStream.java:336)
	at org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream.parse(JsonParserStream.java:193)

Generated at Wed Feb 07 20:56:05 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.