From ec2ef458dbc67b4caad24ab2baab047f53921312 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 20 Nov 2020 21:16:16 +0100 Subject: [PATCH] Add MinMaxElementsValidationFailedException The refactor we've done makes switch exceptions easy, migrate MinMaxValidation to a dedicated exception. JIRA: YANGTOOLS-1177 Change-Id: I005575c93d5683b7fb42428d06f6f052152bc1d0 Signed-off-by: Robert Varga --- .../schema/tree/MinMaxElementsValidation.java | 2 +- ...nMaxElementsValidationFailedException.java | 22 ++++++++++++++++++ .../tree/ListConstraintsValidation.java | 23 ++++++------------- 3 files changed, 30 insertions(+), 17 deletions(-) create mode 100644 yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/MinMaxElementsValidationFailedException.java diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/MinMaxElementsValidation.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/MinMaxElementsValidation.java index f5c75a6524..5e96d5d568 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/MinMaxElementsValidation.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/MinMaxElementsValidation.java @@ -44,7 +44,7 @@ final class MinMaxElementsValidation data) { - enforceOnData(data, (actual, message) -> new IllegalArgumentException(message)); + enforceOnData(data, (actual, message) -> new MinMaxElementsValidationFailedException(message)); } @Override diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/MinMaxElementsValidationFailedException.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/MinMaxElementsValidationFailedException.java new file mode 100644 index 0000000000..c958f445fd --- /dev/null +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/MinMaxElementsValidationFailedException.java @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.yangtools.yang.data.impl.schema.tree; + +import org.opendaylight.yangtools.yang.data.api.schema.tree.RequiredElementCountException; + +/** + * Exception thrown when unique constraints would be violated and we cannot throw a + * {@link RequiredElementCountException}. + */ +final class MinMaxElementsValidationFailedException extends SchemaValidationFailedException { + private static final long serialVersionUID = 1L; + + MinMaxElementsValidationFailedException(final String message) { + super(message); + } +} diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ListConstraintsValidation.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ListConstraintsValidation.java index e21bd1ae3f..b60b3747c8 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ListConstraintsValidation.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ListConstraintsValidation.java @@ -8,8 +8,8 @@ package org.opendaylight.yangtools.yang.data.impl.schema.tree; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; import java.util.ArrayList; import java.util.List; @@ -239,14 +239,9 @@ public class ListConstraintsValidation { modificationTree.merge(MIN_MAX_LEAF_LIST_PATH.node(gooPath), gooLeafSetEntry); modificationTree.write(MIN_MAX_LEAF_LIST_PATH.node(fuuPath), fuuLeafSetEntry); - try { - modificationTree.ready(); - fail("Should have failed with IAE"); - } catch (IllegalArgumentException e) { - assertEquals("(urn:opendaylight:params:xml:ns:yang:list-constraints-validation-test-model?" - + "revision=2015-02-02)min-max-leaf-list has too many elements (4), can have at most 3", - e.getMessage()); - } + assertEquals("(urn:opendaylight:params:xml:ns:yang:list-constraints-validation-test-model?" + + "revision=2015-02-02)min-max-leaf-list has too many elements (4), can have at most 3", + assertThrows(MinMaxElementsValidationFailedException.class, () -> modificationTree.ready()).getMessage()); } @Test @@ -294,12 +289,8 @@ public class ListConstraintsValidation { .withValue(unkeyedEntries).build(); modificationTree.write(UNKEYED_LIST_PATH, unkeyedListNode); - try { - modificationTree.ready(); - fail("Should have failed with IAE"); - } catch (IllegalArgumentException e) { - assertEquals("(urn:opendaylight:params:xml:ns:yang:list-constraints-validation-test-model?" - + "revision=2015-02-02)unkeyed-list has too many elements (2), can have at most 1", e.getMessage()); - } + assertEquals("(urn:opendaylight:params:xml:ns:yang:list-constraints-validation-test-model?" + + "revision=2015-02-02)unkeyed-list has too many elements (2), can have at most 1", + assertThrows(MinMaxElementsValidationFailedException.class, () -> modificationTree.ready()).getMessage()); } } -- 2.36.6