From 07a2ef840a7c4de06d13cb558a2250c072bb4c77 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 31 Dec 2019 18:19:02 +0100 Subject: [PATCH] Add AbstractQName.bindTo(QNameModule) Generalize the implementation, as all subclasses provide a variant of this method. Change-Id: I4a5f5654f1687a76a3c5f5a2976edae3a90e3245 Signed-off-by: Robert Varga --- .../rfc8528/parser/MountPointStatementSupport.java | 2 +- .../yangtools/yang/common/AbstractQName.java | 11 +++++++++++ .../org/opendaylight/yangtools/yang/common/QName.java | 9 ++++++++- .../yangtools/yang/common/QualifiedQName.java | 4 ---- .../yangtools/yang/common/UnqualifiedQName.java | 4 ---- .../yangtools/yang/common/YangConstants.java | 11 ++++++----- .../parser/rfc7950/stmt/key/KeyStatementSupport.java | 2 +- .../stmt/type/AbstractTypeStatementSupport.java | 2 +- .../spi/meta/AbstractQNameStatementSupport.java | 2 +- 9 files changed, 29 insertions(+), 18 deletions(-) diff --git a/yang/rfc8528-parser-support/src/main/java/org/opendaylight/yangtools/rfc8528/parser/MountPointStatementSupport.java b/yang/rfc8528-parser-support/src/main/java/org/opendaylight/yangtools/rfc8528/parser/MountPointStatementSupport.java index 266208b6af..693c861d01 100644 --- a/yang/rfc8528-parser-support/src/main/java/org/opendaylight/yangtools/rfc8528/parser/MountPointStatementSupport.java +++ b/yang/rfc8528-parser-support/src/main/java/org/opendaylight/yangtools/rfc8528/parser/MountPointStatementSupport.java @@ -99,7 +99,7 @@ public final class MountPointStatementSupport @Override public QName adaptArgumentValue(final StmtContext ctx, final QNameModule targetModule) { - return ctx.coerceStatementArgument().withModule(targetModule).intern(); + return ctx.coerceStatementArgument().bindTo(targetModule).intern(); } @Override diff --git a/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/AbstractQName.java b/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/AbstractQName.java index da1521b76d..6709ad94a7 100644 --- a/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/AbstractQName.java +++ b/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/AbstractQName.java @@ -61,6 +61,17 @@ public abstract class AbstractQName implements Identifier, WritableObject { @Override public abstract String toString(); + /** + * Returns a QName with the specified namespace and the same local name as this one. + * + * @param namespace New namespace to use + * @return a QName with specified QNameModule and same local name as this one + * @throws NullPointerException if namespace is null + */ + public QName bindTo(final QNameModule namespace) { + return new QName(namespace, getLocalName()); + } + abstract Object writeReplace(); static final String checkLocalName(final @Nullable String localName) { diff --git a/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/QName.java b/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/QName.java index feea52586a..46457ec10a 100644 --- a/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/QName.java +++ b/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/QName.java @@ -298,14 +298,21 @@ public final class QName extends AbstractQName implements Comparable { return sb.append(getLocalName()).toString(); } + @Override + public @NonNull QName bindTo(final QNameModule namespace) { + return module.equals(namespace) ? this : super.bindTo(namespace); + } + /** * Returns a QName with the specified QNameModule and the same localname as this one. * * @param newModule New QNameModule to use * @return a QName with specified QNameModule and same local name as this one + * @deprecated Use {@link #bindTo(QNameModule)} instead. */ + @Deprecated(forRemoval = true) public @NonNull QName withModule(final QNameModule newModule) { - return new QName(newModule, getLocalName()); + return bindTo(newModule); } /** diff --git a/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/QualifiedQName.java b/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/QualifiedQName.java index f6dce7058e..72be15e045 100644 --- a/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/QualifiedQName.java +++ b/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/QualifiedQName.java @@ -59,10 +59,6 @@ public final class QualifiedQName extends AbstractQName implements Comparable