Merge GroupingStatementSupport 04/94104/3
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 8 Dec 2020 11:33:38 +0000 (12:33 +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: I97dd358a284d3105538bfd324c30abc82ca17501
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/grouping/GroupingStatementRFC6020Support.java [deleted file]
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/grouping/GroupingStatementRFC7950Support.java [deleted file]
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/grouping/GroupingStatementSupport.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/grouping/AbstractGroupingStatementSupport.java with 64% similarity]

index 55c14d7a4d2d468974bf8b4f1047608e88afafed..a01429fec9149668402fb68c903dbacc10fba473 100644 (file)
@@ -46,8 +46,7 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.error_message.ErrorMe
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.ExtensionStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.feature.FeatureStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.fraction_digits.FractionDigitsStatementSupport;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.grouping.GroupingStatementRFC6020Support;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.grouping.GroupingStatementRFC7950Support;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.grouping.GroupingStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.identity.IdentityStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.if_feature.IfFeatureStatementRFC6020Support;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.if_feature.IfFeatureStatementRFC7950Support;
@@ -240,8 +239,8 @@ public final class RFC7950Reactors {
             .addSupport(KeyStatementSupport.getInstance())
             .addVersionSpecificSupport(VERSION_1, ContainerStatementSupport.rfc6020Instance())
             .addVersionSpecificSupport(VERSION_1_1, ContainerStatementSupport.rfc7950Instance())
-            .addVersionSpecificSupport(VERSION_1, GroupingStatementRFC6020Support.getInstance())
-            .addVersionSpecificSupport(VERSION_1_1, GroupingStatementRFC7950Support.getInstance())
+            .addVersionSpecificSupport(VERSION_1, GroupingStatementSupport.rfc6020Instance())
+            .addVersionSpecificSupport(VERSION_1_1, GroupingStatementSupport.rfc7950Instance())
             .addVersionSpecificSupport(VERSION_1, ListStatementRFC6020Support.getInstance())
             .addVersionSpecificSupport(VERSION_1_1, ListStatementRFC7950Support.getInstance())
             .addSupport(ConfigListWarningNamespace.BEHAVIOUR)
diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/grouping/GroupingStatementRFC6020Support.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/grouping/GroupingStatementRFC6020Support.java
deleted file mode 100644 (file)
index d19b019..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.grouping;
-
-import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
-import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
-
-public final class GroupingStatementRFC6020Support extends AbstractGroupingStatementSupport {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(YangStmtMapping
-        .GROUPING)
-        .addAny(YangStmtMapping.ANYXML)
-        .addAny(YangStmtMapping.CHOICE)
-        .addAny(YangStmtMapping.CONTAINER)
-        .addOptional(YangStmtMapping.DESCRIPTION)
-        .addAny(YangStmtMapping.GROUPING)
-        .addAny(YangStmtMapping.LEAF)
-        .addAny(YangStmtMapping.LEAF_LIST)
-        .addAny(YangStmtMapping.LIST)
-        .addOptional(YangStmtMapping.REFERENCE)
-        .addOptional(YangStmtMapping.STATUS)
-        .addAny(YangStmtMapping.TYPEDEF)
-        .addAny(YangStmtMapping.USES)
-        .build();
-    private static final GroupingStatementRFC6020Support INSTANCE = new GroupingStatementRFC6020Support();
-
-    private GroupingStatementRFC6020Support() {
-        // Hidden
-    }
-
-    public static GroupingStatementRFC6020Support 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/grouping/GroupingStatementRFC7950Support.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/grouping/GroupingStatementRFC7950Support.java
deleted file mode 100644 (file)
index ce3a2a5..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2015 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.grouping;
-
-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 Grouping statement.
- */
-@Beta
-public final class GroupingStatementRFC7950Support extends AbstractGroupingStatementSupport {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(YangStmtMapping
-            .GROUPING)
-            .addAny(YangStmtMapping.ACTION)
-            .addAny(YangStmtMapping.ANYDATA)
-            .addAny(YangStmtMapping.ANYXML)
-            .addAny(YangStmtMapping.CHOICE)
-            .addAny(YangStmtMapping.CONTAINER)
-            .addOptional(YangStmtMapping.DESCRIPTION)
-            .addAny(YangStmtMapping.GROUPING)
-            .addAny(YangStmtMapping.LEAF)
-            .addAny(YangStmtMapping.LEAF_LIST)
-            .addAny(YangStmtMapping.LIST)
-            .addAny(YangStmtMapping.NOTIFICATION)
-            .addOptional(YangStmtMapping.REFERENCE)
-            .addOptional(YangStmtMapping.STATUS)
-            .addAny(YangStmtMapping.TYPEDEF)
-            .addAny(YangStmtMapping.USES)
-            .build();
-    private static final GroupingStatementRFC7950Support INSTANCE = new GroupingStatementRFC7950Support();
-
-    private GroupingStatementRFC7950Support() {
-        // Hidden
-    }
-
-    public static GroupingStatementRFC7950Support getInstance() {
-        return INSTANCE;
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-}
@@ -7,8 +7,12 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.grouping;
 
+import static java.util.Objects.requireNonNull;
+
+import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableList;
 import java.util.Collection;
+import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
@@ -27,21 +31,68 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
+import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 
-abstract class AbstractGroupingStatementSupport
+@Beta
+public final class GroupingStatementSupport
         extends BaseQNameStatementSupport<GroupingStatement, GroupingEffectiveStatement> {
-    AbstractGroupingStatementSupport() {
+    private static final @NonNull GroupingStatementSupport RFC6020_INSTANCE = new GroupingStatementSupport(
+        SubstatementValidator.builder(YangStmtMapping.GROUPING)
+            .addAny(YangStmtMapping.ANYXML)
+            .addAny(YangStmtMapping.CHOICE)
+            .addAny(YangStmtMapping.CONTAINER)
+            .addOptional(YangStmtMapping.DESCRIPTION)
+            .addAny(YangStmtMapping.GROUPING)
+            .addAny(YangStmtMapping.LEAF)
+            .addAny(YangStmtMapping.LEAF_LIST)
+            .addAny(YangStmtMapping.LIST)
+            .addOptional(YangStmtMapping.REFERENCE)
+            .addOptional(YangStmtMapping.STATUS)
+            .addAny(YangStmtMapping.TYPEDEF)
+            .addAny(YangStmtMapping.USES)
+            .build());
+    private static final @NonNull GroupingStatementSupport RFC7950_INSTANCE = new GroupingStatementSupport(
+        SubstatementValidator.builder(YangStmtMapping.GROUPING)
+            .addAny(YangStmtMapping.ACTION)
+            .addAny(YangStmtMapping.ANYDATA)
+            .addAny(YangStmtMapping.ANYXML)
+            .addAny(YangStmtMapping.CHOICE)
+            .addAny(YangStmtMapping.CONTAINER)
+            .addOptional(YangStmtMapping.DESCRIPTION)
+            .addAny(YangStmtMapping.GROUPING)
+            .addAny(YangStmtMapping.LEAF)
+            .addAny(YangStmtMapping.LEAF_LIST)
+            .addAny(YangStmtMapping.LIST)
+            .addAny(YangStmtMapping.NOTIFICATION)
+            .addOptional(YangStmtMapping.REFERENCE)
+            .addOptional(YangStmtMapping.STATUS)
+            .addAny(YangStmtMapping.TYPEDEF)
+            .addAny(YangStmtMapping.USES)
+            .build());
+
+    private final SubstatementValidator validator;
+
+    GroupingStatementSupport(final SubstatementValidator validator) {
         super(YangStmtMapping.GROUPING, CopyPolicy.DECLARED_COPY);
+        this.validator = requireNonNull(validator);
+    }
+
+    public static @NonNull GroupingStatementSupport rfc6020Instance() {
+        return RFC6020_INSTANCE;
+    }
+
+    public static @NonNull GroupingStatementSupport rfc7950Instance() {
+        return RFC7950_INSTANCE;
     }
 
     @Override
-    public final QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
+    public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
         return StmtContextUtils.parseIdentifier(ctx, value);
     }
 
     @Override
-    public final void onFullDefinitionDeclared(
+    public void onFullDefinitionDeclared(
             final Mutable<QName, GroupingStatement, GroupingEffectiveStatement> stmt) {
         super.onFullDefinitionDeclared(stmt);
 
@@ -75,13 +126,18 @@ abstract class AbstractGroupingStatementSupport
     }
 
     @Override
-    protected final GroupingStatement createDeclared(final StmtContext<QName, GroupingStatement, ?> ctx,
+    protected SubstatementValidator getSubstatementValidator() {
+        return validator;
+    }
+
+    @Override
+    protected GroupingStatement createDeclared(final StmtContext<QName, GroupingStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
         return new RegularGroupingStatement(ctx.getArgument(), substatements);
     }
 
     @Override
-    protected final GroupingStatement createEmptyDeclared(final StmtContext<QName, GroupingStatement, ?> ctx) {
+    protected GroupingStatement createEmptyDeclared(final StmtContext<QName, GroupingStatement, ?> ctx) {
         return new EmptyGroupingStatement(ctx.getArgument());
     }