Added parent is null condition when searching for root fragments 44/122444/1
authorRenu Kumari <renu.kumari@bell.ca>
Wed, 30 Jun 2021 09:50:50 +0000 (05:50 -0400)
committerRenu Kumari <renu.kumari@bell.ca>
Tue, 6 Jul 2021 03:31:04 +0000 (23:31 -0400)
Issue-ID: CPS-479
Signed-off-by: Renu Kumari <renu.kumari@bell.ca>
Change-Id: I25fd91936e1b08cfc3bff69c7169392e724ed156

cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java
cps-ri/src/main/java/org/onap/cps/spi/repository/FragmentRepository.java

index af1eca3..42364ea 100644 (file)
@@ -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);
index c484ae9..ee77b73 100755 (executable)
@@ -48,12 +48,15 @@ public interface FragmentRepository extends JpaRepository<FragmentEntity, Long>
             .orElseThrow(() -> new DataNodeNotFoundException(dataspaceEntity.getName(), anchorEntity.getName(), xpath));\r
     }\r
 \r
-    Optional<FragmentEntity> findFirstByDataspaceAndAnchor(@NonNull DataspaceEntity dataspaceEntity,\r
-        @NonNull AnchorEntity anchorEntity);\r
+    @Query(\r
+        value = "SELECT * FROM FRAGMENT WHERE anchor_id = :anchor AND dataspace_id = :dataspace AND parent_id is NULL",\r
+        nativeQuery = true)\r
+    List<FragmentEntity> findRootsByDataspaceAndAnchor(\r
+        @Param("dataspace") int dataspaceId, @Param("anchor") int anchorId);\r
 \r
-    default FragmentEntity getFirstByDataspaceAndAnchor(@NonNull DataspaceEntity dataspaceEntity,\r
+    default FragmentEntity findFirstRootByDataspaceAndAnchor(@NonNull DataspaceEntity dataspaceEntity,\r
         @NonNull AnchorEntity anchorEntity) {\r
-        return findFirstByDataspaceAndAnchor(dataspaceEntity, anchorEntity)\r
+        return findRootsByDataspaceAndAnchor(dataspaceEntity.getId(), anchorEntity.getId()).stream().findFirst()\r
             .orElseThrow(() -> new DataNodeNotFoundException(dataspaceEntity.getName(), anchorEntity.getName()));\r
     }\r
 \r