BUG-4268: clarify length constraint API contract
[yangtools.git] / yang / yang-model-util / src / main / java / org / opendaylight / yangtools / yang / model / util / type / LengthRestrictedTypeBuilder.java
index 127457c65baad927dfadb0cbde3980cb3b589ca9..9c1b84bec477e1c54716b40dcacabc9654003fa8 100644 (file)
@@ -138,12 +138,12 @@ public abstract class LengthRestrictedTypeBuilder<T extends TypeDefinition<T>> e
 
     @Override
     final T buildType() {
+        final List<LengthConstraint> baseLengths = findLenghts();
+
         if (lengthAlternatives == null || lengthAlternatives.isEmpty()) {
-            return buildType(ImmutableList.<LengthConstraint>of());
+            return buildType(baseLengths);
         }
 
-        final List<LengthConstraint> baseLengths = findLenghts();
-
         // Run through alternatives and resolve them against the base type
         final List<LengthConstraint> resolvedLengths = ensureResolvedLengths(lengthAlternatives, baseLengths);
 
@@ -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);