From c2de0a838e6afa8cb88dee9f4665a25245148aba Mon Sep 17 00:00:00 2001 From: Renu Kumari Date: Wed, 30 Jun 2021 05:50:50 -0400 Subject: Added parent is null condition when searching for root fragments Issue-ID: CPS-479 Signed-off-by: Renu Kumari Change-Id: I25fd91936e1b08cfc3bff69c7169392e724ed156 --- .../org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java | 2 +- .../java/org/onap/cps/spi/repository/FragmentRepository.java | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) (limited to 'cps-ri') diff --git a/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java b/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java index af1eca33e..42364ead6 100644 --- a/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java +++ b/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java @@ -160,7 +160,7 @@ public class CpsDataPersistenceServiceImpl implements CpsDataPersistenceService final var dataspaceEntity = dataspaceRepository.getByName(dataspaceName); final var anchorEntity = anchorRepository.getByDataspaceAndName(dataspaceEntity, anchorName); if (isRootXpath(xpath)) { - return fragmentRepository.getFirstByDataspaceAndAnchor(dataspaceEntity, anchorEntity); + return fragmentRepository.findFirstRootByDataspaceAndAnchor(dataspaceEntity, anchorEntity); } else { return fragmentRepository.getByDataspaceAndAnchorAndXpath(dataspaceEntity, anchorEntity, xpath); 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 c484ae9e8..ee77b73c9 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 @@ -48,12 +48,15 @@ public interface FragmentRepository extends JpaRepository .orElseThrow(() -> new DataNodeNotFoundException(dataspaceEntity.getName(), anchorEntity.getName(), xpath)); } - Optional findFirstByDataspaceAndAnchor(@NonNull DataspaceEntity dataspaceEntity, - @NonNull AnchorEntity anchorEntity); + @Query( + value = "SELECT * FROM FRAGMENT WHERE anchor_id = :anchor AND dataspace_id = :dataspace AND parent_id is NULL", + nativeQuery = true) + List findRootsByDataspaceAndAnchor( + @Param("dataspace") int dataspaceId, @Param("anchor") int anchorId); - default FragmentEntity getFirstByDataspaceAndAnchor(@NonNull DataspaceEntity dataspaceEntity, + default FragmentEntity findFirstRootByDataspaceAndAnchor(@NonNull DataspaceEntity dataspaceEntity, @NonNull AnchorEntity anchorEntity) { - return findFirstByDataspaceAndAnchor(dataspaceEntity, anchorEntity) + return findRootsByDataspaceAndAnchor(dataspaceEntity.getId(), anchorEntity.getId()).stream().findFirst() .orElseThrow(() -> new DataNodeNotFoundException(dataspaceEntity.getName(), anchorEntity.getName())); } -- cgit 1.2.3-korg