X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=cps-service%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fcps%2Fspi%2FCpsDataPersistenceService.java;h=d28a3339fec60c896787af18c0561292f81572a8;hb=ec061d5caba23c76f0cdc183c1f5a37e0c11b6c7;hp=28b18b3b5c34d348dba0a0620cae0c4c099e91da;hpb=3ded83809e65eec2ac673f157b03212472a29833;p=cps.git diff --git a/cps-service/src/main/java/org/onap/cps/spi/CpsDataPersistenceService.java b/cps-service/src/main/java/org/onap/cps/spi/CpsDataPersistenceService.java index 28b18b3b5..d28a3339f 100644 --- a/cps-service/src/main/java/org/onap/cps/spi/CpsDataPersistenceService.java +++ b/cps-service/src/main/java/org/onap/cps/spi/CpsDataPersistenceService.java @@ -1,8 +1,9 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2020-2022 Nordix Foundation. + * Copyright (C) 2020-2023 Nordix Foundation. * Modifications Copyright (C) 2021 Pantheon.tech * Modifications Copyright (C) 2022 Bell Canada + * Modifications Copyright (C) 2022-2023 TechMahindra Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,13 +37,12 @@ import org.onap.cps.spi.model.DataNode; public interface CpsDataPersistenceService { /** - * Store a datanode. - * + * Store multiple datanodes at once. * @param dataspaceName dataspace name * @param anchorName anchor name - * @param dataNode data node + * @param dataNodes data nodes */ - void storeDataNode(String dataspaceName, String anchorName, DataNode dataNode); + void storeDataNodes(String dataspaceName, String anchorName, Collection dataNodes); /** * Add a child to a Fragment. @@ -54,6 +54,16 @@ public interface CpsDataPersistenceService { */ void addChildDataNode(String dataspaceName, String anchorName, String parentXpath, DataNode dataNode); + /** + * Add multiple children to a Fragment. + * + * @param dataspaceName dataspace name + * @param anchorName anchor name + * @param parentXpath parent xpath + * @param dataNodes collection of dataNodes + */ + void addChildDataNodes(String dataspaceName, String anchorName, String parentXpath, Collection dataNodes); + /** * Adds list child elements to a Fragment. * @@ -62,7 +72,6 @@ public interface CpsDataPersistenceService { * @param parentNodeXpath parent node xpath * @param listElementsCollection collection of data nodes representing list elements */ - void addListElements(String dataspaceName, String anchorName, String parentNodeXpath, Collection listElementsCollection); @@ -78,36 +87,43 @@ public interface CpsDataPersistenceService { Collection> newLists); /** - * Retrieves datanode by XPath for given dataspace and anchor. + * Retrieves multiple datanodes for a single XPath for given dataspace and anchor. + * Multiple data nodes are returned when xPath is set to root '/', otherwise single data node + * is returned when a specific xpath is used (Example: /bookstore). * * @param dataspaceName dataspace name * @param anchorName anchor name - * @param xpath xpath + * @param xpath one xpath * @param fetchDescendantsOption defines the scope of data to fetch: either single node or all the descendant nodes * (recursively) as well - * @return data node object + * @return collection of data node object */ - DataNode getDataNode(String dataspaceName, String anchorName, String xpath, - FetchDescendantsOption fetchDescendantsOption); + Collection getDataNodes(String dataspaceName, String anchorName, String xpath, + FetchDescendantsOption fetchDescendantsOption); /** - * Updates leaves for existing data node. + * Retrieves multiple datanodes for multiple XPaths, given a dataspace and anchor. * - * @param dataspaceName dataspace name - * @param anchorName anchor name - * @param xpath xpath - * @param leaves the leaves as a map where key is a leaf name and a value is a leaf value + * @param dataspaceName dataspace name + * @param anchorName anchor name + * @param xpaths collection of xpaths + * @param fetchDescendantsOption defines the scope of data to fetch: either single node or all the descendant nodes + * (recursively) as well + * @return collection of data node object */ - void updateDataLeaves(String dataspaceName, String anchorName, String xpath, Map leaves); + Collection getDataNodesForMultipleXpaths(String dataspaceName, String anchorName, + Collection xpaths, + FetchDescendantsOption fetchDescendantsOption); /** - * Replaces an existing data node's content including descendants. + * Updates leaves for existing data node. * * @param dataspaceName dataspace name * @param anchorName anchor name - * @param dataNode data node + * @param xpath xpath + * @param leaves the leaves as a map where key is a leaf name and a value is a leaf value */ - void updateDataNodeAndDescendants(String dataspaceName, String anchorName, DataNode dataNode); + void updateDataLeaves(String dataspaceName, String anchorName, String xpath, Map leaves); /** * Replaces multiple existing data nodes' content including descendants in a batch operation. @@ -116,7 +132,7 @@ public interface CpsDataPersistenceService { * @param anchorName anchor name * @param dataNodes data nodes */ - void updateDataNodesAndDescendants(String dataspaceName, String anchorName, final List dataNodes); + void updateDataNodesAndDescendants(String dataspaceName, String anchorName, final Collection dataNodes); /** * Replaces list content by removing all existing elements and inserting the given new elements @@ -139,6 +155,15 @@ public interface CpsDataPersistenceService { */ void deleteDataNode(String dataspaceName, String anchorName, String targetXpath); + /** + * Deletes multiple dataNode, yang container or yang list or yang list element. + * + * @param dataspaceName dataspace name + * @param anchorName anchor name + * @param targetXpaths xpaths of nodes to delete + */ + void deleteDataNodes(String dataspaceName, String anchorName, Collection targetXpaths); + /** * Deletes all dataNodes in a given anchor. * @@ -148,7 +173,15 @@ public interface CpsDataPersistenceService { void deleteDataNodes(String dataspaceName, String anchorName); /** - * Deletes existing a single list element or the whole list. + * Deletes all dataNodes in multiple anchors. + * + * @param dataspaceName dataspace name + * @param anchorNames anchor names + */ + void deleteDataNodes(String dataspaceName, Collection anchorNames); + + /** + * Deletes a single existing list element or the whole list. * * @param dataspaceName dataspace name * @param anchorName anchor name @@ -169,6 +202,19 @@ public interface CpsDataPersistenceService { List queryDataNodes(String dataspaceName, String anchorName, String cpsPath, FetchDescendantsOption fetchDescendantsOption); + /** + * Get a datanode by dataspace name and cps path across all anchors. + * + * @param dataspaceName dataspace name + * @param cpsPath cps path + * @param fetchDescendantsOption defines whether the descendants of the node(s) found by the query should be + * included in the output + * @return the data nodes found i.e. 0 or more data nodes + */ + List queryDataNodesAcrossAnchors(String dataspaceName, + String cpsPath, FetchDescendantsOption fetchDescendantsOption); + + /** * Starts a session which allows use of locks and batch interaction with the persistence service. *