--- /dev/null
+/*
+ * 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
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> {
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;
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;
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;
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;
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;
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;
@Override
public final @NonNull String rawArgument() {
- return argument.getArgumentString();
+ return argument.argument();
}
}
*/
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>
*/
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);
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;
@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);
}
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>
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 {