Merge EnumStatementSupport 03/94103/3
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 8 Dec 2020 11:28:49 +0000 (12:28 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 8 Dec 2020 12:12:48 +0000 (13:12 +0100)
The two subclasses differ only in validator, merge them together,
reducing the number of classes we have.

Change-Id: I0b8cf53e97f9e95de5ea137f3e2c1937b6bc670f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/reactor/RFC7950Reactors.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/enum_/AbstractEnumStatementSupport.java [deleted file]
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/enum_/EnumStatementRFC6020Support.java [deleted file]
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/enum_/EnumStatementRFC7950Support.java [deleted file]
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/enum_/EnumStatementSupport.java [new file with mode: 0644]

index 28f1ffa63c207afc8923cd1c7e329bafcbb39ad8..55c14d7a4d2d468974bf8b4f1047608e88afafed 100644 (file)
@@ -40,8 +40,7 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.description.Descripti
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.deviate.DeviateStatementRFC6020Support;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.deviate.DeviateStatementRFC7950Support;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.deviation.DeviationStatementSupport;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.enum_.EnumStatementRFC6020Support;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.enum_.EnumStatementRFC7950Support;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.enum_.EnumStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.error_app_tag.ErrorAppTagStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.error_message.ErrorMessageStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.ExtensionStatementSupport;
@@ -231,8 +230,8 @@ public final class RFC7950Reactors {
             .addVersionSpecificSupport(VERSION_1, BitStatementSupport.rfc6020Instance())
             .addVersionSpecificSupport(VERSION_1_1, BitStatementSupport.rfc7950Instance())
             .addSupport(PathStatementSupport.strictInstance())
-            .addVersionSpecificSupport(VERSION_1, EnumStatementRFC6020Support.getInstance())
-            .addVersionSpecificSupport(VERSION_1_1, EnumStatementRFC7950Support.getInstance())
+            .addVersionSpecificSupport(VERSION_1, EnumStatementSupport.rfc6020Instance())
+            .addVersionSpecificSupport(VERSION_1_1, EnumStatementSupport.rfc7950Instance())
             .addSupport(LengthStatementSupport.getInstance())
             .addVersionSpecificSupport(VERSION_1, PatternStatementRFC6020Support.getInstance())
             .addVersionSpecificSupport(VERSION_1_1, PatternStatementRFC7950Support.getInstance())
diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/enum_/AbstractEnumStatementSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/enum_/AbstractEnumStatementSupport.java
deleted file mode 100644 (file)
index efc3c91..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2017 Pantheon Technologies, 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.parser.rfc7950.stmt.enum_;
-
-import com.google.common.collect.ImmutableList;
-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.EnumEffectiveStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.EnumStatement;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseStatementSupport;
-import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-
-abstract class AbstractEnumStatementSupport
-        extends BaseStatementSupport<String, EnumStatement, EnumEffectiveStatement> {
-    AbstractEnumStatementSupport() {
-        super(YangStmtMapping.ENUM, CopyPolicy.CONTEXT_INDEPENDENT);
-    }
-
-    @Override
-    public final String parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
-        // FIXME: Checks for real value
-        return value;
-    }
-
-    @Override
-    protected final EnumStatement createDeclared(final StmtContext<String, EnumStatement, ?> ctx,
-            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new RegularEnumStatement(ctx.getRawArgument(), ctx.getArgument(), substatements);
-    }
-
-    @Override
-    protected final EnumStatement createEmptyDeclared(final StmtContext<String, EnumStatement, ?> ctx) {
-        return new EmptyEnumStatement(ctx.getRawArgument(), ctx.getArgument());
-    }
-
-    @Override
-    protected EnumEffectiveStatement createEffective(final Current<String, EnumStatement> stmt,
-            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
-        return substatements.isEmpty() ? new EmptyEnumEffectiveStatement(stmt.declared())
-            : new RegularEnumEffectiveStatement(stmt.declared(), substatements);
-    }
-}
\ No newline at end of file
diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/enum_/EnumStatementRFC6020Support.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/enum_/EnumStatementRFC6020Support.java
deleted file mode 100644 (file)
index 705a54a..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2017 Pantheon Technologies, 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.parser.rfc7950.stmt.enum_;
-
-import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
-import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
-
-public final class EnumStatementRFC6020Support extends AbstractEnumStatementSupport {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
-        YangStmtMapping.ENUM)
-        .addOptional(YangStmtMapping.DESCRIPTION)
-        .addOptional(YangStmtMapping.REFERENCE)
-        .addOptional(YangStmtMapping.STATUS)
-        .addOptional(YangStmtMapping.VALUE)
-        .build();
-    private static final EnumStatementRFC6020Support INSTANCE = new EnumStatementRFC6020Support();
-
-    private EnumStatementRFC6020Support() {
-        // Hidden
-    }
-
-    public static EnumStatementRFC6020Support getInstance() {
-        return INSTANCE;
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-}
\ No newline at end of file
diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/enum_/EnumStatementRFC7950Support.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/enum_/EnumStatementRFC7950Support.java
deleted file mode 100644 (file)
index 1008c34..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco Systems, Inc. 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.parser.rfc7950.stmt.enum_;
-
-import com.google.common.annotations.Beta;
-import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
-import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
-
-/**
- * Class providing necessary support for processing YANG 1.1 Enum statement.
- */
-@Beta
-public final class EnumStatementRFC7950Support extends AbstractEnumStatementSupport {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
-            YangStmtMapping.ENUM)
-            .addOptional(YangStmtMapping.DESCRIPTION)
-            .addAny(YangStmtMapping.IF_FEATURE)
-            .addOptional(YangStmtMapping.REFERENCE)
-            .addOptional(YangStmtMapping.STATUS)
-            .addOptional(YangStmtMapping.VALUE)
-            .build();
-    private static final EnumStatementRFC7950Support INSTANCE = new EnumStatementRFC7950Support();
-
-    private EnumStatementRFC7950Support() {
-        // Hidden
-    }
-
-    public static EnumStatementRFC7950Support getInstance() {
-        return INSTANCE;
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-}
diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/enum_/EnumStatementSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/enum_/EnumStatementSupport.java
new file mode 100644 (file)
index 0000000..ae8c4f4
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2017 Pantheon Technologies, 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.parser.rfc7950.stmt.enum_;
+
+import static java.util.Objects.requireNonNull;
+
+import com.google.common.annotations.Beta;
+import com.google.common.collect.ImmutableList;
+import org.eclipse.jdt.annotation.NonNull;
+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.EnumEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.EnumStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseStatementSupport;
+import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
+
+@Beta
+public final class EnumStatementSupport extends BaseStatementSupport<String, EnumStatement, EnumEffectiveStatement> {
+    private static final @NonNull EnumStatementSupport RFC6020_INSTANCE = new EnumStatementSupport(
+        SubstatementValidator.builder(YangStmtMapping.ENUM)
+            .addOptional(YangStmtMapping.DESCRIPTION)
+            .addOptional(YangStmtMapping.REFERENCE)
+            .addOptional(YangStmtMapping.STATUS)
+            .addOptional(YangStmtMapping.VALUE)
+            .build());
+    private static final @NonNull EnumStatementSupport RFC7950_INSTANCE = new EnumStatementSupport(
+        SubstatementValidator.builder(YangStmtMapping.ENUM)
+            .addOptional(YangStmtMapping.DESCRIPTION)
+            .addAny(YangStmtMapping.IF_FEATURE)
+            .addOptional(YangStmtMapping.REFERENCE)
+            .addOptional(YangStmtMapping.STATUS)
+            .addOptional(YangStmtMapping.VALUE)
+            .build());
+
+    private final SubstatementValidator validator;
+
+    private EnumStatementSupport(final SubstatementValidator validator) {
+        super(YangStmtMapping.ENUM, CopyPolicy.CONTEXT_INDEPENDENT);
+        this.validator = requireNonNull(validator);
+    }
+
+    public static @NonNull EnumStatementSupport rfc6020Instance() {
+        return RFC6020_INSTANCE;
+    }
+
+    public static @NonNull EnumStatementSupport rfc7950Instance() {
+        return RFC7950_INSTANCE;
+    }
+
+    @Override
+    public String parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
+        // FIXME: Checks for real value
+        return value;
+    }
+
+    @Override
+    protected SubstatementValidator getSubstatementValidator() {
+        return validator;
+    }
+
+    @Override
+    protected EnumStatement createDeclared(final StmtContext<String, EnumStatement, ?> ctx,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+        return new RegularEnumStatement(ctx.getRawArgument(), ctx.getArgument(), substatements);
+    }
+
+    @Override
+    protected EnumStatement createEmptyDeclared(final StmtContext<String, EnumStatement, ?> ctx) {
+        return new EmptyEnumStatement(ctx.getRawArgument(), ctx.getArgument());
+    }
+
+    @Override
+    protected EnumEffectiveStatement createEffective(final Current<String, EnumStatement> stmt,
+            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+        return substatements.isEmpty() ? new EmptyEnumEffectiveStatement(stmt.declared())
+            : new RegularEnumEffectiveStatement(stmt.declared(), substatements);
+    }
+}
\ No newline at end of file