From: niamhcore Date: Fri, 22 Jan 2021 14:05:00 +0000 (+0000) Subject: Add DataNodeDoesNotExist Exception X-Git-Tag: 0.0.1~19^2~1^2~18 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=1cef345e92ee93323b1220bac3ad3a90cb310406;p=cps.git Add DataNodeDoesNotExist Exception Issue-ID: CPS-182 Signed-off-by: niamhcore Change-Id: I05fdd0fbc207e4806c187b96d35d7b6c54b795ea --- diff --git a/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentRepository.java b/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentRepository.java index 6fc956c44..bf551723f 100755 --- a/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentRepository.java +++ b/cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentRepository.java @@ -28,7 +28,7 @@ import org.checkerframework.checker.nullness.qual.NonNull; import org.onap.cps.spi.entities.AnchorEntity; import org.onap.cps.spi.entities.DataspaceEntity; import org.onap.cps.spi.entities.FragmentEntity; -import org.onap.cps.spi.exceptions.NotFoundInDataspaceException; +import org.onap.cps.spi.exceptions.DataNodeNotFoundException; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -44,7 +44,7 @@ public interface FragmentRepository extends JpaRepository default FragmentEntity getByDataspaceAndAnchorAndXpath(@NonNull DataspaceEntity dataspaceEntity, @NonNull AnchorEntity anchorEntity, @NonNull String xpath) { return findByDataspaceAndAnchorAndXpath(dataspaceEntity, anchorEntity, xpath) - .orElseThrow(() -> new NotFoundInDataspaceException(dataspaceEntity.getName(), xpath)); + .orElseThrow(() -> new DataNodeNotFoundException(dataspaceEntity.getName(), anchorEntity.getName(), xpath)); } @Modifying diff --git a/cps-ri/src/test/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceTest.java b/cps-ri/src/test/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceTest.java index de0942c3c..4501e5f0c 100644 --- a/cps-ri/src/test/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceTest.java +++ b/cps-ri/src/test/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceTest.java @@ -32,8 +32,8 @@ import org.onap.cps.DatabaseTestContainer; import org.onap.cps.spi.CpsDataPersistenceService; import org.onap.cps.spi.entities.FragmentEntity; import org.onap.cps.spi.exceptions.AnchorNotFoundException; +import org.onap.cps.spi.exceptions.DataNodeNotFoundException; import org.onap.cps.spi.exceptions.DataspaceNotFoundException; -import org.onap.cps.spi.exceptions.NotFoundInDataspaceException; import org.onap.cps.spi.model.DataNode; import org.onap.cps.spi.repository.FragmentRepository; import org.springframework.beans.factory.annotation.Autowired; @@ -159,7 +159,7 @@ public class CpsDataPersistenceServiceTest { .addChildDataNode(DATASPACE_NAME, ANCHOR_NAME1, PARENT_XPATH1, createDataNodeTree(CHILD_XPATH1)); } - @Test(expected = NotFoundInDataspaceException.class) + @Test(expected = DataNodeNotFoundException.class) @Sql({CLEAR_DATA, SET_DATA}) public void testAddAChildWithToAParentThatDoesNotExist() { cpsDataPersistenceService 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 000000000..125b93d70 --- /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 e6af60760..57fc04522 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 @@ -24,6 +24,16 @@ public class DataValidationException extends CpsException { private static final long serialVersionUID = 7747941311132087621L; + /** + * Constructor. + * + * @param message the error message + * @param details the error details + */ + public DataValidationException(final String message, final String details) { + super(message, details); + } + /** * Constructor. * 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 914a395d6..500b80152 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