Bug 5200: Yang parser doesn't fill error-app-tag and error-message in constraints
[yangtools.git] / yang / yang-model-util / src / main / java / org / opendaylight / yangtools / yang / model / util / type / LengthRestrictedTypeBuilder.java
index 127457c65baad927dfadb0cbde3980cb3b589ca9..eb590a91287d42a3937183ab506233dce3afc4e4 100644 (file)
@@ -63,7 +63,7 @@ public abstract class LengthRestrictedTypeBuilder<T extends TypeDefinition<T>> e
                         ((UnresolvedNumber)min).resolveLength(baseLengthConstraints) : min;
 
                 builder.add(BaseConstraints.newLengthConstraint(rMin, rMax, Optional.fromNullable(c.getDescription()),
-                    Optional.fromNullable(c.getReference())));
+                    Optional.fromNullable(c.getReference()), c.getErrorAppTag(), c.getErrorMessage()));
             } else {
                 builder.add(c);
             }
@@ -101,7 +101,7 @@ public abstract class LengthRestrictedTypeBuilder<T extends TypeDefinition<T>> e
                         c, clazz.getSimpleName()), e);
                 }
                 builder.add(BaseConstraints.newLengthConstraint(min, max, Optional.fromNullable(c.getDescription()),
-                    Optional.fromNullable(c.getReference())));
+                    Optional.fromNullable(c.getReference()), c.getErrorAppTag(), c.getErrorMessage()));
             } else {
                 builder.add(c);
             }
@@ -153,8 +153,10 @@ public abstract class LengthRestrictedTypeBuilder<T extends TypeDefinition<T>> e
 
         // Now verify if new ranges are strict subset of base ranges
         for (LengthConstraint c : typedLengths) {
-            Preconditions.checkArgument(lengthCovered(baseLengths, c),
-                "Range constraint %s is not a subset of parent constraints %s", c, baseLengths);
+            if (!lengthCovered(baseLengths, c)) {
+                throw new InvalidLengthConstraintException(c, "Length constraint %s is not a subset of parent constraints %s",
+                c, baseLengths);
+            }
         }
 
         return buildType(typedLengths);