BUG-8043: correct RangeConstraint definition
[yangtools.git] / yang / yang-model-util / src / main / java / org / opendaylight / yangtools / yang / model / util / type / RestrictedTypes.java
index c5e6a2fa7e73dd94d16b40f302eff56ba0400766..1bba04d09ae1c11136c8500450ae37aaea1d1a80 100644 (file)
@@ -7,11 +7,9 @@
  */
 package org.opendaylight.yangtools.yang.model.util.type;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-
 import com.google.common.annotations.Beta;
-import java.util.List;
 import javax.annotation.Nonnull;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition;
@@ -24,6 +22,7 @@ import org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefi
 import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
+import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
 import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition;
@@ -71,12 +70,12 @@ public final class RestrictedTypes {
             @Nonnull final BinaryTypeDefinition baseType, @Nonnull final SchemaPath path) {
         return new LengthRestrictedTypeBuilder<BinaryTypeDefinition>(baseType, path) {
             @Override
-            BinaryTypeDefinition buildType(final List<LengthConstraint> lengthConstraints) {
-                return new RestrictedBinaryType(getBaseType(), getPath(), getUnknownSchemaNodes(), lengthConstraints);
+            BinaryTypeDefinition buildType(final @Nullable LengthConstraint lengthConstraint) {
+                return new RestrictedBinaryType(getBaseType(), getPath(), getUnknownSchemaNodes(), lengthConstraint);
             }
 
             @Override
-            List<LengthConstraint> typeLengthConstraints() {
+            LengthConstraint typeLengthConstraints() {
                 /**
                  * Length constraint imposed on YANG binary type by our implementation. byte[].length is an integer,
                  * capping our ability to support arbitrary binary data.
@@ -102,11 +101,10 @@ public final class RestrictedTypes {
 
     public static RangeRestrictedTypeBuilder<DecimalTypeDefinition> newDecima64Builder(
             final DecimalTypeDefinition baseType, final SchemaPath path) {
-        return new RangeRestrictedTypeBuilder<DecimalTypeDefinition>(checkNotNull(baseType), path) {
+        return new RangeRestrictedTypeBuilderWithBase<DecimalTypeDefinition>(baseType, path) {
             @Override
-            DecimalTypeDefinition buildType() {
-                return new RestrictedDecimalType(getBaseType(), getPath(), getUnknownSchemaNodes(),
-                    calculateRangeConstraints(getBaseType().getRangeConstraints()));
+            DecimalTypeDefinition buildType(final RangeConstraint<?> rangeConstraint) {
+                return new RestrictedDecimalType(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint);
             }
         };
     }
@@ -157,11 +155,10 @@ public final class RestrictedTypes {
 
     public static RangeRestrictedTypeBuilder<IntegerTypeDefinition> newIntegerBuilder(
             final IntegerTypeDefinition baseType, final SchemaPath path) {
-        return new RangeRestrictedTypeBuilder<IntegerTypeDefinition>(checkNotNull(baseType), path) {
+        return new RangeRestrictedTypeBuilderWithBase<IntegerTypeDefinition>(baseType, path) {
             @Override
-            IntegerTypeDefinition buildType() {
-                return new RestrictedIntegerType(getBaseType(), getPath(), getUnknownSchemaNodes(),
-                    calculateRangeConstraints(getBaseType().getRangeConstraints()));
+            IntegerTypeDefinition buildType(final RangeConstraint<?> rangeConstraint) {
+                return new RestrictedIntegerType(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint);
             }
         };
     }
@@ -182,11 +179,10 @@ public final class RestrictedTypes {
 
     public static RangeRestrictedTypeBuilder<UnsignedIntegerTypeDefinition> newUnsignedBuilder(
             final UnsignedIntegerTypeDefinition baseType, final SchemaPath path) {
-        return new RangeRestrictedTypeBuilder<UnsignedIntegerTypeDefinition>(checkNotNull(baseType), path) {
+        return new RangeRestrictedTypeBuilderWithBase<UnsignedIntegerTypeDefinition>(baseType, path) {
             @Override
-            UnsignedIntegerTypeDefinition buildType() {
-                return new RestrictedUnsignedType(getBaseType(), getPath(), getUnknownSchemaNodes(),
-                    calculateRangeConstraints(getBaseType().getRangeConstraints()));
+            UnsignedIntegerTypeDefinition buildType(final RangeConstraint<?> rangeConstraint) {
+                return new RestrictedUnsignedType(getBaseType(), getPath(), getUnknownSchemaNodes(), rangeConstraint);
             }
         };
     }