Switch position statement to use Uint32 91/87191/8
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 28 Jan 2020 01:08:18 +0000 (02:08 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 28 Jan 2020 12:44:26 +0000 (13:44 +0100)
Position is restricted to 32bit unsigned, there is just no point
to say it is a Long.

JIRA: YANGTOOLS-1065
Change-Id: I3922e90feddab0b8da7bb3fdb42cc8d46953c5de
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PositionEffectiveStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/PositionStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/bit/BitEffectiveStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/position/AbstractPositionEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/position/AbstractPositionStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/position/EmptyPositionStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/position/PositionStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/position/RegularPositionStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/BitsSpecificationEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/BitsTypeEffectiveStatementImpl.java

index 56e41465c56eaeec461eb86ef11c56629982f963..e9d974127936acd069bfd8e92731a58f7d0b4adf 100644 (file)
@@ -8,9 +8,10 @@
 package org.opendaylight.yangtools.yang.model.api.stmt;
 
 import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.yang.common.Uint32;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 
 @Beta
-public interface PositionEffectiveStatement extends EffectiveStatement<Long, PositionStatement> {
+public interface PositionEffectiveStatement extends EffectiveStatement<Uint32, PositionStatement> {
 
 }
index e5a732cef43a4487f5faf88316f596fd25073a6f..42ebf342cae69b891dc7d489bd550bf90178f235 100644 (file)
@@ -7,10 +7,14 @@
  */
 package org.opendaylight.yangtools.yang.model.api.stmt;
 
+import static com.google.common.base.Verify.verifyNotNull;
+
+import org.opendaylight.yangtools.yang.common.Uint32;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 
-public interface PositionStatement extends DeclaredStatement<Long> {
-    default long getValue() {
-        return argument().longValue();
+public interface PositionStatement extends DeclaredStatement<Uint32> {
+    default Uint32 getValue() {
+        // FIXME: YANGTOOLS-908: verifyNotNull() should not be needed here
+        return verifyNotNull(argument());
     }
 }
index 1e62d37c680dac863baa32b8f673b43d026d501d..bdfae0e704b195d9beb321b0fc5a647084e8c978 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.bit;
 
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Uint32;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.BitEffectiveStatement;
@@ -22,7 +23,7 @@ public final class BitEffectiveStatementImpl extends AbstractEffectiveDocumented
 
     private final QName qname;
     private final SchemaPath schemaPath;
-    private final Long declaredPosition;
+    private final Uint32 declaredPosition;
 
     BitEffectiveStatementImpl(final StmtContext<QName, BitStatement, ?> ctx) {
         super(ctx);
@@ -30,7 +31,7 @@ public final class BitEffectiveStatementImpl extends AbstractEffectiveDocumented
         qname = ctx.getStatementArgument();
         schemaPath = ctx.getSchemaPath().get();
 
-        Long declaredPositionInit = null;
+        Uint32 declaredPositionInit = null;
         for (final EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements()) {
             if (effectiveStatement instanceof PositionEffectiveStatement) {
                 declaredPositionInit = ((PositionEffectiveStatement) effectiveStatement).argument();
@@ -40,7 +41,7 @@ public final class BitEffectiveStatementImpl extends AbstractEffectiveDocumented
         declaredPosition = declaredPositionInit;
     }
 
-    public Long getDeclaredPosition() {
+    public Uint32 getDeclaredPosition() {
         return declaredPosition;
     }
 
index 63304430838df5912725655398791cf4321b7ef9..542bc2fd2419c6f63af301a7dcfa792ab54eb09d 100644 (file)
@@ -7,12 +7,13 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.position;
 
+import org.opendaylight.yangtools.yang.common.Uint32;
 import org.opendaylight.yangtools.yang.model.api.stmt.PositionEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.PositionStatement;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredEffectiveStatement;
 
 abstract class AbstractPositionEffectiveStatement
-        extends AbstractDeclaredEffectiveStatement.DefaultArgument<Long, PositionStatement>
+        extends AbstractDeclaredEffectiveStatement.DefaultArgument<Uint32, PositionStatement>
         implements PositionEffectiveStatement {
     AbstractPositionEffectiveStatement(final PositionStatement declared) {
         super(declared);
index d9c0b19b9bd70aef58977c35fd77fef374a222eb..46dd7db10c20f41d17ef6f53f750e02c21b4749e 100644 (file)
@@ -7,13 +7,14 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.position;
 
+import org.opendaylight.yangtools.yang.common.Uint32;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
 import org.opendaylight.yangtools.yang.model.api.stmt.PositionStatement;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.ArgumentToString;
 
-abstract class AbstractPositionStatement extends ArgumentToString<Long> implements PositionStatement {
-    AbstractPositionStatement(final Long argument) {
+abstract class AbstractPositionStatement extends ArgumentToString<Uint32> implements PositionStatement {
+    AbstractPositionStatement(final Uint32 argument) {
         super(argument);
     }
 
index 9c494cb38c1985ad2fbee805d26fba6884e2477c..71423ae8c5bcb0b5a402916bb0c02fb6a86ec42d 100644 (file)
@@ -7,8 +7,10 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.position;
 
+import org.opendaylight.yangtools.yang.common.Uint32;
+
 final class EmptyPositionStatement extends AbstractPositionStatement {
-    EmptyPositionStatement(final Long argument) {
+    EmptyPositionStatement(final Uint32 argument) {
         super(argument);
     }
 }
index 8e013368547d906c4b526c3dbba056c1a8eb4f15..bd0a57179d7c74119e21fdea4835c4f3b03d6fbf 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.position;
 
 import com.google.common.collect.ImmutableList;
+import org.opendaylight.yangtools.yang.common.Uint32;
 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;
@@ -19,7 +20,7 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 
 public final class PositionStatementSupport
-        extends BaseInternedStatementSupport<Long, PositionStatement, PositionEffectiveStatement> {
+        extends BaseInternedStatementSupport<Uint32, PositionStatement, PositionEffectiveStatement> {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
         YangStmtMapping.POSITION).build();
     private static final PositionStatementSupport INSTANCE = new PositionStatementSupport();
@@ -33,10 +34,10 @@ public final class PositionStatementSupport
     }
 
     @Override
-    public Long parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
+    public Uint32 parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
         try {
-            return Long.parseLong(value);
-        } catch (NumberFormatException e) {
+            return Uint32.valueOf(value).intern();
+        } catch (IllegalArgumentException e) {
             throw new SourceException(String.format("Bit position value %s is not valid integer", value),
                     ctx.getStatementSourceReference(), e);
         }
@@ -48,13 +49,13 @@ public final class PositionStatementSupport
     }
 
     @Override
-    protected PositionStatement createDeclared(final Long argument,
+    protected PositionStatement createDeclared(final Uint32 argument,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
         return new RegularPositionStatement(argument, substatements);
     }
 
     @Override
-    protected PositionStatement createEmptyDeclared(final Long argument) {
+    protected PositionStatement createEmptyDeclared(final Uint32 argument) {
         return new EmptyPositionStatement(argument);
     }
 
@@ -65,7 +66,7 @@ public final class PositionStatementSupport
 
     @Override
     protected PositionEffectiveStatement createEffective(
-            final StmtContext<Long, PositionStatement, PositionEffectiveStatement> ctx,
+            final StmtContext<Uint32, PositionStatement, PositionEffectiveStatement> ctx,
             final PositionStatement declared, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         return new RegularPositionEffectiveStatement(declared, substatements);
     }
index 84a82c2e146ece88fc078f06b47f74a7ca84b455..fe14dcf69d03b531a1806b5dc70750114a6d91a7 100644 (file)
@@ -10,12 +10,13 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.position;
 import com.google.common.collect.ImmutableList;
 import java.util.Collection;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.yang.common.Uint32;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 
 final class RegularPositionStatement extends AbstractPositionStatement {
     private final @NonNull Object substatements;
 
-    RegularPositionStatement(final Long argument,
+    RegularPositionStatement(final Uint32 argument,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
         super(argument);
         this.substatements = maskList(substatements);
index 0d1b49a2a3664f4b293fa1ea33786cda322dee05..25aefb4a3ebe4405c4debe155037ffdeb79f26cd 100644 (file)
@@ -49,7 +49,7 @@ public final class BitsSpecificationEffectiveStatement extends
                         effectivePos = 0L;
                     }
                 } else {
-                    effectivePos = bitSubStmt.getDeclaredPosition();
+                    effectivePos = bitSubStmt.getDeclaredPosition().toJava();
                 }
 
                 final Bit bit = EffectiveTypeUtil.buildBit(bitSubStmt, effectivePos);
index b331ab61154e7c681320b1f02258d3bfe9d65748..35f82ba354560152b6dc43ba0ab80f003aba02f7 100644 (file)
@@ -46,7 +46,7 @@ final class BitsTypeEffectiveStatementImpl extends DeclaredEffectiveStatementBas
                 if (bitSubStmt.getDeclaredPosition() == null) {
                     effectivePos = getBaseTypeBitPosition(bitSubStmt.getName(), baseType, ctx);
                 } else {
-                    effectivePos = bitSubStmt.getDeclaredPosition();
+                    effectivePos = bitSubStmt.getDeclaredPosition().toJava();
                 }
 
                 builder.addBit(EffectiveTypeUtil.buildBit(bitSubStmt, effectivePos));