static def patchMediaType = new MediaType('application', 'json-patch+json')
static def patchMediaType3gpp = new MediaType('application', '3gpp-json-patch+json')
- static def patchJsonBody = '[{"op":"replace","path":"/child=id2/attributes","value":{"id":"id1","attributes":{"attr1":"test"}}}]'
+ static def patchJsonBody = '[{"op":"replace","path":"/child=id2/attributes","value":{"attr1":"test"}}]'
static def patchJsonBody3gpp = '[{"op":"replace","path":"/child=id2#/attributes/attr1","value":"test"}]'
static def expectedDeleteChangeRequest = '{"":[]}'
if (patchItem.getPath().contains("#/attributes")) {
operationDetails = buildOperationDetailsForPatchItemWithHash(requestParameters, patchItem);
} else {
- operationDetails = buildOperationDetails(UPDATE, requestParameters, patchItem.getValue());
+ operationDetails = buildOperationDetailsForPatchItem(requestParameters, patchItem);
}
break;
case REMOVE:
return new OperationDetails(OperationType.DELETE, parentFdn, "", emptyList());
}
+ /**
+ * Build OperationDetails for a specific patch item.
+ *
+ * @param requestParameters request parameters including uri-ldn-first-part, className and id
+ * @param patchItem the patch item containing operation details
+ * @return OperationDetails object for the patch item
+ */
+ public OperationDetails buildOperationDetailsForPatchItem(final RequestParameters requestParameters,
+ final PatchItem patchItem) {
+ final Map<String, Object> resourceAsObject = new HashMap<>(2);
+ resourceAsObject.put("id", requestParameters.id());
+ resourceAsObject.put("attributes", patchItem.getValue());
+ return buildOperationDetails(UPDATE, requestParameters, resourceAsObject);
+ }
+
private OperationDetails buildOperationDetailsForPatchItemWithHash(final RequestParameters requestParameters,
final PatchItem patchItem) {
final Map<String, Object> attributeHierarchyAsMap = createNestedMap(patchItem);
where: 'attributes are set using # or resource'
scenario | suffix | value
'set simple value using #' | '#/attributes/attr1' | 456
- 'set complex value using resource' | '' | [id:'id1', attributes:[attr1:456]]
+ 'set complex value using resource' | '/attributes' | [attr1:456]
}
def 'Build an attribute map with different depths of hierarchy with #scenario.'() {