Resources
- - CPS-235Getting issue details... STATUS
- https://www.softwaretestinghelp.com/xpath-writing-cheat-sheet-tutorial-examples/
- https://www.freeformatter.com/xpath-tester.html
*Note when using online xpath testers, ensure that laves are expressed as xml attributes and not like other xml elements like json-to-xml convertors will do.
Incorrect | Correct |
---|---|
<categories> <code>01</code> <name>SciFi</name> <books> </books> </categories> | <categories code=01 name='SciFi'> <books> </books> </categories> |
Queries
Slogan | cpsPath | Jira | Notes | Priority / When do we need this? | |
---|---|---|---|---|---|
1 | get (list element) by xpath | /bookstore/categories[@code='01'] | This is not really a query as code is the key attributes and this xpath is stored with the target fragment | Already implemented | |
2 | get list element by other attribute | /bookstore/categories[@name='SciFi'] | Compare to #1, notice how from a cpsPath perspective it is not clear which is a get and which is a query. The customer might not know either! See issue #1 | Required for E2E Slicing see CPS-200 study | |
3 | //categories [@name='SciFi'] | Investigate if needed for E2E Slicing. | |||
4 | //*[@name='SciFi'] |
Note. All cpsPath queries can be fulfilled by just 1 REST endpoint and Java API method (as agreed earlier). We just need to document the capabilities (xpath functions) support by our cpsPath...
Updates
Slogan | Jira | Notes | Priority / When do we need this? | |
---|---|---|---|---|
1 | Replace DataNode(tree) | This is powerful update method that can fulfill all below scenarios too. However it is a crude and inefficient for scenario with children. Ada a child at the top of the tree will required the client to re-submit all existing data of the siblings and their descendants. replacing all of them in the DB layer which of course could lead to very lengthy update operations. | Already being implemented. Need to investigate if E2E Slicing requires the 'with descendants' option | |
2 | Update Single attribute on single DataNode | Probably required for E2E Slicing | ||
3 | Update Multiple attributes on single DataNode | This could a simple extension of the previous method (#2) by instead of providing one key-value pair it could be map of many. Question remains if we ant to Java-API methods, or one. And if just it could be handled by one user story instead, depending on team preference | ||
4 | Add Child DataNode | Investigate if needed for E2E Slicing. But seems likely this is needed soon and to address the technical debt of the solution in #1 | ||
5 | Add DataNode to List | Investigate if needed for E2E Slicing. But seems likely this is needed soon and to address the technical debt of the solution in #1 | ||
6 | Remove DataNode | Assume this will also cover removing DataNode from a list | Investigate if needed for E2E Slicing. But seems likely this is needed soon and to address the technical debt of the solution in #1 | |
7 | Add element to Leaf-List | Nice-to-have. From experience in similar project this use-case never was prioritized. It can always be done using #3 or #4 instead. My recommendation is to not consider this until a client specially requests it and argues the need for it. | ||
8 | Remove Element from Leaf-List | Nice-to-have. From experience in similar project this use-case never was prioritized. It can always be done using #3 or #4 instead. My recommendation is to not consider this until a client specially requests it and argues the need for it. |