aboutsummaryrefslogtreecommitdiffstats
path: root/cps-ri/src/main/java/org/onap
diff options
context:
space:
mode:
authordanielhanrahan <daniel.hanrahan@est.tech>2024-12-04 23:17:36 +0000
committerdanielhanrahan <daniel.hanrahan@est.tech>2025-02-04 11:09:01 +0000
commit59fa1bffe797d2e03212f6037aee732b51e1cb92 (patch)
treef4b084f44dda19c6b38db530e12a88521fc89926 /cps-ri/src/main/java/org/onap
parent59f1cc4c5994da34f2c48a2347499f9cfb7bd836 (diff)
Simple implementation of attribute-axis
This minimally implements attribute-axis using existing queryDataNodes API. Acceptance tests are un-ignored now. Issue-ID: CPS-2416 Signed-off-by: danielhanrahan <daniel.hanrahan@est.tech> Change-Id: Ia06be3dd85dfce261d9d78529784d54d84b71bcd
Diffstat (limited to 'cps-ri/src/main/java/org/onap')
-rw-r--r--cps-ri/src/main/java/org/onap/cps/ri/CpsDataPersistenceServiceImpl.java24
1 files changed, 23 insertions, 1 deletions
diff --git a/cps-ri/src/main/java/org/onap/cps/ri/CpsDataPersistenceServiceImpl.java b/cps-ri/src/main/java/org/onap/cps/ri/CpsDataPersistenceServiceImpl.java
index 52fd7f2be1..ac6fe38ee7 100644
--- a/cps-ri/src/main/java/org/onap/cps/ri/CpsDataPersistenceServiceImpl.java
+++ b/cps-ri/src/main/java/org/onap/cps/ri/CpsDataPersistenceServiceImpl.java
@@ -1,6 +1,6 @@
/*
* ============LICENSE_START=======================================================
- * Copyright (C) 2021-2024 Nordix Foundation
+ * Copyright (C) 2021-2025 Nordix Foundation
* Modifications Copyright (C) 2021 Pantheon.tech
* Modifications Copyright (C) 2020-2022 Bell Canada.
* Modifications Copyright (C) 2022-2023 TechMahindra Ltd.
@@ -37,6 +37,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.TreeMap;
import java.util.stream.Collectors;
@@ -230,6 +231,27 @@ public class CpsDataPersistenceServiceImpl implements CpsDataPersistenceService
}
@Override
+ public <T> Set<T> queryDataLeaf(final String dataspaceName, final String anchorName, final String cpsPath,
+ final Class<T> targetClass) {
+ final CpsPathQuery cpsPathQuery = getCpsPathQuery(cpsPath);
+ if (!cpsPathQuery.hasAttributeAxis()) {
+ throw new IllegalArgumentException(
+ "Only Cps Path Queries with attribute-axis are supported by queryDataLeaf");
+ }
+
+ final String attributeName = cpsPathQuery.getAttributeAxisAttributeName();
+ final List<DataNode> dataNodes = queryDataNodes(dataspaceName, anchorName, cpsPath,
+ FetchDescendantsOption.OMIT_DESCENDANTS);
+ return dataNodes.stream()
+ .map(dataNode -> {
+ final Object attributeValue = dataNode.getLeaves().get(attributeName);
+ return targetClass.isInstance(attributeValue) ? targetClass.cast(attributeValue) : null;
+ })
+ .filter(Objects::nonNull)
+ .collect(Collectors.toSet());
+ }
+
+ @Override
@Timed(value = "cps.data.persistence.service.datanode.query.anchors",
description = "Time taken to query data nodes across all anchors or list of anchors")
public List<DataNode> queryDataNodesAcrossAnchors(final String dataspaceName, final String cpsPath,