From 62b5d6e245fc399524b12d58c034227e6ef8e0bb Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 7 Oct 2020 02:09:52 +0200 Subject: [PATCH] Promote Absolute.{last,first}NodeIdentifier SchemaNodeIdentifier.Descendant has to have at least one element just as Absolute. Promote utility methods to allow users pick them. Change-Id: I428213da7db699ea50a5e67b25feee21553c99f3 Signed-off-by: Robert Varga --- .../model/api/stmt/SchemaNodeIdentifier.java | 57 ++++++++++--------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/SchemaNodeIdentifier.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/SchemaNodeIdentifier.java index 0801729c51..dd4c0cb624 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/SchemaNodeIdentifier.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/SchemaNodeIdentifier.java @@ -86,22 +86,6 @@ public abstract class SchemaNodeIdentifier implements Immutable { return INTERNER.intern(this); } - /** - * Return the first node identifier. This method is equivalent to {@code getNodeIdentifiers().get(0)}, but is - * potentially more efficient. - * - * @return The first node identifier - */ - public abstract @NonNull QName firstNodeIdentifier(); - - /** - * Return the last node identifier. This method is equivalent to {@code getNodeIdentifiers().get(size - 1)}, but - * is potentially more efficient. - * - * @return The last node identifier - */ - public abstract @NonNull QName lastNodeIdentifier(); - @Override final SchemaPath implicitSchemaPathParent() { return SchemaPath.ROOT; @@ -208,16 +192,6 @@ public abstract class SchemaNodeIdentifier implements Immutable { return qnames; } - @Override - public @NonNull QName firstNodeIdentifier() { - return qnames.get(0); - } - - @Override - public @NonNull QName lastNodeIdentifier() { - return qnames.get(qnames.size() - 1); - } - @Override Object pathObject() { return qnames; @@ -236,6 +210,16 @@ public abstract class SchemaNodeIdentifier implements Immutable { return ImmutableList.of(qname); } + @Override + public QName firstNodeIdentifier() { + return qname; + } + + @Override + public QName lastNodeIdentifier() { + return qname; + } + @Override Object pathObject() { return qname; @@ -279,6 +263,27 @@ public abstract class SchemaNodeIdentifier implements Immutable { */ public abstract @NonNull List getNodeIdentifiers(); + /** + * Return the first node identifier. This method is equivalent to {@code getNodeIdentifiers().get(0)}, but is + * potentially more efficient. + * + * @return The first node identifier + */ + public @NonNull QName firstNodeIdentifier() { + return getNodeIdentifiers().get(0); + } + + /** + * Return the last node identifier. This method is equivalent to {@code getNodeIdentifiers().get(size - 1)}, but + * is potentially more efficient. + * + * @return The last node identifier + */ + public @NonNull QName lastNodeIdentifier() { + final List local = getNodeIdentifiers(); + return local.get(local.size() - 1); + } + /** * Create the {@link SchemaPath} equivalent of this identifier. * -- 2.36.6