Merge LeafListStatementSupport 08/94108/1
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 8 Dec 2020 14:05:39 +0000 (15:05 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 8 Dec 2020 14:05:39 +0000 (15:05 +0100)
The two subclasses differ only in their implicit input/output,
merge them together, reducing the number of classes we have.

Change-Id: Icc8d4e4e37fdb013deae11b98d5f9d93d6e0d607
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/leaf_list/LeafListStatementRFC6020Support.java [deleted file]
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/LeafListStatementRFC7950Support.java [deleted file]
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/LeafListStatementSupport.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/AbstractLeafListStatementSupport.java with 66% similarity]

index 2fb2e8c80a132431b38056e00d744e646025d861..cb1e6590ae66c9b1905ff7bfe3da06de1b808492 100644 (file)
@@ -55,8 +55,7 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.include.IncludeStatem
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.input.InputStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.key.KeyStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf.LeafStatementSupport;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf_list.LeafListStatementRFC6020Support;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf_list.LeafListStatementRFC7950Support;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf_list.LeafListStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.length.LengthStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.list.ConfigListWarningNamespace;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.list.ListStatementRFC6020Support;
@@ -368,8 +367,8 @@ public final class RFC7950Reactors {
             .addSupport(UsesStatementSupport.getInstance())
             .addSupport(ErrorMessageStatementSupport.getInstance())
             .addSupport(ErrorAppTagStatementSupport.getInstance())
-            .addVersionSpecificSupport(VERSION_1, LeafListStatementRFC6020Support.getInstance())
-            .addVersionSpecificSupport(VERSION_1_1, LeafListStatementRFC7950Support.getInstance())
+            .addVersionSpecificSupport(VERSION_1, LeafListStatementSupport.rfc6020Instance())
+            .addVersionSpecificSupport(VERSION_1_1, LeafListStatementSupport.rfc7950Instance())
             .addSupport(PresenceStatementSupport.getInstance())
             .addSupport(MaxElementsStatementSupport.getInstance())
             .addSupport(MinElementsStatementSupport.getInstance())
diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/LeafListStatementRFC6020Support.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/LeafListStatementRFC6020Support.java
deleted file mode 100644 (file)
index dbee6de..0000000
+++ /dev/null
@@ -1,43 +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.leaf_list;
-
-import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
-import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
-
-public final class LeafListStatementRFC6020Support extends AbstractLeafListStatementSupport {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(YangStmtMapping
-        .LEAF_LIST)
-        .addOptional(YangStmtMapping.CONFIG)
-        .addOptional(YangStmtMapping.DESCRIPTION)
-        .addAny(YangStmtMapping.IF_FEATURE)
-        .addOptional(YangStmtMapping.MIN_ELEMENTS)
-        .addOptional(YangStmtMapping.MAX_ELEMENTS)
-        .addAny(YangStmtMapping.MUST)
-        .addOptional(YangStmtMapping.ORDERED_BY)
-        .addOptional(YangStmtMapping.REFERENCE)
-        .addOptional(YangStmtMapping.STATUS)
-        .addMandatory(YangStmtMapping.TYPE)
-        .addOptional(YangStmtMapping.UNITS)
-        .addOptional(YangStmtMapping.WHEN)
-        .build();
-    private static final LeafListStatementRFC6020Support INSTANCE = new LeafListStatementRFC6020Support();
-
-    private LeafListStatementRFC6020Support() {
-        // Hidden
-    }
-
-    public static LeafListStatementRFC6020Support 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/leaf_list/LeafListStatementRFC7950Support.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/LeafListStatementRFC7950Support.java
deleted file mode 100644 (file)
index 2c68953..0000000
+++ /dev/null
@@ -1,47 +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.leaf_list;
-
-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 leaf-list statement.
- */
-public final class LeafListStatementRFC7950Support extends AbstractLeafListStatementSupport {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(YangStmtMapping
-            .LEAF_LIST)
-            .addOptional(YangStmtMapping.CONFIG)
-            .addAny(YangStmtMapping.DEFAULT)
-            .addOptional(YangStmtMapping.DESCRIPTION)
-            .addAny(YangStmtMapping.IF_FEATURE)
-            .addOptional(YangStmtMapping.MIN_ELEMENTS)
-            .addOptional(YangStmtMapping.MAX_ELEMENTS)
-            .addAny(YangStmtMapping.MUST)
-            .addOptional(YangStmtMapping.ORDERED_BY)
-            .addOptional(YangStmtMapping.REFERENCE)
-            .addOptional(YangStmtMapping.STATUS)
-            .addMandatory(YangStmtMapping.TYPE)
-            .addOptional(YangStmtMapping.UNITS)
-            .addOptional(YangStmtMapping.WHEN)
-            .build();
-    private static final LeafListStatementRFC7950Support INSTANCE = new LeafListStatementRFC7950Support();
-
-    private LeafListStatementRFC7950Support() {
-        // Hidden
-    }
-
-    public static LeafListStatementRFC7950Support getInstance() {
-        return INSTANCE;
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-}
@@ -7,9 +7,13 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf_list;
 
+import static java.util.Objects.requireNonNull;
+
+import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import java.util.Optional;
+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;
@@ -30,22 +34,73 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMix
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStmtUtils;
 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;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 
-abstract class AbstractLeafListStatementSupport
+@Beta
+public final class LeafListStatementSupport
         extends BaseSchemaTreeStatementSupport<LeafListStatement, LeafListEffectiveStatement> {
-    AbstractLeafListStatementSupport() {
+    private static final @NonNull LeafListStatementSupport RFC6020_INSTANCE = new LeafListStatementSupport(
+        SubstatementValidator.builder(YangStmtMapping.LEAF_LIST)
+            .addOptional(YangStmtMapping.CONFIG)
+            .addOptional(YangStmtMapping.DESCRIPTION)
+            .addAny(YangStmtMapping.IF_FEATURE)
+            .addOptional(YangStmtMapping.MIN_ELEMENTS)
+            .addOptional(YangStmtMapping.MAX_ELEMENTS)
+            .addAny(YangStmtMapping.MUST)
+            .addOptional(YangStmtMapping.ORDERED_BY)
+            .addOptional(YangStmtMapping.REFERENCE)
+            .addOptional(YangStmtMapping.STATUS)
+            .addMandatory(YangStmtMapping.TYPE)
+            .addOptional(YangStmtMapping.UNITS)
+            .addOptional(YangStmtMapping.WHEN)
+            .build());
+    private static final @NonNull LeafListStatementSupport RFC7950_INSTANCE = new LeafListStatementSupport(
+        SubstatementValidator.builder(YangStmtMapping
+            .LEAF_LIST)
+            .addOptional(YangStmtMapping.CONFIG)
+            .addAny(YangStmtMapping.DEFAULT)
+            .addOptional(YangStmtMapping.DESCRIPTION)
+            .addAny(YangStmtMapping.IF_FEATURE)
+            .addOptional(YangStmtMapping.MIN_ELEMENTS)
+            .addOptional(YangStmtMapping.MAX_ELEMENTS)
+            .addAny(YangStmtMapping.MUST)
+            .addOptional(YangStmtMapping.ORDERED_BY)
+            .addOptional(YangStmtMapping.REFERENCE)
+            .addOptional(YangStmtMapping.STATUS)
+            .addMandatory(YangStmtMapping.TYPE)
+            .addOptional(YangStmtMapping.UNITS)
+            .addOptional(YangStmtMapping.WHEN)
+            .build());
+
+    private final SubstatementValidator validator;
+
+    private LeafListStatementSupport(final SubstatementValidator validator) {
         super(YangStmtMapping.LEAF_LIST, CopyPolicy.DECLARED_COPY);
+        this.validator = requireNonNull(validator);
+    }
+
+    public static @NonNull LeafListStatementSupport rfc6020Instance() {
+        return RFC6020_INSTANCE;
+    }
+
+    public static @NonNull LeafListStatementSupport rfc7950Instance() {
+        return RFC7950_INSTANCE;
+    }
+
+    @Override
+    protected SubstatementValidator getSubstatementValidator() {
+        return validator;
     }
 
     @Override
-    protected final LeafListStatement createDeclared(final StmtContext<QName, LeafListStatement, ?> ctx,
+    protected LeafListStatement createDeclared(final StmtContext<QName, LeafListStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
         return new RegularLeafListStatement(ctx.getArgument(), substatements);
     }
 
     @Override
-    protected final LeafListStatement createEmptyDeclared(final StmtContext<QName, LeafListStatement, ?> ctx) {
+    protected LeafListStatement createEmptyDeclared(final StmtContext<QName, LeafListStatement, ?> ctx) {
         return new EmptyLeafListStatement(ctx.getArgument());
     }