Split out yang-data-tree-impl
[yangtools.git] / data / yang-data-tree-ri / src / main / java / org / opendaylight / yangtools / yang / data / tree / impl / MinMaxElementsValidationFailedException.java
diff --git a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/MinMaxElementsValidationFailedException.java b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/MinMaxElementsValidationFailedException.java
new file mode 100644 (file)
index 0000000..affac8e
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * 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.tree.impl;
+
+import java.util.List;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangNetconfError;
+import org.opendaylight.yangtools.yang.data.api.YangNetconfErrorAware;
+import org.opendaylight.yangtools.yang.data.tree.api.RequiredElementCountException;
+
+/**
+ * Exception thrown when unique constraints would be violated and we cannot throw a
+ * {@link RequiredElementCountException}.
+ */
+final class MinMaxElementsValidationFailedException extends SchemaValidationFailedException
+        implements YangNetconfErrorAware {
+    private static final long serialVersionUID = 1L;
+
+    private final int min;
+    private final int max;
+    private final int actual;
+
+    // FIXME: 8.0.0: we do not have a path here. Should we just allow DataValidationFailedException whereever our call
+    //               sites are?
+    MinMaxElementsValidationFailedException(final String message, final int min, final int max, final int actual) {
+        super(message);
+        this.min = min;
+        this.max = max;
+        this.actual = actual;
+    }
+
+    @Override
+    public List<YangNetconfError> getNetconfErrors() {
+        return new RequiredElementCountException(YangInstanceIdentifier.empty(), actual, min, max, "dummy")
+            .getNetconfErrors();
+    }
+}