Implemented range validation (Bug 178).
[mdsal.git] / code-generator / binding-generator-util / src / main / java / org / opendaylight / yangtools / binding / generator / util / BindingGeneratorUtil.java
index 57e319f5904aacbf7146988bbd99136d40b52742..6e961701e907549ee6071a9535fc03191f4329d1 100644 (file)
@@ -26,9 +26,12 @@ import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
 import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
 import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
+import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition;
 import org.opendaylight.yangtools.yang.model.util.ExtendedType;
 
 /**
@@ -404,9 +407,19 @@ public final class BindingGeneratorUtil {
 
         if (type instanceof ExtendedType) {
             ExtendedType ext = (ExtendedType)type;
+            TypeDefinition<?> base = ext.getBaseType();
             length.addAll(ext.getLengthConstraints());
             pattern.addAll(ext.getPatternConstraints());
             range.addAll(ext.getRangeConstraints());
+
+            if (base instanceof IntegerTypeDefinition && range.isEmpty()) {
+                range.addAll(((IntegerTypeDefinition)base).getRangeConstraints());
+            } else if (base instanceof UnsignedIntegerTypeDefinition && range.isEmpty()) {
+                range.addAll(((UnsignedIntegerTypeDefinition)base).getRangeConstraints());
+            } else if (base instanceof DecimalTypeDefinition && range.isEmpty()) {
+                range.addAll(((DecimalTypeDefinition)base).getRangeConstraints());
+            }
+
         }
 
         return new Restrictions() {