From d0d6f110c56fa90b87009bcef7ce69bcc33487d0 Mon Sep 17 00:00:00 2001 From: dylan Date: Fri, 31 Jan 2025 11:23:57 +0100 Subject: [PATCH] Make applyPatch a generic method --- .../SigningRequestDocumentController.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/main/java/ch/dlmw/swisssignchallenge/controllers/SigningRequestDocumentController.java b/src/main/java/ch/dlmw/swisssignchallenge/controllers/SigningRequestDocumentController.java index ee26dc4..d09c4d7 100644 --- a/src/main/java/ch/dlmw/swisssignchallenge/controllers/SigningRequestDocumentController.java +++ b/src/main/java/ch/dlmw/swisssignchallenge/controllers/SigningRequestDocumentController.java @@ -26,13 +26,7 @@ public class SigningRequestDocumentController implements SigningRequestDocumentA var document = signingRequestDocumentService.getSigningRequestDocument(id); try { - JsonNode patchNode = objectMapper.valueToTree(patchOperations); - - JsonPatch jsonPatch = JsonPatch.fromJson(patchNode); - - JsonNode patchedNode = jsonPatch.apply(objectMapper.convertValue(document, JsonNode.class)); - - SigningRequestDocument patchedDocument = objectMapper.treeToValue(patchedNode, SigningRequestDocument.class); + var patchedDocument = applyPatch(patchOperations, document, SigningRequestDocument.class); signingRequestDocumentService.updateSigningRequestDocument(patchedDocument); @@ -44,4 +38,14 @@ public class SigningRequestDocumentController implements SigningRequestDocumentA } } + private T applyPatch(List patchOperations, T object, Class entityType) throws JsonPatchException, IOException { + JsonNode patchNode = objectMapper.valueToTree(patchOperations); + JsonPatch jsonPatch = JsonPatch.fromJson(patchNode); + + // Convert the entity to JsonNode and apply the patch + JsonNode entityNode = objectMapper.convertValue(object, JsonNode.class); + JsonNode patchedNode = jsonPatch.apply(entityNode); + + return objectMapper.treeToValue(patchedNode, entityType); + } }