summaryrefslogtreecommitdiffstats
path: root/cps-service
diff options
context:
space:
mode:
Diffstat (limited to 'cps-service')
-rw-r--r--cps-service/src/main/java/org/onap/cps/spi/exceptions/DataNodeNotFoundException.java42
-rw-r--r--cps-service/src/main/java/org/onap/cps/spi/exceptions/DataValidationException.java10
-rwxr-xr-xcps-service/src/test/groovy/org/onap/cps/spi/exceptions/CpsExceptionsSpec.groovy18
3 files changed, 69 insertions, 1 deletions
diff --git a/cps-service/src/main/java/org/onap/cps/spi/exceptions/DataNodeNotFoundException.java b/cps-service/src/main/java/org/onap/cps/spi/exceptions/DataNodeNotFoundException.java
new file mode 100644
index 0000000000..125b93d70a
--- /dev/null
+++ b/cps-service/src/main/java/org/onap/cps/spi/exceptions/DataNodeNotFoundException.java
@@ -0,0 +1,42 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2021 Nordix Foundation
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.cps.spi.exceptions;
+
+/**
+ * DataNode Not Found Exception. Indicates the requested data being absent.
+ */
+@SuppressWarnings("squid:S110") // Team agreed to accept 6 levels of inheritance for CPS Exceptions
+public class DataNodeNotFoundException extends DataValidationException {
+
+ private static final long serialVersionUID = 7786740001662205407L;
+
+ /**
+ * Constructor.
+ *
+ * @param dataspaceName the name of the dataspace
+ * @param anchorName the anchor name
+ * @param xpath datanode xpath
+ */
+ public DataNodeNotFoundException(final String dataspaceName, final String anchorName, final String xpath) {
+ super("DataNode not found", String
+ .format("DataNode with xpath %s was not found for anchor %s and dataspace %s.", xpath,
+ anchorName, dataspaceName));
+ }
+}
diff --git a/cps-service/src/main/java/org/onap/cps/spi/exceptions/DataValidationException.java b/cps-service/src/main/java/org/onap/cps/spi/exceptions/DataValidationException.java
index e6af607601..57fc04522e 100644
--- a/cps-service/src/main/java/org/onap/cps/spi/exceptions/DataValidationException.java
+++ b/cps-service/src/main/java/org/onap/cps/spi/exceptions/DataValidationException.java
@@ -29,6 +29,16 @@ public class DataValidationException extends CpsException {
*
* @param message the error message
* @param details the error details
+ */
+ public DataValidationException(final String message, final String details) {
+ super(message, details);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param message the error message
+ * @param details the error details
* @param cause the error cause
*/
public DataValidationException(final String message, final String details, final Throwable cause) {
diff --git a/cps-service/src/test/groovy/org/onap/cps/spi/exceptions/CpsExceptionsSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/spi/exceptions/CpsExceptionsSpec.groovy
index 914a395d66..500b80152d 100755
--- a/cps-service/src/test/groovy/org/onap/cps/spi/exceptions/CpsExceptionsSpec.groovy
+++ b/cps-service/src/test/groovy/org/onap/cps/spi/exceptions/CpsExceptionsSpec.groovy
@@ -27,6 +27,7 @@ class CpsExceptionsSpec extends Specification {
def rootCause = new Throwable()
def providedMessage = 'some message'
def providedDetails = 'some details'
+ def xpath = 'some xpath'
def 'Creating an exception that the Anchor already exist.'() {
given: 'an exception dat the Anchor already exist is created'
@@ -52,7 +53,7 @@ class CpsExceptionsSpec extends Specification {
== "Dataspace with name ${dataspaceName} does not exist."
}
- def 'Creating a data validation exception.'() {
+ def 'Creating a data validation exception with root cause.'() {
given: 'a data validation exception is created'
def exception = new DataValidationException(providedMessage, providedDetails, rootCause)
expect: 'the exception has the provided message'
@@ -63,6 +64,15 @@ class CpsExceptionsSpec extends Specification {
exception.cause == rootCause
}
+ def 'Creating a data validation exception.'() {
+ given: 'a data validation exception is created'
+ def exception = new DataValidationException(providedMessage, providedDetails)
+ expect: 'the exception has the provided message'
+ exception.message == providedMessage
+ and: 'the exception has the provided details'
+ exception.details == providedDetails
+ }
+
def 'Creating a model validation exception.'() {
given: 'a data validation exception is created'
def exception = new ModelValidationException(providedMessage, providedDetails)
@@ -117,4 +127,10 @@ class CpsExceptionsSpec extends Specification {
== ("Schema Set with name ${schemaSetName} in dataspace ${dataspaceName} is having "
+ "Anchor records associated.")
}
+
+ def 'Creating a exception that a datanode does not exist.'() {
+ expect: 'the exception details contains the correct message with dataspace name and xpath.'
+ (new DataNodeNotFoundException(dataspaceName, anchorName, xpath)).details
+ == "DataNode with xpath ${xpath} was not found for anchor ${anchorName} and dataspace ${dataspaceName}."
+ }
} \ No newline at end of file