X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-rest-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Frestconf%2Fimpl%2FControllerContext.java;h=ad2409bfcf13be60407f853cdce454abf49c1d09;hb=097cf9e9d96e6ad94ab91728ab84c49b0eba5f61;hp=6cc62e859c9bade70e4125d2fea72a8addc6f875;hpb=b5966909c19a8b9e5639df8f1eeb779ac66f8a6c;p=controller.git diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/ControllerContext.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/ControllerContext.java index 6cc62e859c..ad2409bfcf 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/ControllerContext.java +++ b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/ControllerContext.java @@ -281,12 +281,12 @@ public class ControllerContext implements SchemaContextListener { if (!(element instanceof AugmentationIdentifier)) { final QName _nodeType = element.getNodeType(); final DataSchemaNode potentialNode = ControllerContext.childByQName(node, _nodeType); - if (!(element instanceof NodeIdentifier && potentialNode instanceof ListSchemaNode)) { - if (!ControllerContext.isListOrContainer(potentialNode)) { - return null; + if (!(element instanceof NodeIdentifier && potentialNode instanceof ListSchemaNode) && + !(potentialNode instanceof ChoiceSchemaNode)) { + builder.append(convertToRestconfIdentifier(element, potentialNode, mount)); + if (potentialNode instanceof DataNodeContainer) { + node = (DataNodeContainer) potentialNode; } - builder.append(convertToRestconfIdentifier(element, (DataNodeContainer) potentialNode, mount)); - node = (DataNodeContainer) potentialNode; } } } @@ -536,7 +536,7 @@ public class ControllerContext implements SchemaContextListener { if (!mountOpt.isPresent()) { LOG.debug("Instance identifier to missing mount point: {}", partialPath); throw new RestconfDocumentedException("Mount point does not exist.", ErrorType.PROTOCOL, - ErrorTag.UNKNOWN_ELEMENT); + ErrorTag.DATA_MISSING); } final DOMMountPoint mount = mountOpt.get(); @@ -867,8 +867,8 @@ public class ControllerContext implements SchemaContextListener { return null; } - private CharSequence convertToRestconfIdentifier(final PathArgument argument, final DataNodeContainer node, final DOMMountPoint mount) { - if (argument instanceof NodeIdentifier && node instanceof ContainerSchemaNode) { + private CharSequence convertToRestconfIdentifier(final PathArgument argument, final DataSchemaNode node, final DOMMountPoint mount) { + if (argument instanceof NodeIdentifier) { return convertToRestconfIdentifier((NodeIdentifier) argument, mount); } else if (argument instanceof NodeIdentifierWithPredicates && node instanceof ListSchemaNode) { return convertToRestconfIdentifierWithPredicates((NodeIdentifierWithPredicates) argument, (ListSchemaNode) node, mount);