From: Robert Varga Date: Mon, 25 Oct 2021 17:48:27 +0000 (+0200) Subject: Use full QName in ParserFieldsParameter X-Git-Tag: v2.0.6~12 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=cf5430640c4faab8c523d54d948886a182cf937e;p=netconf.git Use full QName in ParserFieldsParameter We have two subclasses, both of which end up creating a QName and only use that. Create an intermediate private method to hold this dispatch. This will make transition to FieldsParam easier. JIRA: NETCONF-820 Change-Id: I036da1bad49ae5caa0333fac3ad1b868c8f42d94 Signed-off-by: Robert Varga --- diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/utils/parser/ParserFieldsParameter.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/utils/parser/ParserFieldsParameter.java index 20b966e032..8417229db5 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/utils/parser/ParserFieldsParameter.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/utils/parser/ParserFieldsParameter.java @@ -324,13 +324,17 @@ public abstract class ParserFieldsParameter { * Add parsed child of current node to result for current level. * * @param currentNode current node - * @param identifier parsed identifier of child node - * @param currentQNameModule current namespace and revision in {@link QNameModule} + * @param childQName parsed identifier of child node * @param level current nodes level * @return {@link DataSchemaContextNode} */ abstract @NonNull DataSchemaContextNode addChildToResult(@NonNull DataSchemaContextNode currentNode, - @NonNull String identifier, @NonNull QNameModule currentQNameModule, @NonNull Set level); + @NonNull QName childQName, @NonNull Set level); + + private @NonNull DataSchemaContextNode addChildToResult(final @NonNull DataSchemaContextNode currentNode, + final @NonNull String localName, final @NonNull QNameModule namespace, final @NonNull Set level) { + return addChildToResult(currentNode, QName.create(namespace, localName), level); + } /** * Fields parser that stores set of {@link QName}s in each level. Because of this fact, from the output @@ -345,10 +349,8 @@ public abstract class ParserFieldsParameter { */ private static final class QNameParser extends ParserFieldsParameter { @Override - DataSchemaContextNode addChildToResult(final DataSchemaContextNode currentNode, final String identifier, - final QNameModule currentQNameModule, final Set level) { - final QName childQName = QName.create(currentQNameModule, identifier); - + DataSchemaContextNode addChildToResult(final DataSchemaContextNode currentNode, final QName childQName, + final Set level) { // resolve parent node final DataSchemaContextNode parentNode = resolveMixinNode( currentNode, level, currentNode.getIdentifier().getNodeType()); @@ -363,7 +365,7 @@ public abstract class ParserFieldsParameter { parentNode.getChild(childQName), level, childQName); if (childNode == null) { throw new RestconfDocumentedException( - "Child " + identifier + " node missing in " + "Child " + childQName.getLocalName() + " node missing in " + currentNode.getIdentifier().getNodeType().getLocalName(), ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE); } @@ -408,9 +410,8 @@ public abstract class ParserFieldsParameter { */ private static final class PathParser extends ParserFieldsParameter { @Override - DataSchemaContextNode addChildToResult(final DataSchemaContextNode currentNode, final String identifier, - final QNameModule currentQNameModule, final Set level) { - final QName childQName = QName.create(currentQNameModule, identifier); + DataSchemaContextNode addChildToResult(final DataSchemaContextNode currentNode, final QName childQName, + final Set level) { final List collectedMixinNodes = new ArrayList<>(); DataSchemaContextNode actualContextNode = currentNode.getChild(childQName); @@ -429,7 +430,7 @@ public abstract class ParserFieldsParameter { } if (actualContextNode == null) { - throw new RestconfDocumentedException("Child " + identifier + " node missing in " + throw new RestconfDocumentedException("Child " + childQName.getLocalName() + " node missing in " + currentNode.getIdentifier().getNodeType().getLocalName(), ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE); }