From fd01f113ff95eb63d026dbcff134a3de9d8d0605 Mon Sep 17 00:00:00 2001 From: Gokulraj C <110164849+GOKULRAJ136@users.noreply.github.com> Date: Mon, 3 Feb 2025 12:27:31 +0530 Subject: [PATCH] Error message validation for GetCertificate API [MOSIP-23028] (#1170) * Error message validation for GetCertificate API [MOSIP-23028] Signed-off-by: GOKULRAJ136 <110164849+GOKULRAJ136@users.noreply.github.com> * added proper error code Signed-off-by: GOKULRAJ136 <110164849+GOKULRAJ136@users.noreply.github.com> --------- Signed-off-by: GOKULRAJ136 <110164849+GOKULRAJ136@users.noreply.github.com> --- .../syncdata/constant/AdminServiceErrorCode.java | 3 ++- .../exception/SyncInvalidArgumentException.java | 14 ++++++++++++-- .../syncdata/service/helper/KeymanagerHelper.java | 7 ++++--- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/admin/kernel-syncdata-service/src/main/java/io/mosip/kernel/syncdata/constant/AdminServiceErrorCode.java b/admin/kernel-syncdata-service/src/main/java/io/mosip/kernel/syncdata/constant/AdminServiceErrorCode.java index a9b81912228..5c9aa355712 100644 --- a/admin/kernel-syncdata-service/src/main/java/io/mosip/kernel/syncdata/constant/AdminServiceErrorCode.java +++ b/admin/kernel-syncdata-service/src/main/java/io/mosip/kernel/syncdata/constant/AdminServiceErrorCode.java @@ -7,7 +7,8 @@ public enum AdminServiceErrorCode { INVALID_TIMESTAMP_EXCEPTION("KER-ADM-102", "Timestamp cannot be future date"), LAST_UPDATED_PARSE_EXCEPTION("KER-ADM-103", "Error occurred while parsing lastUpdated timestamp"), SYNC_JOB_DEF_FETCH_EXCEPTION("KER-ADM-104", "Error while fetching sync job def details"), - DATA_NOT_FOUND_EXCEPTION("KER-ADM-105", "data not found for sync job def"); + DATA_NOT_FOUND_EXCEPTION("KER-ADM-105", "data not found for sync job def"), + VALIDATION_ERROR ("KER-ADM-106", "Validation error while fetching Certificate"); private final String errorCode; private final String errorMessage; diff --git a/admin/kernel-syncdata-service/src/main/java/io/mosip/kernel/syncdata/exception/SyncInvalidArgumentException.java b/admin/kernel-syncdata-service/src/main/java/io/mosip/kernel/syncdata/exception/SyncInvalidArgumentException.java index 13382cbcd7d..a3aa06d8016 100644 --- a/admin/kernel-syncdata-service/src/main/java/io/mosip/kernel/syncdata/exception/SyncInvalidArgumentException.java +++ b/admin/kernel-syncdata-service/src/main/java/io/mosip/kernel/syncdata/exception/SyncInvalidArgumentException.java @@ -1,10 +1,12 @@ package io.mosip.kernel.syncdata.exception; -import java.util.List; - import io.mosip.kernel.core.exception.BaseUncheckedException; import io.mosip.kernel.core.exception.ServiceError; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + public class SyncInvalidArgumentException extends BaseUncheckedException { /** @@ -20,6 +22,7 @@ public class SyncInvalidArgumentException extends BaseUncheckedException { * @param list The error list. */ public SyncInvalidArgumentException(List list) { + super(constructMessage(list)); this.list = list; } @@ -32,4 +35,11 @@ public List getList() { return list; } + private static String constructMessage(List list) { + return list.stream() + .map(ServiceError::getMessage) + .filter(Objects::nonNull) + .collect(Collectors.joining(", ")); + } + } diff --git a/admin/kernel-syncdata-service/src/main/java/io/mosip/kernel/syncdata/service/helper/KeymanagerHelper.java b/admin/kernel-syncdata-service/src/main/java/io/mosip/kernel/syncdata/service/helper/KeymanagerHelper.java index 5f8081be908..25a83234add 100644 --- a/admin/kernel-syncdata-service/src/main/java/io/mosip/kernel/syncdata/service/helper/KeymanagerHelper.java +++ b/admin/kernel-syncdata-service/src/main/java/io/mosip/kernel/syncdata/service/helper/KeymanagerHelper.java @@ -2,7 +2,6 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import io.mosip.kernel.core.exception.ExceptionUtils; import io.mosip.kernel.core.http.RequestWrapper; import io.mosip.kernel.core.http.ResponseWrapper; @@ -56,8 +55,7 @@ public KeyPairGenerateResponseDto getCertificate(String applicationId, Optional< try { UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(certificateUrl); builder.queryParam("applicationId", applicationId); - if (referenceId.isPresent()) - builder.queryParam("referenceId", referenceId.get()); + referenceId.ifPresent(id -> builder.queryParam("referenceId", id)); ResponseEntity responseEntity = restTemplate.getForEntity(builder.build().toUri(), String.class); ResponseWrapper resp = objectMapper.readValue(responseEntity.getBody(), @@ -67,6 +65,9 @@ public KeyPairGenerateResponseDto getCertificate(String applicationId, Optional< throw new SyncInvalidArgumentException(resp.getErrors()); return resp.getResponse(); + } catch (SyncInvalidArgumentException e) { + LOGGER.warn("Validation error while fetching Certificate: {}", e.getMessage()); + throw new SyncDataServiceException(AdminServiceErrorCode.VALIDATION_ERROR.getErrorCode(), e.getMessage(), e); } catch (Exception e) { LOGGER.error("Failed to fetch Certificate from keymanager", e); throw new SyncDataServiceException(AdminServiceErrorCode.INTERNAL_SERVER_ERROR.getErrorCode(),