Move OrderedByStatement.Ordering 41/93841/4
authorRobert Varga <robert.varga@pantheon.tech>
Sun, 15 Nov 2020 23:00:21 +0000 (00:00 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Sun, 15 Nov 2020 23:20:09 +0000 (00:20 +0100)
This closed enumeration is a core YANG construct, similar to
Revision, QName, types, etc. which we host in yang-common.

This patch moves it there, adjusting all references.

JIRA: YANGTOOLS-1173
Change-Id: I25e3341604c939a9ab8635a15edf903c0359d818
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/Ordering.java [new file with mode: 0644]
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/OrderedByEffectiveStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/OrderedByStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/AbstractLeafListStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/AbstractListStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/ordered_by/AbstractOrderedByStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/ordered_by/EmptyOrderedByEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/ordered_by/EmptyOrderedByStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/ordered_by/OrderedByStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/ordered_by/RegularOrderedByEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/ordered_by/RegularOrderedByStatement.java

diff --git a/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/Ordering.java b/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/Ordering.java
new file mode 100644 (file)
index 0000000..36f4496
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.common;
+
+import org.eclipse.jdt.annotation.NonNullByDefault;
+
+/**
+ * Item ordering, as specified by <a href="https://tools.ietf.org/html/rfc7950#section-7.7.1">RFC7950 section 7.7.1</a>.
+ */
+@NonNullByDefault
+public enum Ordering {
+    /**
+     * The equivalent of {@code ordered-by system}.
+     */
+    SYSTEM("system"),
+    /**
+     * The equivalent of {@code ordered-by user}.
+     */
+    USER("user");
+
+    private String argumentString;
+
+    Ordering(final String argumentString) {
+        this.argumentString = argumentString;
+    }
+
+    /**
+     * Return the {code ordered-by} string argument this Ordering represents.
+     *
+     * @return Argument string
+     */
+    public String argument() {
+        return argumentString;
+    }
+
+    /**
+     * Return the Ordering corresponding to an argument string.
+     *
+     * @param argumentString Argument string
+     * @return Corresponding Ordering
+     * @throws NullPointerException if {code argumentString} is null
+     * @throws IllegalArgumentException if the argument string is not a valid Ordering
+     */
+    public static Ordering forArgument(final String argumentString) {
+        switch (argumentString) {
+            case "system":
+                return SYSTEM;
+            case "user":
+                return USER;
+            default:
+                throw new IllegalArgumentException("Invalid ordering string '" + argumentString + "'");
+        }
+    }
+}
\ No newline at end of file
index 46644f5f123d5849f218996cf8b2c5c5cc5248e8..b4ccd2eac544cc3abea6b83dae37524c2948b7f5 100644 (file)
@@ -8,10 +8,10 @@
 package org.opendaylight.yangtools.yang.model.api.stmt;
 
 import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.yang.common.Ordering;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
-import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByStatement.Ordering;
 
 @Beta
 public interface OrderedByEffectiveStatement extends EffectiveStatement<Ordering, OrderedByStatement> {
index f2530a7f8ed7f78cfa2c873dacca301c75cce644..9eccb0e47b509c2b3b060fdce43d2a522e7b3c12 100644 (file)
@@ -10,39 +10,12 @@ package org.opendaylight.yangtools.yang.model.api.stmt;
 import static com.google.common.base.Verify.verifyNotNull;
 
 import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.opendaylight.yangtools.yang.common.Ordering;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
 
-public interface OrderedByStatement extends DeclaredStatement<OrderedByStatement.Ordering> {
-    @NonNullByDefault
-    enum Ordering {
-        SYSTEM("system"),
-        USER("user");
-
-        private String argumentString;
-
-        Ordering(final String argumentString) {
-            this.argumentString = argumentString;
-        }
-
-        public String getArgumentString() {
-            return argumentString;
-        }
-
-        public static Ordering forArgumentString(final String argumentString) {
-            switch (argumentString) {
-                case "system":
-                    return SYSTEM;
-                case "user":
-                    return USER;
-                default:
-                    throw new IllegalArgumentException("Invalid ordering string '" + argumentString + "'");
-            }
-        }
-    }
-
+public interface OrderedByStatement extends DeclaredStatement<Ordering> {
     @Override
     default StatementDefinition statementDefinition() {
         return YangStmtMapping.ORDERED_BY;
index c5bfcc982fbf643e5f4f7d36ed55594aadc350b3..d0506650a35fd78066069cd40da0fec4db0c81db 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf_list;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import java.util.Optional;
+import org.opendaylight.yangtools.yang.common.Ordering;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
@@ -22,7 +23,6 @@ import org.opendaylight.yangtools.yang.model.api.stmt.DefaultEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.LeafListEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.LeafListStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByEffectiveStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByStatement.Ordering;
 import org.opendaylight.yangtools.yang.model.api.stmt.StatusEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.TypeEffectiveStatement;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseSchemaTreeStatementSupport;
index a3532cd6bb2caaea67b96b90cfe67142f727be3f..0410b7bd20c3a87571b13a65be564816aa595344 100644 (file)
@@ -17,6 +17,7 @@ import java.util.List;
 import java.util.Optional;
 import java.util.Set;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.yang.common.Ordering;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
@@ -31,7 +32,6 @@ import org.opendaylight.yangtools.yang.model.api.stmt.KeyEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ListEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ListStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByEffectiveStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByStatement.Ordering;
 import org.opendaylight.yangtools.yang.model.api.stmt.StatusEffectiveStatement;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseSchemaTreeStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMixins.EffectiveStatementWithFlags.FlagsBuilder;
index 2c90e5420765412c229e7266895bd467e15dc4bd..a0a5e63753011f9a6fbd633a1b691f0044cc1f09 100644 (file)
@@ -10,10 +10,11 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.ordered_by;
 import static java.util.Objects.requireNonNull;
 
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.yang.common.Ordering;
 import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByStatement;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement;
 
-abstract class AbstractOrderedByStatement extends AbstractDeclaredStatement<OrderedByStatement.Ordering>
+abstract class AbstractOrderedByStatement extends AbstractDeclaredStatement<Ordering>
         implements OrderedByStatement {
     private final @NonNull Ordering argument;
 
@@ -28,6 +29,6 @@ abstract class AbstractOrderedByStatement extends AbstractDeclaredStatement<Orde
 
     @Override
     public final @NonNull String rawArgument() {
-        return argument.getArgumentString();
+        return argument.argument();
     }
 }
index 5785d8e2c054d5a6a881e85bd3da56524e85b9d2..6a4718b6c912e94f2ff02f232764d761ed156501 100644 (file)
@@ -7,9 +7,9 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.ordered_by;
 
+import org.opendaylight.yangtools.yang.common.Ordering;
 import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByStatement.Ordering;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredEffectiveStatement.DefaultArgument;
 
 final class EmptyOrderedByEffectiveStatement extends DefaultArgument<Ordering, OrderedByStatement>
index bb616108336c1dc348b9f775d747f1657b9d4f6a..58f0f5d6d6726ae09a9311195d5d9ad5361e3475 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.ordered_by;
 
+import org.opendaylight.yangtools.yang.common.Ordering;
+
 final class EmptyOrderedByStatement extends AbstractOrderedByStatement {
     EmptyOrderedByStatement(final Ordering argument) {
         super(argument);
index 7d74599ea46175f5e9b1d9e7aac7ec62ffa22776..a2117bd07e94c1384ddb74a1d1e9330ace0bcd8a 100644 (file)
@@ -9,12 +9,12 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.ordered_by;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.yang.common.Ordering;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByStatement.Ordering;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
@@ -50,7 +50,7 @@ public final class OrderedByStatementSupport
     @Override
     public Ordering parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
         try {
-            return Ordering.forArgumentString(value);
+            return Ordering.forArgument(value);
         } catch (IllegalArgumentException e) {
             throw new SourceException(ctx.getStatementSourceReference(), e, "Invalid ordered-by argument '%s'", value);
         }
index e0fc0847e72828d03b90204d05804a9df8609934..d51c5ec7b0cc622d66554ba889c4d77cc60ff147 100644 (file)
@@ -8,10 +8,10 @@
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.ordered_by;
 
 import com.google.common.collect.ImmutableList;
+import org.opendaylight.yangtools.yang.common.Ordering;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByStatement.Ordering;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredEffectiveStatement.DefaultArgument.WithSubstatements;
 
 final class RegularOrderedByEffectiveStatement extends WithSubstatements<Ordering, OrderedByStatement>
index 0c1f795a4a83c831a4aa5f8d52a988044bb3c06d..a78a8af6db1ee0c755922b9d4ef2b17e7c3979f4 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.ordered_by;
 import com.google.common.collect.ImmutableList;
 import java.util.Collection;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.yang.common.Ordering;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 
 final class RegularOrderedByStatement extends AbstractOrderedByStatement {