package org.opendaylight.yangtools.yang.model.util.type;
import com.google.common.annotations.Beta;
+import com.google.common.base.Preconditions;
+import java.util.List;
import javax.annotation.Nonnull;
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.InstanceIdentifierTypeDefinition;
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.StringTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition;
public static LengthRestrictedTypeBuilder<BinaryTypeDefinition> newBinaryBuilder(@Nonnull final BinaryTypeDefinition baseType, @Nonnull final SchemaPath path) {
return new LengthRestrictedTypeBuilder<BinaryTypeDefinition>(baseType, path) {
@Override
- BinaryTypeDefinition buildType() {
- return new RestrictedBinaryType(getBaseType(), getPath(), getUnknownSchemaNodes(),
- calculateLenghtConstraints(getBaseType().getLengthConstraints()));
+ BinaryTypeDefinition buildType(final List<LengthConstraint> lengthConstraints) {
+ return new RestrictedBinaryType(getBaseType(), getPath(), getUnknownSchemaNodes(), lengthConstraints);
+ }
+
+ @Override
+ List<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.
+ */
+ return JavaLengthConstraints.INTEGER_SIZE_CONSTRAINTS;
+ }
+
+ @Override
+ List<LengthConstraint> getLengthConstraints(final BinaryTypeDefinition type) {
+ return type.getLengthConstraints();
}
};
}
}
public static RangeRestrictedTypeBuilder<DecimalTypeDefinition> newDecima64Builder(final DecimalTypeDefinition baseType, final SchemaPath path) {
- return new RangeRestrictedTypeBuilder<DecimalTypeDefinition>(baseType, path) {
+ return new RangeRestrictedTypeBuilder<DecimalTypeDefinition>(Preconditions.checkNotNull(baseType), path) {
@Override
DecimalTypeDefinition buildType() {
return new RestrictedDecimalType(getBaseType(), getPath(), getUnknownSchemaNodes(),
}
public static RangeRestrictedTypeBuilder<IntegerTypeDefinition> newIntegerBuilder(final IntegerTypeDefinition baseType, final SchemaPath path) {
- return new RangeRestrictedTypeBuilder<IntegerTypeDefinition>(baseType, path) {
+ return new RangeRestrictedTypeBuilder<IntegerTypeDefinition>(Preconditions.checkNotNull(baseType), path) {
@Override
IntegerTypeDefinition buildType() {
return new RestrictedIntegerType(getBaseType(), getPath(), getUnknownSchemaNodes(),
}
public static RangeRestrictedTypeBuilder<UnsignedIntegerTypeDefinition> newUnsignedBuilder(final UnsignedIntegerTypeDefinition baseType, final SchemaPath path) {
- return new RangeRestrictedTypeBuilder<UnsignedIntegerTypeDefinition>(baseType, path) {
+ return new RangeRestrictedTypeBuilder<UnsignedIntegerTypeDefinition>(Preconditions.checkNotNull(baseType), path) {
@Override
UnsignedIntegerTypeDefinition buildType() {
return new RestrictedUnsignedType(getBaseType(), getPath(), getUnknownSchemaNodes(),