Bug 5200: Yang parser doesn't fill error-app-tag and error-message in constraints
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / rfc6020 / TypeUtils.java
index 3aee37027267ebd1a1e1c8f3e7db7d3bb1b1d355..11f460ae540a802d3b9338c026aaf3b80a510823 100644 (file)
@@ -135,23 +135,19 @@ public final class TypeUtils {
                 max = parseDecimalConstraintValue(ctx, boundaries.next());
 
                 // if min larger than max then error
-                if (compareNumbers(min, max) == 1) {
-                    throw new InferenceException(String.format(
-                            "Range constraint %s has descending order of boundaries; should be ascending",
-                            singleRange), ctx.getStatementSourceReference());
-                }
-                if (boundaries.hasNext()) {
-                    throw new SourceException(String.format("Wrong number of boundaries in range constraint %s",
-                            singleRange), ctx.getStatementSourceReference());
-                }
+                InferenceException.throwIf(compareNumbers(min, max) == 1, ctx.getStatementSourceReference(),
+                        "Range constraint %s has descending order of boundaries; should be ascending", singleRange);
+
+                SourceException.throwIf(boundaries.hasNext(), ctx.getStatementSourceReference(),
+                    "Wrong number of boundaries in range constraint %s", singleRange);
             } else {
                 max = min;
             }
 
             // some of intervals overlapping
             if (rangeConstraints.size() > 1 && compareNumbers(min, Iterables.getLast(rangeConstraints).getMax()) != 1) {
-                throw new InferenceException(String.format("Some of the ranges in %s are not disjoint",
-                        rangeArgument), ctx.getStatementSourceReference());
+                throw new InferenceException(ctx.getStatementSourceReference(),
+                    "Some of the ranges in %s are not disjoint", rangeArgument);
             }
 
             rangeConstraints.add(new RangeConstraintEffectiveImpl(min, max, description, reference));
@@ -161,13 +157,13 @@ public final class TypeUtils {
     }
 
     public static List<LengthConstraint> parseLengthListFromString(final StmtContext<?, ?, ?> ctx,
-            final String rangeArgument) {
+            final String lengthArgument) {
         Optional<String> description = Optional.absent();
         Optional<String> reference = Optional.absent();
 
-        List<LengthConstraint> rangeConstraints = new ArrayList<>();
+        List<LengthConstraint> lengthConstraints = new ArrayList<>();
 
-        for (final String singleRange : PIPE_SPLITTER.split(rangeArgument)) {
+        for (final String singleRange : PIPE_SPLITTER.split(lengthArgument)) {
             final Iterator<String> boundaries = TWO_DOTS_SPLITTER.splitToList(singleRange).iterator();
             final Number min = parseIntegerConstraintValue(ctx, boundaries.next());
 
@@ -187,15 +183,15 @@ public final class TypeUtils {
             }
 
             // some of intervals overlapping
-            if (rangeConstraints.size() > 1 && compareNumbers(min, Iterables.getLast(rangeConstraints).getMax()) != 1) {
-                throw new InferenceException(String.format("Some of the length ranges in %s are not disjoint",
-                        rangeArgument), ctx.getStatementSourceReference());
+            if (lengthConstraints.size() > 1 && compareNumbers(min, Iterables.getLast(lengthConstraints).getMax()) != 1) {
+                throw new InferenceException(ctx.getStatementSourceReference(),
+                    "Some of the length ranges in %s are not disjoint", lengthArgument);
             }
 
-            rangeConstraints.add(new LengthConstraintEffectiveImpl(min, max, description, reference));
+            lengthConstraints.add(new LengthConstraintEffectiveImpl(min, max, description, reference));
         }
 
-        return rangeConstraints;
+        return lengthConstraints;
     }
 
     public static boolean isYangTypeBodyStmtString(final String typeName) {