diff options
5 files changed, 73 insertions, 5 deletions
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 6fc956c44d..bf551723f8 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<FragmentEntity, Long> 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 de0942c3c3..4501e5f0ce 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 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 |