Add MinMaxElementsValidationFailedException 13/93913/1
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 20 Nov 2020 20:16:16 +0000 (21:16 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Sun, 22 Nov 2020 16:51:51 +0000 (17:51 +0100)
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 <robert.varga@pantheon.tech>
(cherry picked from commit ec2ef458dbc67b4caad24ab2baab047f53921312)

yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/MinMaxElementsValidation.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/MinMaxElementsValidationFailedException.java [new file with mode: 0644]
yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ListConstraintsValidation.java

index f5c75a6524eafc0d2b56ed2ccc19025f79aa9450..5e96d5d568c0bfdc5662c19ff13ede9cd0008093 100644 (file)
@@ -44,7 +44,7 @@ final class MinMaxElementsValidation<T extends DataSchemaNode & ElementCountCons
 
     @Override
     void enforceOnData(final NormalizedNode<?, ?> 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 (file)
index 0000000..c958f44
--- /dev/null
@@ -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);
+    }
+}
index e21bd1ae3f4b7b8540e2c7a67064012583659e4b..b60b3747c8ba6a315036fbf199fce5e39b57ea2f 100644 (file)
@@ -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());
     }
 }