Merge PatternStatementSupport 10/94110/3
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 8 Dec 2020 14:14:02 +0000 (15:14 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 8 Dec 2020 15:02:13 +0000 (16:02 +0100)
The two subclasses differ only in their statement validator,
merge them together, reducing the number of classes we have.

Change-Id: I91b8903b025e7cc341be87d44a494e1afee8177a
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/pattern/PatternStatementRFC6020Support.java [deleted file]
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/pattern/PatternStatementRFC7950Support.java [deleted file]
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/pattern/PatternStatementSupport.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/pattern/AbstractPatternStatementSupport.java with 55% similarity]

index 458375224905288d07a9025a2fa5b7a659ca7ae1..524914514515ac8be1a3efe2f4623ac288647110 100644 (file)
@@ -72,8 +72,7 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.ordered_by.OrderedByS
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.organization.OrganizationStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.output.OutputStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.path.PathStatementSupport;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.pattern.PatternStatementRFC6020Support;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.pattern.PatternStatementRFC7950Support;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.pattern.PatternStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.position.PositionStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.prefix.PrefixStatementSupport;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.presence.PresenceStatementSupport;
@@ -224,8 +223,8 @@ public final class RFC7950Reactors {
             .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())
+            .addVersionSpecificSupport(VERSION_1, PatternStatementSupport.rfc6020Instance())
+            .addVersionSpecificSupport(VERSION_1_1, PatternStatementSupport.rfc7950Instance())
             .addVersionSpecificSupport(VERSION_1_1, ModifierStatementSupport.getInstance())
             .addSupport(RangeStatementSupport.getInstance())
             .addSupport(KeyStatementSupport.getInstance())
diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/pattern/PatternStatementRFC6020Support.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/pattern/PatternStatementRFC6020Support.java
deleted file mode 100644 (file)
index 5c38a77..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.pattern;
-
-import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
-import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
-
-public final class PatternStatementRFC6020Support extends AbstractPatternStatementSupport {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(YangStmtMapping
-        .PATTERN)
-        .addOptional(YangStmtMapping.DESCRIPTION)
-        .addOptional(YangStmtMapping.ERROR_APP_TAG)
-        .addOptional(YangStmtMapping.ERROR_MESSAGE)
-        .addOptional(YangStmtMapping.REFERENCE)
-        .build();
-    private static final PatternStatementRFC6020Support INSTANCE = new PatternStatementRFC6020Support();
-
-    private PatternStatementRFC6020Support() {
-        // Hidden
-    }
-
-    public static PatternStatementRFC6020Support 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/pattern/PatternStatementRFC7950Support.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/pattern/PatternStatementRFC7950Support.java
deleted file mode 100644 (file)
index d3f315c..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.pattern;
-
-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 Pattern statement.
- */
-@Beta
-public final class PatternStatementRFC7950Support extends AbstractPatternStatementSupport {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(YangStmtMapping
-            .PATTERN)
-            .addOptional(YangStmtMapping.DESCRIPTION)
-            .addOptional(YangStmtMapping.ERROR_APP_TAG)
-            .addOptional(YangStmtMapping.ERROR_MESSAGE)
-            .addOptional(YangStmtMapping.MODIFIER)
-            .addOptional(YangStmtMapping.REFERENCE)
-            .build();
-    private static final PatternStatementRFC7950Support INSTANCE = new PatternStatementRFC7950Support();
-
-    private PatternStatementRFC7950Support() {
-        // Hidden
-    }
-
-    public static PatternStatementRFC7950Support getInstance() {
-        return INSTANCE;
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-}
@@ -7,9 +7,13 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.pattern;
 
+import static java.util.Objects.requireNonNull;
+
+import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableList;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
+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;
@@ -20,16 +24,45 @@ import org.opendaylight.yangtools.yang.model.util.RegexUtils;
 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;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 
-abstract class AbstractPatternStatementSupport
+@Beta
+public final class PatternStatementSupport
         extends BaseStatementSupport<PatternExpression, PatternStatement, PatternEffectiveStatement> {
-    AbstractPatternStatementSupport() {
+    private static final @NonNull PatternStatementSupport RFC6020_INSTANCE = new PatternStatementSupport(
+        SubstatementValidator.builder(YangStmtMapping.PATTERN)
+            .addOptional(YangStmtMapping.DESCRIPTION)
+            .addOptional(YangStmtMapping.ERROR_APP_TAG)
+            .addOptional(YangStmtMapping.ERROR_MESSAGE)
+            .addOptional(YangStmtMapping.REFERENCE)
+            .build());
+    private static final @NonNull PatternStatementSupport RFC7950_INSTANCE = new PatternStatementSupport(
+        SubstatementValidator.builder(YangStmtMapping.PATTERN)
+            .addOptional(YangStmtMapping.DESCRIPTION)
+            .addOptional(YangStmtMapping.ERROR_APP_TAG)
+            .addOptional(YangStmtMapping.ERROR_MESSAGE)
+            .addOptional(YangStmtMapping.MODIFIER)
+            .addOptional(YangStmtMapping.REFERENCE)
+            .build());
+
+    private final SubstatementValidator validator;
+
+    private PatternStatementSupport(final SubstatementValidator validator) {
         super(YangStmtMapping.PATTERN, CopyPolicy.CONTEXT_INDEPENDENT);
+        this.validator = requireNonNull(validator);
+    }
+
+    public static @NonNull PatternStatementSupport rfc6020Instance() {
+        return RFC6020_INSTANCE;
+    }
+
+    public static @NonNull PatternStatementSupport rfc7950Instance() {
+        return RFC7950_INSTANCE;
     }
 
     @Override
-    public final PatternExpression parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
+    public PatternExpression parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
         final String pattern = RegexUtils.getJavaRegexFromXSD(value);
         try {
             Pattern.compile(pattern);
@@ -40,19 +73,24 @@ abstract class AbstractPatternStatementSupport
     }
 
     @Override
-    protected final PatternStatement createDeclared(final StmtContext<PatternExpression, PatternStatement, ?> ctx,
+    protected SubstatementValidator getSubstatementValidator() {
+        return validator;
+    }
+
+    @Override
+    protected PatternStatement createDeclared(final StmtContext<PatternExpression, PatternStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
         return new RegularPatternStatement(ctx.getArgument(), substatements);
     }
 
     @Override
-    protected final PatternStatement createEmptyDeclared(
+    protected PatternStatement createEmptyDeclared(
             final StmtContext<PatternExpression, PatternStatement, ?> ctx) {
         return new EmptyPatternStatement(ctx.getArgument());
     }
 
     @Override
-    protected final PatternEffectiveStatement createEffective(final Current<PatternExpression, PatternStatement> stmt,
+    protected PatternEffectiveStatement createEffective(final Current<PatternExpression, PatternStatement> stmt,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         return substatements.isEmpty() ? new EmptyPatternEffectiveStatement(stmt.declared())
             : new RegularPatternEffectiveStatement(stmt.declared(), substatements);