From e0b993afbbf5d1de7d7614f886d924ccd1a83ac2 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 27 Oct 2017 19:47:03 +0200 Subject: [PATCH] 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 --- .../impl/codec/CompiledPatternContext.java | 21 +++++++------ .../StringPatternCheckingCodecTest.java | 4 +-- .../model/api/ConstraintMetaDefinition.java | 16 +++++----- .../model/export/SchemaContextEmitter.java | 30 ++++++++----------- .../model/util/PatternConstraintImpl.java | 8 ++--- .../yang/model/util/RangeConstraintImpl.java | 8 ++--- .../util/type/JavaLengthConstraints.java | 9 +++--- .../util/type/RangeRestrictedTypeBuilder.java | 6 ++-- .../util/type/ResolvedLengthConstraint.java | 5 ++-- .../model/util/PatternConstraintImplTest.java | 5 ++-- .../effective/MustEffectiveStatementImpl.java | 9 +++--- .../AbstractConstraintEffectiveStatement.java | 9 +++--- .../type/PatternConstraintEffectiveImpl.java | 8 ++--- .../type/PatternEffectiveStatementImpl.java | 3 +- .../type/RangeConstraintEffectiveImpl.java | 8 ++--- .../type/RangeEffectiveStatementImpl.java | 2 +- .../yang/stmt/EffectiveStatementTypeTest.java | 9 +++--- .../yang/stmt/MustAndWhenStmtTest.java | 20 ++++++++----- .../yang/stmt/YangParserSimpleTest.java | 15 +++++----- .../yangtools/yang/stmt/test/Bug5200Test.java | 13 ++++---- 20 files changed, 105 insertions(+), 103 deletions(-) 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()); } } -- 2.36.6