From f85299f538b5ac28fde28ef7c3655fcdf1f52d87 Mon Sep 17 00:00:00 2001 From: Philipp Schramm Date: Tue, 29 Mar 2022 10:22:34 +0200 Subject: [PATCH] RED-3450: Improved exception handling for validating digital KMS signature --- .../service/DigitalSignatureKmsService.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureKmsService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureKmsService.java index 741f1f7ca..ac8a2ff9f 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureKmsService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DigitalSignatureKmsService.java @@ -3,16 +3,20 @@ package com.iqser.red.service.persistence.management.v1.processor.service; import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; import org.springframework.beans.BeanUtils; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import com.iqser.red.service.persistence.management.v1.processor.client.PDFTronRedactionClient; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DigitalSignatureEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DigitalSignatureKmsEntity; +import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; +import com.iqser.red.service.persistence.management.v1.processor.exception.InternalServerErrorException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DigitalSignatureKmsRepository; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.DigitalSignatureKms; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.DigitalSignatureType; +import feign.FeignException; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -30,7 +34,14 @@ public class DigitalSignatureKmsService { public DigitalSignatureKmsEntity saveDigitalSignature(DigitalSignatureKmsEntity digitalSignature) { log.info("Validate digital KMS signature before saving"); - pdfTronRedactionClient.testDigitalSignatureKms(convert(digitalSignature, DigitalSignatureKms.class)); + try { + pdfTronRedactionClient.testDigitalSignatureKms(convert(digitalSignature, DigitalSignatureKms.class)); + } catch (FeignException e) { + if (e.status() == HttpStatus.BAD_REQUEST.value()) { + throw new BadRequestException(e.getMessage(), e); + } + throw new InternalServerErrorException("Could not validate digital KMS signature", e); + } log.info("Digital KMS signature is valid"); encrypt(digitalSignature);