Add method to get YANG module sources for CM handle
[cps.git] / cps-ri / src / main / java / org / onap / cps / spi / impl / CpsModulePersistenceServiceImpl.java
index ec720b8..806e7cc 100755 (executable)
@@ -53,6 +53,7 @@ import org.onap.cps.spi.entities.YangResourceModuleReference;
 import org.onap.cps.spi.exceptions.AlreadyDefinedException;
 import org.onap.cps.spi.exceptions.DuplicatedYangResourceException;
 import org.onap.cps.spi.exceptions.ModelValidationException;
+import org.onap.cps.spi.model.ModuleDefinition;
 import org.onap.cps.spi.model.ModuleReference;
 import org.onap.cps.spi.repository.DataspaceRepository;
 import org.onap.cps.spi.repository.ModuleReferenceRepository;
@@ -66,6 +67,7 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.repo.YangModelDependencyIn
 import org.springframework.dao.DataIntegrityViolationException;
 import org.springframework.retry.annotation.Backoff;
 import org.springframework.retry.annotation.Retryable;
+import org.springframework.retry.support.RetrySynchronizationManager;
 import org.springframework.stereotype.Component;
 
 @Slf4j
@@ -106,19 +108,29 @@ public class CpsModulePersistenceServiceImpl implements CpsModulePersistenceServ
     @Override
     public Collection<ModuleReference> getYangResourceModuleReferences(final String dataspaceName) {
         final Set<YangResourceModuleReference> yangResourceModuleReferenceList =
-            yangResourceRepository.findAllModuleReferences(dataspaceName);
+            yangResourceRepository.findAllModuleReferencesByDataspace(dataspaceName);
         return yangResourceModuleReferenceList.stream().map(CpsModulePersistenceServiceImpl::toModuleReference)
             .collect(Collectors.toList());
     }
 
     @Override
     public Collection<ModuleReference> getYangResourceModuleReferences(final String dataspaceName,
-        final String anchorName) {
+                                                                       final String anchorName) {
         final Set<YangResourceModuleReference> yangResourceModuleReferenceList =
-            yangResourceRepository
-                .findAllModuleReferences(dataspaceName, anchorName);
+                yangResourceRepository
+                        .findAllModuleReferencesByDataspaceAndAnchor(dataspaceName, anchorName);
         return yangResourceModuleReferenceList.stream().map(CpsModulePersistenceServiceImpl::toModuleReference)
-            .collect(Collectors.toList());
+                .collect(Collectors.toList());
+    }
+
+    @Override
+    public Collection<ModuleDefinition> getYangResourceDefinitions(final String dataspaceName,
+                                                                   final String anchorName) {
+        final Set<YangResourceEntity> yangResourceEntities =
+                yangResourceRepository
+                        .findAllModuleDefinitionsByDataspaceAndAnchor(dataspaceName, anchorName);
+        return yangResourceEntities.stream().map(CpsModulePersistenceServiceImpl::toModuleDefinition)
+                .collect(Collectors.toList());
     }
 
     @Override
@@ -219,9 +231,12 @@ public class CpsModulePersistenceServiceImpl implements CpsModulePersistenceServ
                         convertToDuplicatedYangResourceException(
                                 dataIntegrityViolationException, newYangResourceEntities);
                 convertedException.ifPresent(
-                    e ->  log.warn(
-                                "Cannot persist duplicated yang resource. "
-                                        + "System will attempt this method up to 5 times.", e));
+                        e -> {
+                            int retryCount = RetrySynchronizationManager.getContext() == null ? 0
+                                    : RetrySynchronizationManager.getContext().getRetryCount();
+                            log.warn("Cannot persist duplicated yang resource. System will attempt this method "
+                                    + "up to 5 times. Current retry count : {}", ++retryCount, e);
+                        });
                 throw convertedException.isPresent() ? convertedException.get() : dataIntegrityViolationException;
             }
         }
@@ -339,4 +354,11 @@ public class CpsModulePersistenceServiceImpl implements CpsModulePersistenceServ
             .revision(yangResourceModuleReference.getRevision())
             .build();
     }
+
+    private static ModuleDefinition toModuleDefinition(final YangResourceEntity yangResourceEntity) {
+        return new ModuleDefinition(
+                yangResourceEntity.getModuleName(),
+                yangResourceEntity.getRevision(),
+                yangResourceEntity.getContent());
+    }
 }