- DataSchemaNode current = Preconditions.checkNotNull(context);
- for (QName qname : path.getPathFromRoot()) {
- final DataSchemaNode child;
- if(current instanceof DataNodeContainer) {
- child = ((DataNodeContainer) current).getDataChildByName(qname);
- } else if (current instanceof ChoiceNode) {
- child = ((ChoiceNode) current).getCaseNodeByName(qname);
- } else {
- throw new IllegalArgumentException(String.format("Schema node %s does not allow children.",current));
- }
- current = child;
- }
- Preconditions.checkArgument(current instanceof DataNodeContainer,"Schema path must point to container or list. Supplied path %s pointed to: %s",path,current);
- this.root = (DataNodeContainer) current;
+ SchemaNode current = SchemaUtils.findParentSchemaOnPath(context, path);
+ Preconditions.checkArgument(current instanceof DataNodeContainer,"Schema path must point to container or list or an rpc input/output. Supplied path %s pointed to: %s",path,current);
+ root = (DataNodeContainer) current;