From: Robert Varga Date: Fri, 27 Oct 2017 17:47:03 +0000 (+0200) Subject: Make ConstraintMetaDefition attributes Optional X-Git-Tag: v2.0.0~130 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=e0b993afbbf5d1de7d7614f886d924ccd1a83ac2;hp=2054904b3b523721c08a750e3f298977a1f933ff;p=yangtools.git Make ConstraintMetaDefition attributes Optional Both error message and application tag can be null, wrap them in an Optional, reducing confusion for users around empty string semantics in their values. Change-Id: Ie96850655b23bda81c864e3804b21e05ace5acbe Signed-off-by: Robert Varga --- diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/CompiledPatternContext.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/CompiledPatternContext.java index 2977f3ef6e..a42b2a46f2 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/CompiledPatternContext.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/CompiledPatternContext.java @@ -7,9 +7,6 @@ */ package org.opendaylight.yangtools.yang.data.impl.codec; -import static com.google.common.base.Preconditions.checkArgument; - -import com.google.common.base.Strings; import java.util.regex.Pattern; import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint; @@ -20,15 +17,17 @@ class CompiledPatternContext { CompiledPatternContext(final PatternConstraint yangConstraint) { pattern = Pattern.compile("^" + yangConstraint.getRegularExpression() + "$"); - final String yangMessage = yangConstraint.getErrorMessage(); - if (Strings.isNullOrEmpty(yangMessage)) { - errorMessage = "Value %s does not match regular expression <" + pattern.pattern() + ">"; - } else { - errorMessage = yangMessage; - } + errorMessage = yangConstraint.getErrorMessage().orElse(null); } - public void validate(final String str) { - checkArgument(pattern.matcher(str).matches(), errorMessage, str); + void validate(final String str) { + if (!pattern.matcher(str).matches()) { + if (errorMessage != null) { + throw new IllegalArgumentException(errorMessage); + } + + throw new IllegalArgumentException("Value " + str + "does not match regular expression '" + + pattern.pattern() + "'"); + } } } diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codecs/StringPatternCheckingCodecTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codecs/StringPatternCheckingCodecTest.java index 39ea191594..6dc9c686d0 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codecs/StringPatternCheckingCodecTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codecs/StringPatternCheckingCodecTest.java @@ -10,7 +10,6 @@ package org.opendaylight.yangtools.yang.data.impl.codecs; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.opendaylight.yangtools.yang.data.impl.codecs.TypeDefinitionAwareCodecTestHelper.getCodec; @@ -62,8 +61,7 @@ public class StringPatternCheckingCodecTest { fail("Exception should have been thrown."); } catch (final IllegalArgumentException ex) { LOG.debug("IllegalArgumentException was thrown as expected: {}", ex); - assertTrue(ex.getMessage().contains( - "Supplied value does not match the regular expression ^[A-Z]+$. [abcd]")); + assertEquals("Supplied value does not match the regular expression ^[A-Z]+$.", ex.getMessage()); } } } diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ConstraintMetaDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ConstraintMetaDefinition.java index c662881d6d..a02851319b 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ConstraintMetaDefinition.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ConstraintMetaDefinition.java @@ -7,6 +7,8 @@ */ package org.opendaylight.yangtools.yang.model.api; +import java.util.Optional; + /** * Contains methods which retrieve values for description, error message, error app tag and reference (to some external * definition, resource or similar). @@ -14,18 +16,16 @@ package org.opendaylight.yangtools.yang.model.api; public interface ConstraintMetaDefinition extends DocumentedNode { /** - * Returns the value of the argument of YANG error-app-tag - * keyword. + * Returns the value of the argument of YANG error-app-tag keyword. * - * @return string with the application tag + * @return string with the application tag, or empty if it was not provided. */ - String getErrorAppTag(); + Optional getErrorAppTag(); /** - * Returns the value of the argument of YANG error-message - * keyword. + * Returns the value of the argument of YANG error-message keyword. * - * @return string with the error message + * @return string with the error message, or empty if it was not provided. */ - String getErrorMessage(); + Optional getErrorMessage(); } diff --git a/yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/SchemaContextEmitter.java b/yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/SchemaContextEmitter.java index b1375c6bb1..b094017021 100644 --- a/yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/SchemaContextEmitter.java +++ b/yang/yang-model-export/src/main/java/org/opendaylight/yangtools/yang/model/export/SchemaContextEmitter.java @@ -1514,8 +1514,8 @@ abstract class SchemaContextEmitter { if (!list.isEmpty()) { super.writer.startRangeNode(toRangeString(list)); final RangeConstraint first = list.iterator().next(); - emitErrorMessageNode(first.getErrorMessage()); - emitErrorAppTagNode(first.getErrorAppTag()); + first.getErrorMessage().ifPresent(this::emitErrorMessageNode); + first.getErrorAppTag().ifPresent(this::emitErrorAppTagNode); emitDescriptionNode(first.getDescription()); emitReferenceNode(first.getReference()); super.writer.endNode(); @@ -1544,8 +1544,8 @@ abstract class SchemaContextEmitter { private void emitLength(final LengthConstraint constraint) { super.writer.startLengthNode(toLengthString(constraint.getAllowedRanges())); - emitErrorMessageNode(constraint.getErrorMessage()); - emitErrorAppTagNode(constraint.getErrorAppTag()); + constraint.getErrorMessage().ifPresent(this::emitErrorMessageNode); + constraint.getErrorAppTag().ifPresent(this::emitErrorAppTagNode); emitDescriptionNode(constraint.getDescription()); emitReferenceNode(constraint.getReference()); super.writer.endNode(); @@ -1599,10 +1599,8 @@ abstract class SchemaContextEmitter { private void emitPatternNode(final PatternConstraint pattern) { super.writer.startPatternNode(pattern.getRawRegularExpression()); - // FIXME: BUG-2444: Optional - emitErrorMessageNode(pattern.getErrorMessage()); - // FIXME: BUG-2444: Optional - emitErrorAppTagNode(pattern.getErrorAppTag()); + pattern.getErrorMessage().ifPresent(this::emitErrorMessageNode); + pattern.getErrorAppTag().ifPresent(this::emitErrorAppTagNode); emitDescriptionNode(pattern.getDescription()); emitModifier(pattern.getModifier()); super.writer.endNode(); @@ -1732,8 +1730,8 @@ abstract class SchemaContextEmitter { private void emitMust(@Nullable final MustDefinition mustCondition) { if (mustCondition != null && mustCondition.getXpath() != null) { super.writer.startMustNode(mustCondition.getXpath()); - emitErrorMessageNode(mustCondition.getErrorMessage()); - emitErrorAppTagNode(mustCondition.getErrorAppTag()); + mustCondition.getErrorMessage().ifPresent(this::emitErrorMessageNode); + mustCondition.getErrorAppTag().ifPresent(this::emitErrorAppTagNode); emitDescriptionNode(mustCondition.getDescription()); emitReferenceNode(mustCondition.getReference()); super.writer.endNode(); @@ -1742,17 +1740,13 @@ abstract class SchemaContextEmitter { } private void emitErrorMessageNode(@Nullable final String input) { - if (input != null && !input.isEmpty()) { - super.writer.startErrorMessageNode(input); - super.writer.endNode(); - } + super.writer.startErrorMessageNode(input); + super.writer.endNode(); } private void emitErrorAppTagNode(final String input) { - if (input != null && !input.isEmpty()) { - super.writer.startErrorAppTagNode(input); - super.writer.endNode(); - } + super.writer.startErrorAppTagNode(input); + super.writer.endNode(); } private void emitMinElementsNode(final Integer min) { diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/PatternConstraintImpl.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/PatternConstraintImpl.java index 742d2d1e0d..bb10b18389 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/PatternConstraintImpl.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/PatternConstraintImpl.java @@ -57,13 +57,13 @@ final class PatternConstraintImpl implements PatternConstraint, Immutable { } @Override - public String getErrorAppTag() { - return errorAppTag; + public Optional getErrorAppTag() { + return Optional.ofNullable(errorAppTag); } @Override - public String getErrorMessage() { - return errorMessage; + public Optional getErrorMessage() { + return Optional.ofNullable(errorMessage); } @Override diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/RangeConstraintImpl.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/RangeConstraintImpl.java index 8ed0ad973b..a25051a654 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/RangeConstraintImpl.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/RangeConstraintImpl.java @@ -58,13 +58,13 @@ final class RangeConstraintImpl implements RangeConstraint, Immutable { } @Override - public String getErrorAppTag() { - return errorAppTag; + public Optional getErrorAppTag() { + return Optional.ofNullable(errorAppTag); } @Override - public String getErrorMessage() { - return errorMessage; + public Optional getErrorMessage() { + return Optional.ofNullable(errorMessage); } @Override diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/JavaLengthConstraints.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/JavaLengthConstraints.java index 75227153d2..216728f9d1 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/JavaLengthConstraints.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/JavaLengthConstraints.java @@ -10,6 +10,7 @@ package org.opendaylight.yangtools.yang.model.util.type; import com.google.common.collect.ImmutableRangeSet; import com.google.common.collect.Range; import com.google.common.collect.RangeSet; +import java.util.Optional; import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint; final class JavaLengthConstraints { @@ -27,13 +28,13 @@ final class JavaLengthConstraints { } @Override - public String getErrorMessage() { - return null; + public Optional getErrorMessage() { + return Optional.empty(); } @Override - public String getErrorAppTag() { - return null; + public Optional getErrorAppTag() { + return Optional.empty(); } @Override diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RangeRestrictedTypeBuilder.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RangeRestrictedTypeBuilder.java index ba71860a38..03bd31bdb9 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RangeRestrictedTypeBuilder.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RangeRestrictedTypeBuilder.java @@ -65,7 +65,8 @@ public abstract class RangeRestrictedTypeBuilder getErrorAppTag() { return meta.getErrorAppTag(); } @Override - public String getErrorMessage() { + public Optional getErrorMessage() { return meta.getErrorMessage(); } diff --git a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/PatternConstraintImplTest.java b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/PatternConstraintImplTest.java index dadeb1a793..a2b1f8fdf7 100644 --- a/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/PatternConstraintImplTest.java +++ b/yang/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/PatternConstraintImplTest.java @@ -35,9 +35,8 @@ public class PatternConstraintImplTest { assertNotNull("Object of PatternConstraintImpl shouldn't be null.", patternConstraint); assertEquals("Description should be 'test description'.", "test description", patternConstraint.getDescription()); - assertEquals("Error app tag shouldn't be null.", "invalid-regular-expression", - patternConstraint.getErrorAppTag()); - assertNotNull(patternConstraint.getErrorMessage()); + assertEquals(Optional.of("invalid-regular-expression"), patternConstraint.getErrorAppTag()); + assertTrue(patternConstraint.getErrorMessage().isPresent()); assertEquals("Reference should be equals 'RFC 6020'.", "RFC 6020", patternConstraint.getReference()); assertEquals("Regular expression should be equls '\\D'.", "\\D", patternConstraint.getRegularExpression()); assertNotEquals("Hash codes shouldn't be equals.", patternConstraint.hashCode(), patternConstraint2.hashCode()); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/MustEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/MustEffectiveStatementImpl.java index 8415ea43f1..b6a3af42cd 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/MustEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/MustEffectiveStatementImpl.java @@ -8,6 +8,7 @@ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective; import java.util.Objects; +import java.util.Optional; import org.opendaylight.yangtools.yang.model.api.MustDefinition; import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath; import org.opendaylight.yangtools.yang.model.api.stmt.MustStatement; @@ -50,13 +51,13 @@ public class MustEffectiveStatementImpl extends DeclaredEffectiveStatementBase getErrorAppTag() { + return Optional.ofNullable(errorAppTag); } @Override - public String getErrorMessage() { - return errorMessage; + public Optional getErrorMessage() { + return Optional.ofNullable(errorMessage); } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/AbstractConstraintEffectiveStatement.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/AbstractConstraintEffectiveStatement.java index 35f001c498..b936e6a363 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/AbstractConstraintEffectiveStatement.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/AbstractConstraintEffectiveStatement.java @@ -7,6 +7,7 @@ */ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type; +import java.util.Optional; import org.opendaylight.yangtools.yang.model.api.ConstraintMetaDefinition; import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; @@ -87,13 +88,13 @@ abstract class AbstractConstraintEffectiveStatement getErrorAppTag() { + return Optional.ofNullable(errorAppTag); } @Override - public final String getErrorMessage() { - return errorMessage; + public final Optional getErrorMessage() { + return Optional.ofNullable(errorMessage); } abstract A createConstraints(A argument); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/PatternConstraintEffectiveImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/PatternConstraintEffectiveImpl.java index 1df4fe9526..cb664d9693 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/PatternConstraintEffectiveImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/PatternConstraintEffectiveImpl.java @@ -58,13 +58,13 @@ public class PatternConstraintEffectiveImpl implements PatternConstraint { } @Override - public String getErrorAppTag() { - return errorAppTag; + public Optional getErrorAppTag() { + return Optional.ofNullable(errorAppTag); } @Override - public String getErrorMessage() { - return errorMessage; + public Optional getErrorMessage() { + return Optional.ofNullable(errorMessage); } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/PatternEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/PatternEffectiveStatementImpl.java index df6331fedc..8cfbbba08b 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/PatternEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/PatternEffectiveStatementImpl.java @@ -24,6 +24,7 @@ public class PatternEffectiveStatementImpl extends } return new PatternConstraintEffectiveImpl(argument.getRegularExpression(), argument.getRawRegularExpression(), - getDescription(), getReference(), getErrorAppTag(), getErrorMessage(), getModifier()); + getDescription(), getReference(), getErrorAppTag().orElse(null), getErrorMessage().orElse(null), + getModifier()); } } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/RangeConstraintEffectiveImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/RangeConstraintEffectiveImpl.java index 6c59953172..89e277d3c4 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/RangeConstraintEffectiveImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/RangeConstraintEffectiveImpl.java @@ -48,13 +48,13 @@ public class RangeConstraintEffectiveImpl implements RangeConstraint { } @Override - public String getErrorAppTag() { - return errorAppTag; + public Optional getErrorAppTag() { + return Optional.ofNullable(errorAppTag); } @Override - public String getErrorMessage() { - return errorMessage; + public Optional getErrorMessage() { + return Optional.ofNullable(errorMessage); } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/RangeEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/RangeEffectiveStatementImpl.java index 3ffe1d6726..416f6295f4 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/RangeEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/type/RangeEffectiveStatementImpl.java @@ -21,6 +21,6 @@ public class RangeEffectiveStatementImpl extends @Override final RangeConstraint createCustomizedConstraint(final RangeConstraint rangeConstraint) { return new RangeConstraintEffectiveImpl(rangeConstraint.getMin(), rangeConstraint.getMax(), - getDescription(), getReference(), getErrorAppTag(), getErrorMessage()); + getDescription(), getReference(), getErrorAppTag().orElse(null), getErrorMessage().orElse(null)); } } diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveStatementTypeTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveStatementTypeTest.java index 6b41d8e0d5..df387ffb25 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveStatementTypeTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/EffectiveStatementTypeTest.java @@ -17,6 +17,7 @@ import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.sourceForResour import com.google.common.collect.Range; import java.util.List; +import java.util.Optional; import org.junit.BeforeClass; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; @@ -406,8 +407,8 @@ public class EffectiveStatementTypeTest { assertEquals(255, span.upperEndpoint().intValue()); assertNull(lengthConstraint.getReference()); assertNull(lengthConstraint.getDescription()); - assertNull(lengthConstraint.getErrorMessage()); - assertNull(lengthConstraint.getErrorAppTag()); + assertFalse(lengthConstraint.getErrorMessage().isPresent()); + assertFalse(lengthConstraint.getErrorAppTag().isPresent()); assertNotNull(lengthConstraint.toString()); assertNotNull(lengthConstraint.hashCode()); assertFalse(lengthConstraint.equals(null)); @@ -439,9 +440,9 @@ public class EffectiveStatementTypeTest { assertEquals("^[0-9a-fA-F]*$", patternConstraint.getRegularExpression()); assertNull(patternConstraint.getReference()); assertNull(patternConstraint.getDescription()); - assertEquals("Supplied value does not match the regular expression ^[0-9a-fA-F]*$.", + assertEquals(Optional.of("Supplied value does not match the regular expression ^[0-9a-fA-F]*$."), patternConstraint.getErrorMessage()); - assertEquals("invalid-regular-expression", patternConstraint.getErrorAppTag()); + assertEquals(Optional.of("invalid-regular-expression"), patternConstraint.getErrorAppTag()); assertNotNull(patternConstraint.toString()); assertNotNull(patternConstraint.hashCode()); assertFalse(patternConstraint.equals(null)); diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/MustAndWhenStmtTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/MustAndWhenStmtTest.java index f6bc785260..8ddabcebbd 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/MustAndWhenStmtTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/MustAndWhenStmtTest.java @@ -17,6 +17,7 @@ import static org.junit.Assert.assertTrue; import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.sourceForResource; import java.util.Iterator; +import java.util.Optional; import java.util.Set; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; @@ -57,15 +58,18 @@ public class MustAndWhenStmtTest { MustDefinition mustStmt = mustsIterator.next(); assertThat(mustStmt.getXpath().toString(), anyOf(is("ifType != 'ethernet' or (ifType = 'ethernet' and " + "ifMTU = 1500)"), is("ifType != 'atm' or (ifType = 'atm' and ifMTU <= 17966 and ifMTU >= 64)"))); - assertThat(mustStmt.getErrorMessage(), anyOf(is("An ethernet MTU must be 1500"), is("An atm MTU must be 64 " - + ".. 17966"))); - assertThat(mustStmt.getErrorAppTag(), anyOf(is("An ethernet error"), is("An atm error"))); + assertThat(mustStmt.getErrorMessage(), anyOf(is(Optional.of("An ethernet MTU must be 1500")), + is(Optional.of("An atm MTU must be 64 .. 17966")))); + assertThat(mustStmt.getErrorAppTag(), anyOf(is(Optional.of("An ethernet error")), + is(Optional.of("An atm error")))); mustStmt = mustsIterator.next(); - assertThat(mustStmt.getXpath().toString(), anyOf(is("ifType != 'ethernet' or (ifType = 'ethernet' and " - + "ifMTU = 1500)"), is("ifType != 'atm' or (ifType = 'atm' and ifMTU <= 17966 and ifMTU >= 64)"))); - assertThat(mustStmt.getErrorMessage(), anyOf(is("An ethernet MTU must be 1500"), is("An atm MTU must be 64 " - + ".. 17966"))); - assertThat(mustStmt.getErrorAppTag(), anyOf(is("An ethernet error"), is("An atm error"))); + assertThat(mustStmt.getXpath().toString(), anyOf( + is("ifType != 'ethernet' or (ifType = 'ethernet' and ifMTU = 1500)"), + is("ifType != 'atm' or (ifType = 'atm' and ifMTU <= 17966 and ifMTU >= 64)"))); + assertThat(mustStmt.getErrorMessage(), anyOf(is(Optional.of("An ethernet MTU must be 1500")), + is(Optional.of("An atm MTU must be 64 .. 17966")))); + assertThat(mustStmt.getErrorAppTag(), anyOf(is(Optional.of("An ethernet error")), + is(Optional.of("An atm error")))); } @Test diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserSimpleTest.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserSimpleTest.java index a0f6230341..25140285eb 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserSimpleTest.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserSimpleTest.java @@ -16,6 +16,7 @@ import static org.junit.Assert.assertTrue; import java.net.URI; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.Set; import org.junit.Before; import org.junit.Test; @@ -76,20 +77,18 @@ public class YangParserSimpleTest { assertEquals(2, constraints.getMustConstraints().size()); final String must1 = "ifType != 'ethernet' or (ifType = 'ethernet' and ifMTU = 1500)"; - final String errMsg1 = "An ethernet MTU must be 1500"; final String must2 = "ifType != 'atm' or (ifType = 'atm' and ifMTU <= 17966 and ifMTU >= 64)"; - final String errMsg2 = "An atm MTU must be 64 .. 17966"; boolean found1 = false; boolean found2 = false; for (final MustDefinition must : mustConstraints) { if (must1.equals(must.toString())) { found1 = true; - assertEquals(errMsg1, must.getErrorMessage()); + assertEquals(Optional.of("An ethernet MTU must be 1500"), must.getErrorMessage()); } else if (must2.equals(must.toString())) { found2 = true; - assertEquals(errMsg2, must.getErrorMessage()); - assertEquals("anyxml data error-app-tag", must.getErrorAppTag()); + assertEquals(Optional.of("An atm MTU must be 64 .. 17966"), must.getErrorMessage()); + assertEquals(Optional.of("anyxml data error-app-tag"), must.getErrorAppTag()); assertEquals("an error occured in data", must.getDescription()); assertEquals("data must ref", must.getReference()); } @@ -132,11 +131,11 @@ public class YangParserSimpleTest { for (final MustDefinition must : mustConstraints) { if (must1.equals(must.toString())) { found1 = true; - assertEquals(errMsg1, must.getErrorMessage()); + assertEquals(Optional.of(errMsg1), must.getErrorMessage()); } else if (must2.equals(must.toString())) { found2 = true; - assertNull(must.getErrorMessage()); - assertNull(must.getErrorAppTag()); + assertFalse(must.getErrorMessage().isPresent()); + assertFalse(must.getErrorAppTag().isPresent()); assertNull(must.getDescription()); assertNull(must.getReference()); } diff --git a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/test/Bug5200Test.java b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/test/Bug5200Test.java index 33db952043..f0ba129486 100644 --- a/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/test/Bug5200Test.java +++ b/yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/test/Bug5200Test.java @@ -12,6 +12,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.List; +import java.util.Optional; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; @@ -59,18 +60,18 @@ public class Bug5200Test { assertEquals(1, lengthConstraint.getAllowedRanges().asRanges().size()); assertEquals(1, patternConstraints.size()); - assertEquals("lenght constraint error-app-tag", lengthConstraint.getErrorAppTag()); - assertEquals("lenght constraint error-app-message", lengthConstraint.getErrorMessage()); + assertEquals(Optional.of("lenght constraint error-app-tag"), lengthConstraint.getErrorAppTag()); + assertEquals(Optional.of("lenght constraint error-app-message"), lengthConstraint.getErrorMessage()); PatternConstraint patternConstraint = patternConstraints.iterator().next(); - assertEquals("pattern constraint error-app-tag", patternConstraint.getErrorAppTag()); - assertEquals("pattern constraint error-app-message", patternConstraint.getErrorMessage()); + assertEquals(Optional.of("pattern constraint error-app-tag"), patternConstraint.getErrorAppTag()); + assertEquals(Optional.of("pattern constraint error-app-message"), patternConstraint.getErrorMessage()); List rangeConstraints = ((IntegerTypeDefinition) myLeaf2Type).getRangeConstraints(); assertEquals(1, rangeConstraints.size()); RangeConstraint rangeConstraint = rangeConstraints.iterator().next(); - assertEquals("range constraint error-app-tag", rangeConstraint.getErrorAppTag()); - assertEquals("range constraint error-app-message", rangeConstraint.getErrorMessage()); + assertEquals(Optional.of("range constraint error-app-tag"), rangeConstraint.getErrorAppTag()); + assertEquals(Optional.of("range constraint error-app-message"), rangeConstraint.getErrorMessage()); } }