Allow rebinding the prefix of an UnresolvedQName 69/98169/1
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 27 Oct 2021 21:12:14 +0000 (23:12 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 27 Oct 2021 21:13:45 +0000 (23:13 +0200)
There are callers who are dealing with prefix being optional, possibly
added (or changed) in a later context. Add the ability to do that
without re-validating the local name.

JIRA: YANGTOOLS-1359
Change-Id: I099589d8a579f854dcc0ae1740027e7af24470bf
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
common/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/UnresolvedQName.java

index 58ea59f8b7c96182c81f9c144eb1ad26f46f0108..8407d416e916147fb4531994ed5429c56642c709 100644 (file)
@@ -78,6 +78,11 @@ public abstract class UnresolvedQName extends AbstractQName {
             return INTERNER.intern(template);
         }
 
+        @Override
+        public Qualified withPrefix(final String newPrefix) {
+            return prefix.equals(newPrefix) ? this : new Qualified(newPrefix, getLocalName());
+        }
+
         @Override
         @SuppressWarnings("checkstyle:parameterName")
         public int compareTo(final Qualified o) {
@@ -151,6 +156,11 @@ public abstract class UnresolvedQName extends AbstractQName {
             return null;
         }
 
+        @Override
+        public Qualified withPrefix(final String newPrefix) {
+            return new Qualified(newPrefix, getLocalName());
+        }
+
         @Override
         @SuppressWarnings("checkstyle:parameterName")
         public int compareTo(final Unqualified o) {
@@ -235,4 +245,12 @@ public abstract class UnresolvedQName extends AbstractQName {
      * @return This QName's prefix
      */
     public abstract @Nullable String getPrefix();
+
+    /**
+     * Return a {@link Qualified} object bound to specified {@code prefix}.
+     *
+     * @return a {@link Qualified} object bound to specified {@code prefix}
+     * @throws NullPointerException if {@code newPrefix} is null
+     */
+    public abstract Qualified withPrefix(String newPrefix);
 }