...
Code Block | ||
---|---|---|
| ||
// before void replaceDataNodeTree(@NonNull String dataspaceName, @NonNull String anchorName, @NonNull DataNode dataNode); // after, alternative 1 void replaceDataNodeTree(@NonNull String dataspaceName, @NonNull String anchorName, @NonNull DataNode ... dataNode dataNodes); // after, alternative 2 void replaceListDataNode(@NonNull String dataspaceName, @NonNull String anchorName, @NonNull Colection<DataNode> dataNodes); |
Alt. 1. cons: despite usage of same methods the actual logic for processing single node significantly differs from the one
which is required to process multiple data nodes, as result
...
- uri:
- (CPS) DELETE /dataspaces/{dataspaceName}/anchor/{anchorName}/list-node
- (NCMP) DELETE /cm-handle/{cmHandle}/list-node
- parameters:
- xpath - list node xpath (same as list-node element but with no key attribute definition)
i.e. /root/parent/list-node
- xpath - list node xpath (same as list-node element but with no key attribute definition)
- response 204 on success
Service layer
- validate xpath referenced list-node element (?)
Persistence layer
REST layer (DataRestController.java)
- Implement the method deleteListNodeElements(final String dataspaceName, final String anchorName, final String listNodeXpath)
- Call cpsDataService.deleteListNodeData()
- return 200
REST layer (cpsData.yml)
- Add patch
REST layer (DataRestControllerSpec.groovy)
- Ensure appropriate REST responses on invocation
Service layer (CpsDataService.java)
- Create new abstract method deleteNodeTree()
Service layer (CpsDataServiceImpl.java)
- Override abstract method deleteNodeTree()
- Validate the xpath of the list-nodes String
- call cpsDataPersistenceService.deleteListDataNodes()
- notificationService.processDataUpdatedEvent(dataspaceName, anchorName)
Service layer (CpsDataServiceImplSpec.groovy)
- delete list-node data fragment under existing node
- delete list-node data fragment under non existing node
Persistence layer (CpsDataPersistenceService.java)
- Create new abstract method deleteListDataNodes()
Persistence layer (CpsDataPersistenceServiceImpl.java)
- Override abstract method deleteListDataNodes()
- Use method getFragmentByXpath() to get the parentEntity of the List-Node
- Use parentEntity and a method parameter String listNodeXpath as arguments for method removeListNodeDescendants()
Persistence layer (CpsDataPersistenceServiceSpec.groovy)
- Delete list node content successfully
- Error thrown when listNodeXpath does not existdelete all by dataspace and anchor and xpath starts with provided xpath to list-node (this includes all children as well)
Jira | ||||||||
---|---|---|---|---|---|---|---|---|
|
...