Add CopyPolicy.EXACT_REPLICA
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / length / LengthStatementSupport.java
index eed28a0ce2e4ef37b62b7408b436d08b72a977f1..dcf0b1afd9c480d7071a67ced6554db6ac0cad88 100644 (file)
@@ -21,7 +21,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.LengthStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.UnresolvedNumber;
 import org.opendaylight.yangtools.yang.model.api.stmt.ValueRange;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.ArgumentUtils;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseStatementSupport;
+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.InferenceException;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
@@ -29,7 +29,7 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 
 public final class LengthStatementSupport
-        extends BaseStatementSupport<List<ValueRange>, LengthStatement, LengthEffectiveStatement> {
+        extends AbstractStatementSupport<List<ValueRange>, LengthStatement, LengthEffectiveStatement> {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(YangStmtMapping
         .LENGTH)
         .addOptional(YangStmtMapping.DESCRIPTION)
@@ -40,7 +40,7 @@ public final class LengthStatementSupport
     private static final LengthStatementSupport INSTANCE = new LengthStatementSupport();
 
     private LengthStatementSupport() {
-        super(YangStmtMapping.LENGTH, CopyPolicy.CONTEXT_INDEPENDENT);
+        super(YangStmtMapping.LENGTH, StatementPolicy.contextIndependent());
     }
 
     public static LengthStatementSupport getInstance() {
@@ -60,18 +60,18 @@ public final class LengthStatementSupport
                 max = parseIntegerConstraintValue(ctx, boundaries.next());
 
                 // if min larger than max then error
-                SourceException.throwIf(ArgumentUtils.compareNumbers(min, max) == 1, ctx.getStatementSourceReference(),
-                        "Length constraint %s has descending order of boundaries; should be ascending.", singleRange);
-                SourceException.throwIf(boundaries.hasNext(), ctx.getStatementSourceReference(),
-                        "Wrong number of boundaries in length constraint %s.", singleRange);
+                SourceException.throwIf(ArgumentUtils.compareNumbers(min, max) == 1, ctx,
+                    "Length constraint %s has descending order of boundaries; should be ascending.", singleRange);
+                SourceException.throwIf(boundaries.hasNext(), ctx,
+                    "Wrong number of boundaries in length constraint %s.", singleRange);
             } else {
                 max = min;
             }
 
             // some of intervals overlapping
-            InferenceException.throwIf(ranges.size() > 1
-                && ArgumentUtils.compareNumbers(min, Iterables.getLast(ranges).upperBound()) != 1,
-                        ctx.getStatementSourceReference(),  "Some of the length ranges in %s are not disjoint", value);
+            InferenceException.throwIf(
+                ranges.size() > 1 && ArgumentUtils.compareNumbers(min, Iterables.getLast(ranges).upperBound()) != 1,
+                ctx, "Some of the length ranges in %s are not disjoint", value);
             ranges.add(ValueRange.of(min, max));
         }
 
@@ -86,13 +86,12 @@ public final class LengthStatementSupport
     @Override
     protected LengthStatement createDeclared(final StmtContext<List<ValueRange>, LengthStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new RegularLengthStatement(ctx.coerceRawStatementArgument(), ctx.coerceStatementArgument(),
-            substatements);
+        return new RegularLengthStatement(ctx.getRawArgument(), ctx.getArgument(), substatements);
     }
 
     @Override
     protected LengthStatement createEmptyDeclared(final StmtContext<List<ValueRange>, LengthStatement, ?> ctx) {
-        return new EmptyLengthStatement(ctx.coerceRawStatementArgument(), ctx.coerceStatementArgument());
+        return new EmptyLengthStatement(ctx.getRawArgument(), ctx.getArgument());
     }
 
     @Override
@@ -113,7 +112,7 @@ public final class LengthStatementSupport
         try {
             return new BigInteger(value);
         } catch (final NumberFormatException e) {
-            throw new SourceException(ctx.getStatementSourceReference(), e, "Value %s is not a valid integer", value);
+            throw new SourceException(ctx, e, "Value %s is not a valid integer", value);
         }
     }
 }
\ No newline at end of file