*/
public interface CpsDataPersistenceService {
-
- /**
- * Store a datanode.
- *
- * @param dataspaceName dataspace name
- * @param anchorName anchor name
- * @param dataNode data node
- * @deprecated Please use {@link #storeDataNodes(String, String, Collection)} as it supports multiple data nodes.
- */
- @Deprecated
- void storeDataNode(String dataspaceName, String anchorName, DataNode dataNode);
-
/**
* Store multiple datanodes at once.
* @param dataspaceName dataspace name
FetchDescendantsOption fetchDescendantsOption);
/**
- * Updates leaves for existing data node.
- *
- * @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
- */
- void updateDataLeaves(String dataspaceName, String anchorName, String xpath, Map<String, Serializable> leaves);
-
- /**
- * Replaces an existing data node's content including descendants.
+ * Updates data leaves for multiple data nodes.
*
- * @param dataspaceName dataspace name
- * @param anchorName anchor name
- * @param dataNode data node
+ * @param dataspaceName dataspace name
+ * @param anchorName anchor name
+ * @param updatedLeavesPerXPath Map of xPaths to updated leaf nodes
*/
- void updateDataNodeAndDescendants(String dataspaceName, String anchorName, DataNode dataNode);
+ void batchUpdateDataLeaves(String dataspaceName, String anchorName,
+ Map<String, Map<String, Serializable>> updatedLeavesPerXPath);
/**
* Replaces multiple existing data nodes' content including descendants in a batch operation.
* @param anchorName anchor name
* @param dataNodes data nodes
*/
- void updateDataNodesAndDescendants(String dataspaceName, String anchorName, final List<DataNode> dataNodes);
+ void updateDataNodesAndDescendants(String dataspaceName, String anchorName, final Collection<DataNode> dataNodes);
/**
* Replaces list content by removing all existing elements and inserting the given new elements
*/
void deleteDataNodes(String dataspaceName, String anchorName);
+ /**
+ * Deletes all dataNodes in multiple anchors.
+ *
+ * @param dataspaceName dataspace name
+ * @param anchorNames anchor names
+ */
+ void deleteDataNodes(String dataspaceName, Collection<String> anchorNames);
+
/**
* Deletes a single existing list element or the whole list.
*
List<DataNode> 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<DataNode> queryDataNodesAcrossAnchors(String dataspaceName,
+ String cpsPath, FetchDescendantsOption fetchDescendantsOption);
+
+
/**
* Starts a session which allows use of locks and batch interaction with the persistence service.
*