From 2b7d23c2ffa067732df1ecc3879d252646dad2da Mon Sep 17 00:00:00 2001 From: "Rishi.Chail" Date: Wed, 14 Apr 2021 00:51:44 +0100 Subject: Get Data under anchor using single root Issue-ID: CPS-325 Signed-off-by: Rishi.Chail Change-Id: Id8da3d767199c5767c625b55d175ac6791dcca48 --- .../org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java | 11 ++++++++++- .../java/org/onap/cps/spi/repository/FragmentRepository.java | 9 +++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) mode change 100644 => 100755 cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java (limited to 'cps-ri/src/main/java') 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 old mode 100644 new mode 100755 index fa13c7d14..a02b193d9 --- 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 @@ -130,7 +130,12 @@ public class CpsDataPersistenceServiceImpl implements CpsDataPersistenceService final String xpath) { final DataspaceEntity dataspaceEntity = dataspaceRepository.getByName(dataspaceName); final AnchorEntity anchorEntity = anchorRepository.getByDataspaceAndName(dataspaceEntity, anchorName); - return fragmentRepository.getByDataspaceAndAnchorAndXpath(dataspaceEntity, anchorEntity, xpath); + if (isRootXpath(xpath)) { + return fragmentRepository.getFirstByDataspaceAndAnchor(dataspaceEntity, anchorEntity); + } else { + return fragmentRepository.getByDataspaceAndAnchorAndXpath(dataspaceEntity, anchorEntity, + xpath); + } } @Override @@ -205,4 +210,8 @@ public class CpsDataPersistenceServiceImpl implements CpsDataPersistenceService fragmentEntity.setChildFragments(Collections.emptySet()); fragmentRepository.save(fragmentEntity); } + + private boolean isRootXpath(final String xpath) { + return "/".equals(xpath) || "".equals(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 b896fe86d..74d04613d 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,6 +48,15 @@ public interface FragmentRepository extends JpaRepository .orElseThrow(() -> new DataNodeNotFoundException(dataspaceEntity.getName(), anchorEntity.getName(), xpath)); } + Optional findFirstByDataspaceAndAnchor(@NonNull DataspaceEntity dataspaceEntity, + @NonNull AnchorEntity anchorEntity); + + default FragmentEntity getFirstByDataspaceAndAnchor(@NonNull DataspaceEntity dataspaceEntity, + @NonNull AnchorEntity anchorEntity) { + return findFirstByDataspaceAndAnchor(dataspaceEntity, anchorEntity) + .orElseThrow(() -> new DataNodeNotFoundException(dataspaceEntity.getName(), anchorEntity.getName())); + } + @Modifying @Query("DELETE FROM FragmentEntity fe WHERE fe.anchor IN (:anchors)") void deleteByAnchorIn(@NotNull @Param("anchors") Collection anchorEntities); -- cgit 1.2.3-korg