From: Robert Varga Date: Wed, 18 Nov 2015 19:37:01 +0000 (+0100) Subject: BUG-4268: clarify length constraint API contract X-Git-Tag: release/boron~179 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=20520b4759e5c5dc4e30033eb0a6aa6cd4d3e20e;p=yangtools.git BUG-4268: clarify length constraint API contract The contract did not specify whether the returned constraints are declared or effective. The intent is to return effective constraints, which include any constraints imposed by base types -- as is the case with range constraints. Change-Id: I0d0582edf87c0a78db3e8664655f139f827217a7 Signed-off-by: Robert Varga --- diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/BinaryTypeDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/BinaryTypeDefinition.java index 8d87fca773..b097fd3d87 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/BinaryTypeDefinition.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/BinaryTypeDefinition.java @@ -8,7 +8,6 @@ package org.opendaylight.yangtools.yang.model.api.type; import java.util.List; - import org.opendaylight.yangtools.yang.model.api.TypeDefinition; /** @@ -20,21 +19,21 @@ import org.opendaylight.yangtools.yang.model.api.TypeDefinition; * 4).
* The canonical form of a binary value follows the rules in [RFC4648]. - * + * *
*
* This interface was modeled according to definition in [RFC-6020] The binary * Built-In Type - * */ public interface BinaryTypeDefinition extends TypeDefinition { /** - * Returns List of number of octets that binary value contains. - * + * Returns List of number of octets that binary value contains. These are the effective constraints, e.g. they include + * any range constraints imposed by base types. + * * @return List of number of octets that binary value contains. - * + * * @see LengthConstraint */ List getLengthConstraints(); diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/StringTypeDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/StringTypeDefinition.java index b8fcb0b4e4..958e796e51 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/StringTypeDefinition.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/StringTypeDefinition.java @@ -8,28 +8,28 @@ package org.opendaylight.yangtools.yang.model.api.type; import java.util.List; - import org.opendaylight.yangtools.yang.model.api.TypeDefinition; /** - * + * * Contains method for getting data from the string YANG built-in * type. */ public interface StringTypeDefinition extends TypeDefinition { /** - * Returns length constraint specified in the string. - * + * Returns length constraint specified in the string. These are the effective constraints, e.g. they include + * any length constraints implied by base types. + * * @return list of length constraint which are specified in the - * lenght substatement of the type + * length substatement of the type * statement */ List getLengthConstraints(); /** * Returns patterns specified in the string. - * + * * @return list of pattern constraints which are specified in the * pattern substatement of the type * statement diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/LengthRestrictedTypeBuilder.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/LengthRestrictedTypeBuilder.java index fe217561b1..9c1b84bec4 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/LengthRestrictedTypeBuilder.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/LengthRestrictedTypeBuilder.java @@ -138,12 +138,12 @@ public abstract class LengthRestrictedTypeBuilder> e @Override final T buildType() { + final List baseLengths = findLenghts(); + if (lengthAlternatives == null || lengthAlternatives.isEmpty()) { - return buildType(ImmutableList.of()); + return buildType(baseLengths); } - final List baseLengths = findLenghts(); - // Run through alternatives and resolve them against the base type final List resolvedLengths = ensureResolvedLengths(lengthAlternatives, baseLengths); diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/retest/YangParserTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/retest/YangParserTest.java index 66e65c4381..72771f6c04 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/retest/YangParserTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/retest/YangParserTest.java @@ -241,7 +241,7 @@ public class YangParserTest { assertEquals(1, patterns.size()); PatternConstraint pattern = patterns.iterator().next(); assertEquals("^[e-z]*$", pattern.getRegularExpression()); - assertTrue(type.getLengthConstraints().isEmpty()); + assertEquals(1, type.getLengthConstraints().size()); StringTypeDefinition baseType1 = type.getBaseType(); QName baseType1QName = baseType1.getQName(); @@ -254,7 +254,7 @@ public class YangParserTest { assertEquals(1, patterns.size()); pattern = patterns.iterator().next(); assertEquals("^[b-u]*$", pattern.getRegularExpression()); - assertTrue(baseType1.getLengthConstraints().isEmpty()); + assertEquals(1, baseType1.getLengthConstraints().size()); StringTypeDefinition baseType2 = baseType1.getBaseType(); QName baseType2QName = baseType2.getQName(); @@ -331,7 +331,7 @@ public class YangParserTest { assertEquals(1, patterns.size()); PatternConstraint pattern = patterns.iterator().next(); assertEquals("^[e-z]*$", pattern.getRegularExpression()); - assertTrue(type.getLengthConstraints().isEmpty()); + assertEquals(1, type.getLengthConstraints().size()); final LeafSchemaNode multiplePatternDirectStringDefLeaf = (LeafSchemaNode) foo .getDataChildByName("multiple-pattern-direct-string-def-leaf");