Promote BaseBooleanStatementSupport 64/94664/1
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 19 Jan 2021 18:44:44 +0000 (19:44 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 19 Jan 2021 18:45:25 +0000 (19:45 +0100)
Promote this class as parser.spi.meta.AbstractBooleanStatementSupport,
making it easier to use.

JIRA: YANGTOOLS-1150
Change-Id: I2f6d5c384246aca8b154d28bf8aeea94d19545b7
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/ArgumentUtils.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/config/ConfigStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/mandatory/MandatoryStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/require_instance/RequireInstanceStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/yin_element/YinElementStatementSupport.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractBooleanStatementSupport.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/BaseBooleanStatementSupport.java with 77% similarity]

index a43313d2243f8e43429e6f70e05947f9c1d24727..8ac80fb539e55fff655051c56c5ce14325148975 100644 (file)
@@ -14,9 +14,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.regex.Pattern;
 import org.checkerframework.checker.regex.qual.Regex;
-import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Descendant;
@@ -53,28 +51,6 @@ public final class ArgumentUtils {
         return new BigDecimal(num1.toString()).compareTo(new BigDecimal(num2.toString()));
     }
 
-    public static String internBoolean(final String input) {
-        if ("true".equals(input)) {
-            return "true";
-        } else if ("false".equals(input)) {
-            return "false";
-        } else {
-            return input;
-        }
-    }
-
-    public static @NonNull Boolean parseBoolean(final StmtContext<?, ?, ?> ctx, final String input) {
-        if ("true".equals(input)) {
-            return Boolean.TRUE;
-        } else if ("false".equals(input)) {
-            return Boolean.FALSE;
-        } else {
-            final StatementDefinition def = ctx.publicDefinition();
-            throw new SourceException(ctx, "Invalid '%s' statement %s '%s', it can be either 'true' or 'false'",
-                def.getStatementName(), def.getArgumentDefinition().get().getArgumentName(), input);
-        }
-    }
-
     public static boolean isAbsoluteXPath(final String path) {
         return PATH_ABS.matcher(path).matches();
     }
index 1a4e817379bccaebb44db3ea5e571124d7e23a91..9609c939920a1ef090b6dc46fcbe6710042fdb12 100644 (file)
@@ -13,12 +13,12 @@ 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.ConfigEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ConfigStatement;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseBooleanStatementSupport;
+import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractBooleanStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 public final class ConfigStatementSupport
-        extends BaseBooleanStatementSupport<ConfigStatement, ConfigEffectiveStatement> {
+        extends AbstractBooleanStatementSupport<ConfigStatement, ConfigEffectiveStatement> {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
         YangStmtMapping.CONFIG).build();
     private static final ConfigStatementSupport INSTANCE = new ConfigStatementSupport();
index eef476681c3e19d68285e36b660f5a594e8e5c98..2f2bad7c15ddfd2f02fda39859c553e239276d70 100644 (file)
@@ -13,12 +13,12 @@ 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.MandatoryEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.MandatoryStatement;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseBooleanStatementSupport;
+import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractBooleanStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 public final class MandatoryStatementSupport extends
-        BaseBooleanStatementSupport<MandatoryStatement, MandatoryEffectiveStatement> {
+        AbstractBooleanStatementSupport<MandatoryStatement, MandatoryEffectiveStatement> {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
         YangStmtMapping.MANDATORY).build();
     private static final MandatoryStatementSupport INSTANCE = new MandatoryStatementSupport();
index d22eec366604204abe05d5386ff4ea4c9af0670b..9cab1634aeb118009eef8fc9faa74730a36ca31f 100644 (file)
@@ -13,12 +13,12 @@ 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.RequireInstanceEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.RequireInstanceStatement;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseBooleanStatementSupport;
+import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractBooleanStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 public final class RequireInstanceStatementSupport
-        extends BaseBooleanStatementSupport<RequireInstanceStatement, RequireInstanceEffectiveStatement> {
+        extends AbstractBooleanStatementSupport<RequireInstanceStatement, RequireInstanceEffectiveStatement> {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
         YangStmtMapping.REQUIRE_INSTANCE).build();
     private static final RequireInstanceStatementSupport INSTANCE = new RequireInstanceStatementSupport();
index 5f405d11f1cc3296bf4306cb31cde35998ba3898..8d171ba0440a42d4a2db713fcb277f2059a6c787 100644 (file)
@@ -13,12 +13,12 @@ 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.YinElementEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.YinElementStatement;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseBooleanStatementSupport;
+import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractBooleanStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 public final class YinElementStatementSupport
-        extends BaseBooleanStatementSupport<YinElementStatement, YinElementEffectiveStatement> {
+        extends AbstractBooleanStatementSupport<YinElementStatement, YinElementEffectiveStatement> {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
         YangStmtMapping.YIN_ELEMENT).build();
     private static final YinElementStatementSupport INSTANCE = new YinElementStatementSupport();
@@ -5,7 +5,7 @@
  * 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;
+package org.opendaylight.yangtools.yang.parser.spi.meta;
 
 import static java.util.Objects.requireNonNull;
 
@@ -15,9 +15,8 @@ import org.eclipse.jdt.annotation.NonNull;
 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.meta.StatementDefinition;
-import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 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.source.SourceException;
 
 /**
  * Specialization of {@link AbstractStatementSupport} for statements which carry a Boolean argument and are essentially
@@ -27,14 +26,14 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
  * @param <E> Effective Statement representation
  */
 @Beta
-public abstract class BaseBooleanStatementSupport<D extends DeclaredStatement<Boolean>,
+public abstract class AbstractBooleanStatementSupport<D extends DeclaredStatement<Boolean>,
         E extends EffectiveStatement<Boolean, D>> extends AbstractStatementSupport<Boolean, D, E> {
     private final @NonNull E emptyEffectiveFalse;
     private final @NonNull E emptyEffectiveTrue;
     private final @NonNull D emptyDeclaredFalse;
     private final @NonNull D emptyDeclaredTrue;
 
-    protected BaseBooleanStatementSupport(final StatementDefinition publicDefinition,
+    protected AbstractBooleanStatementSupport(final StatementDefinition publicDefinition,
             final E emptyEffectiveFalse, final E emptyEffectiveTrue, final StatementPolicy<Boolean, D> policy) {
         super(publicDefinition, policy);
         this.emptyEffectiveFalse = requireNonNull(emptyEffectiveFalse);
@@ -45,12 +44,25 @@ public abstract class BaseBooleanStatementSupport<D extends DeclaredStatement<Bo
 
     @Override
     public final Boolean parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
-        return ArgumentUtils.parseBoolean(ctx, value);
+        if ("true".equals(value)) {
+            return Boolean.TRUE;
+        } else if ("false".equals(value)) {
+            return Boolean.FALSE;
+        } else {
+            throw new SourceException(ctx, "Invalid '%s' statement %s '%s', it can be either 'true' or 'false'",
+                getStatementName(), getArgumentDefinition().get().getArgumentName(), value);
+        }
     }
 
     @Override
     public final String internArgument(final String rawArgument) {
-        return ArgumentUtils.internBoolean(rawArgument);
+        if ("true".equals(rawArgument)) {
+            return "true";
+        } else if ("false".equals(rawArgument)) {
+            return "false";
+        } else {
+            return rawArgument;
+        }
     }
 
     @Override