From: seanbeirne Date: Tue, 13 Jan 2026 19:59:23 +0000 (+0000) Subject: Revert removing buildOperationDetailsForPatchItem for patch item replace X-Git-Tag: 3.7.4~10 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F20%2F142920%2F1;p=cps.git Revert removing buildOperationDetailsForPatchItem for patch item replace Issue-ID: CPS-3119 Change-Id: I84fc34aefbc19b30e3a825d444f4e1328218cbf7 Signed-off-by: seanbeirne --- diff --git a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/ProvMnSControllerSpec.groovy b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/ProvMnSControllerSpec.groovy index f4d2bcf5a5..b6288228d6 100644 --- a/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/ProvMnSControllerSpec.groovy +++ b/cps-ncmp-rest/src/test/groovy/org/onap/cps/ncmp/rest/controller/ProvMnSControllerSpec.groovy @@ -100,7 +100,7 @@ class ProvMnSControllerSpec extends Specification { 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 = '{"":[]}' diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/data/policyexecutor/OperationDetailsFactory.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/data/policyexecutor/OperationDetailsFactory.java index 5d5ef96a84..22b3097dc7 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/data/policyexecutor/OperationDetailsFactory.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/impl/data/policyexecutor/OperationDetailsFactory.java @@ -66,7 +66,7 @@ public class OperationDetailsFactory { if (patchItem.getPath().contains("#/attributes")) { operationDetails = buildOperationDetailsForPatchItemWithHash(requestParameters, patchItem); } else { - operationDetails = buildOperationDetails(UPDATE, requestParameters, patchItem.getValue()); + operationDetails = buildOperationDetailsForPatchItem(requestParameters, patchItem); } break; case REMOVE: @@ -109,6 +109,21 @@ public class OperationDetailsFactory { 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 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 attributeHierarchyAsMap = createNestedMap(patchItem); diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/data/policyexecutor/OperationDetailsFactorySpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/data/policyexecutor/OperationDetailsFactorySpec.groovy index f9a9894990..19b16eec4f 100644 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/data/policyexecutor/OperationDetailsFactorySpec.groovy +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/impl/data/policyexecutor/OperationDetailsFactorySpec.groovy @@ -80,7 +80,7 @@ class OperationDetailsFactorySpec extends Specification { 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.'() {