From 0ae168d3bd681bb2c78e3e8c8086c14f52097531 Mon Sep 17 00:00:00 2001 From: trialblazerseee Date: Sun, 6 Jul 2025 15:28:59 +0530 Subject: [PATCH 1/6] Main Controller changes in BioSdkServiceProviderImpl_V_1_0 Signed-off-by: trialblazerseee <84778104+trialblazerseee@users.noreply.github.com> --- .../services/controller/MainController.java | 119 +++++++++++++++--- .../BioSdkServiceProviderImpl_V_1_0.java | 55 ++++---- .../utils/BytesToStringSerializer.java | 28 +++++ .../CustomLocalDateTimeDeSerializer.java | 21 ++++ .../utils/CustomLocalDateTimeSerializer.java | 30 +++++ .../io/mosip/biosdk/services/utils/Utils.java | 41 +++++- 6 files changed, 250 insertions(+), 44 deletions(-) create mode 100644 biosdk-services/src/main/java/io/mosip/biosdk/services/utils/BytesToStringSerializer.java create mode 100644 biosdk-services/src/main/java/io/mosip/biosdk/services/utils/CustomLocalDateTimeDeSerializer.java create mode 100644 biosdk-services/src/main/java/io/mosip/biosdk/services/utils/CustomLocalDateTimeSerializer.java diff --git a/biosdk-services/src/main/java/io/mosip/biosdk/services/controller/MainController.java b/biosdk-services/src/main/java/io/mosip/biosdk/services/controller/MainController.java index b1c478ff..ff517fd6 100644 --- a/biosdk-services/src/main/java/io/mosip/biosdk/services/controller/MainController.java +++ b/biosdk-services/src/main/java/io/mosip/biosdk/services/controller/MainController.java @@ -1,7 +1,6 @@ package io.mosip.biosdk.services.controller; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; +import com.fasterxml.jackson.core.JsonProcessingException; import io.mosip.biosdk.services.config.LoggerConfig; import io.mosip.biosdk.services.constants.ErrorMessages; import io.mosip.biosdk.services.dto.*; @@ -51,8 +50,6 @@ public class MainController { @Autowired private BioSdkServiceFactory bioSdkServiceFactory; - private Gson gson = new GsonBuilder().serializeNulls().create();; - @GetMapping(path = "/") @ApiOperation(value = "Service status") @ApiResponses(value = { @ApiResponse(code = 200, message = "Service is running...") }) @@ -82,13 +79,26 @@ public ResponseEntity init( BioSdkServiceProvider bioSdkServiceProviderImpl = null; bioSdkServiceProviderImpl = bioSdkServiceFactory.getBioSdkServiceProvider(request.getVersion()); responseDto.setResponse(bioSdkServiceProviderImpl.init(request)); + return ResponseEntity.status(HttpStatus.OK).body(serviceUtil.getObjectMapper().writeValueAsString(responseDto)); } catch (BioSDKException e) { logger.error(LOGGER_SESSIONID, LOGGER_IDTYPE, "BioSDKException: ", e.getMessage()); ErrorDto errorDto = new ErrorDto(e.getErrorCode(), e.getErrorText()); responseDto.getErrors().add(errorDto); - return ResponseEntity.status(HttpStatus.OK).body(gson.toJson(responseDto)); + try { + return ResponseEntity.status(HttpStatus.OK).body(serviceUtil.getObjectMapper().writeValueAsString(responseDto)); + } catch (JsonProcessingException ex) { + throw new RuntimeException(ex); + } + } catch (JsonProcessingException e) { + logger.error(LOGGER_SESSIONID, LOGGER_IDTYPE, "JsonProcessingException: ", e.getMessage()); + ErrorDto errorDto = new ErrorDto(e.getMessage(), e.getMessage()); + responseDto.getErrors().add(errorDto); + try { + return ResponseEntity.status(HttpStatus.OK).body(serviceUtil.getObjectMapper().writeValueAsString(responseDto)); + } catch (JsonProcessingException ex) { + throw new RuntimeException(ex); + } } - return ResponseEntity.status(HttpStatus.OK).body(gson.toJson(responseDto)); } @PostMapping(path = "/match", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @@ -103,13 +113,26 @@ public ResponseEntity match( BioSdkServiceProvider bioSdkServiceProviderImpl = null; bioSdkServiceProviderImpl = bioSdkServiceFactory.getBioSdkServiceProvider(request.getVersion()); responseDto.setResponse(bioSdkServiceProviderImpl.match(request)); + return ResponseEntity.status(HttpStatus.OK).body(serviceUtil.getObjectMapper().writeValueAsString(responseDto)); } catch (BioSDKException e) { logger.error(LOGGER_SESSIONID, LOGGER_IDTYPE, "BioSDKException: ", e.getMessage()); ErrorDto errorDto = new ErrorDto(e.getErrorCode(), e.getErrorText()); responseDto.getErrors().add(errorDto); - return ResponseEntity.status(HttpStatus.OK).body(gson.toJson(responseDto)); + try { + return ResponseEntity.status(HttpStatus.OK).body(serviceUtil.getObjectMapper().writeValueAsString(responseDto)); + } catch (JsonProcessingException ex) { + throw new RuntimeException(ex); + } + } catch (JsonProcessingException e) { + logger.error(LOGGER_SESSIONID, LOGGER_IDTYPE, "JsonProcessingException: ", e.getMessage()); + ErrorDto errorDto = new ErrorDto(e.getMessage(), e.getMessage()); + responseDto.getErrors().add(errorDto); + try { + return ResponseEntity.status(HttpStatus.OK).body(serviceUtil.getObjectMapper().writeValueAsString(responseDto)); + } catch (JsonProcessingException ex) { + throw new RuntimeException(ex); + } } - return ResponseEntity.status(HttpStatus.OK).body(gson.toJson(responseDto)); } @PostMapping(path = "/check-quality", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @@ -124,13 +147,31 @@ public ResponseEntity checkQuality( BioSdkServiceProvider bioSdkServiceProviderImpl = null; bioSdkServiceProviderImpl = bioSdkServiceFactory.getBioSdkServiceProvider(request.getVersion()); responseDto.setResponse(bioSdkServiceProviderImpl.checkQuality(request)); + Long sleepTime = 1000 - (System.currentTimeMillis() - startTime); + if(sleepTime > 0) + Thread.sleep(sleepTime); + return ResponseEntity.status(HttpStatus.OK).body(serviceUtil.getObjectMapper().writeValueAsString(responseDto)); } catch (BioSDKException e) { logger.error(LOGGER_SESSIONID, LOGGER_IDTYPE, "BioSDKException: ", e.getMessage()); ErrorDto errorDto = new ErrorDto(e.getErrorCode(), e.getErrorText()); responseDto.getErrors().add(errorDto); - return ResponseEntity.status(HttpStatus.OK).body(gson.toJson(responseDto)); + try { + return ResponseEntity.status(HttpStatus.OK).body(serviceUtil.getObjectMapper().writeValueAsString(responseDto)); + } catch (JsonProcessingException ex) { + throw new RuntimeException(ex); + } + } catch (JsonProcessingException e) { + logger.error(LOGGER_SESSIONID, LOGGER_IDTYPE, "JsonProcessingException: ", e.getMessage()); + ErrorDto errorDto = new ErrorDto(e.getMessage(), e.getMessage()); + responseDto.getErrors().add(errorDto); + try { + return ResponseEntity.status(HttpStatus.OK).body(serviceUtil.getObjectMapper().writeValueAsString(responseDto)); + } catch (JsonProcessingException ex) { + throw new RuntimeException(ex); + } + } catch (InterruptedException e) { + throw new RuntimeException(e); } - return ResponseEntity.status(HttpStatus.OK).body(gson.toJson(responseDto)); } @PostMapping(path = "/extract-template", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @@ -145,13 +186,33 @@ public ResponseEntity extractTemplate( BioSdkServiceProvider bioSdkServiceProviderImpl = null; bioSdkServiceProviderImpl = bioSdkServiceFactory.getBioSdkServiceProvider(request.getVersion()); responseDto.setResponse(bioSdkServiceProviderImpl.extractTemplate(request)); + Long sleepTime = 2000 - (System.currentTimeMillis() - startTime); + if(sleepTime > 0) + Thread.sleep(sleepTime); + String response = serviceUtil.getObjectMapper().writeValueAsString(responseDto); + + return ResponseEntity.status(HttpStatus.OK).body(response); } catch (BioSDKException e) { logger.error(LOGGER_SESSIONID, LOGGER_IDTYPE, "BioSDKException: ", e.getMessage()); ErrorDto errorDto = new ErrorDto(e.getErrorCode(), e.getErrorText()); responseDto.getErrors().add(errorDto); - return ResponseEntity.status(HttpStatus.OK).body(gson.toJson(responseDto)); + try { + return ResponseEntity.status(HttpStatus.OK).body(serviceUtil.getObjectMapper().writeValueAsString(responseDto)); + } catch (JsonProcessingException ex) { + throw new RuntimeException(ex); + } + } catch (JsonProcessingException e) { + logger.error(LOGGER_SESSIONID, LOGGER_IDTYPE, "JsonProcessingException: ", e.getMessage()); + ErrorDto errorDto = new ErrorDto(e.getMessage(), e.getMessage()); + responseDto.getErrors().add(errorDto); + try { + return ResponseEntity.status(HttpStatus.OK).body(serviceUtil.getObjectMapper().writeValueAsString(responseDto)); + } catch (JsonProcessingException ex) { + throw new RuntimeException(ex); + } + } catch (InterruptedException e) { + throw new RuntimeException(e); } - return ResponseEntity.status(HttpStatus.OK).body(gson.toJson(responseDto)); } @PostMapping(path = "/convert-format", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @@ -166,13 +227,26 @@ public ResponseEntity convertFormat( BioSdkServiceProvider bioSdkServiceProviderImpl = null; bioSdkServiceProviderImpl = bioSdkServiceFactory.getBioSdkServiceProvider(request.getVersion()); responseDto.setResponse(bioSdkServiceProviderImpl.convertFormat(request)); + return ResponseEntity.status(HttpStatus.OK).body(serviceUtil.getObjectMapper().writeValueAsString(responseDto)); } catch (BioSDKException e) { logger.error(LOGGER_SESSIONID, LOGGER_IDTYPE, "BioSDKException: ", e.getMessage()); ErrorDto errorDto = new ErrorDto(e.getErrorCode(), e.getErrorText()); responseDto.getErrors().add(errorDto); - return ResponseEntity.status(HttpStatus.OK).body(gson.toJson(responseDto)); + try { + return ResponseEntity.status(HttpStatus.OK).body(serviceUtil.getObjectMapper().writeValueAsString(responseDto)); + } catch (JsonProcessingException ex) { + throw new RuntimeException(ex); + } + } catch (JsonProcessingException e) { + logger.error(LOGGER_SESSIONID, LOGGER_IDTYPE, "JsonProcessingException: ", e.getMessage()); + ErrorDto errorDto = new ErrorDto(e.getMessage(), e.getMessage()); + responseDto.getErrors().add(errorDto); + try { + return ResponseEntity.status(HttpStatus.OK).body(serviceUtil.getObjectMapper().writeValueAsString(responseDto)); + } catch (JsonProcessingException ex) { + throw new RuntimeException(ex); + } } - return ResponseEntity.status(HttpStatus.OK).body(gson.toJson(responseDto)); } @PostMapping(path = "/segment", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @@ -187,13 +261,26 @@ public ResponseEntity segment( BioSdkServiceProvider bioSdkServiceProviderImpl = null; bioSdkServiceProviderImpl = bioSdkServiceFactory.getBioSdkServiceProvider(request.getVersion()); responseDto.setResponse(bioSdkServiceProviderImpl.segment(request)); + return ResponseEntity.status(HttpStatus.OK).body(serviceUtil.getObjectMapper().writeValueAsString(responseDto)); } catch (BioSDKException e) { logger.error(LOGGER_SESSIONID, LOGGER_IDTYPE, "BioSDKException: ", e.getMessage()); ErrorDto errorDto = new ErrorDto(e.getErrorCode(), e.getErrorText()); responseDto.getErrors().add(errorDto); - return ResponseEntity.status(HttpStatus.OK).body(gson.toJson(responseDto)); + try { + return ResponseEntity.status(HttpStatus.OK).body(serviceUtil.getObjectMapper().writeValueAsString(responseDto)); + } catch (JsonProcessingException ex) { + throw new RuntimeException(ex); + } + } catch (JsonProcessingException e) { + logger.error(LOGGER_SESSIONID, LOGGER_IDTYPE, "JsonProcessingException: ", e.getMessage()); + ErrorDto errorDto = new ErrorDto(e.getMessage(), e.getMessage()); + responseDto.getErrors().add(errorDto); + try { + return ResponseEntity.status(HttpStatus.OK).body(serviceUtil.getObjectMapper().writeValueAsString(responseDto)); + } catch (JsonProcessingException ex) { + throw new RuntimeException(ex); + } } - return ResponseEntity.status(HttpStatus.OK).body(gson.toJson(responseDto)); } private ResponseDto generateResponseTemplate(String version){ diff --git a/biosdk-services/src/main/java/io/mosip/biosdk/services/impl/spec_1_0/BioSdkServiceProviderImpl_V_1_0.java b/biosdk-services/src/main/java/io/mosip/biosdk/services/impl/spec_1_0/BioSdkServiceProviderImpl_V_1_0.java index 798920cd..4c4f7017 100644 --- a/biosdk-services/src/main/java/io/mosip/biosdk/services/impl/spec_1_0/BioSdkServiceProviderImpl_V_1_0.java +++ b/biosdk-services/src/main/java/io/mosip/biosdk/services/impl/spec_1_0/BioSdkServiceProviderImpl_V_1_0.java @@ -3,6 +3,15 @@ import static io.mosip.biosdk.services.constants.AppConstants.LOGGER_IDTYPE; import static io.mosip.biosdk.services.constants.AppConstants.LOGGER_SESSIONID; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.module.afterburner.AfterburnerModule; +import io.mosip.biosdk.services.utils.CustomLocalDateTimeDeSerializer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @@ -28,6 +37,8 @@ import io.mosip.kernel.biometrics.spi.IBioApiV2; import io.mosip.kernel.core.logger.spi.Logger; +import java.time.LocalDateTime; + @Component public class BioSdkServiceProviderImpl_V_1_0 implements BioSdkServiceProvider { @@ -44,8 +55,6 @@ public class BioSdkServiceProviderImpl_V_1_0 implements BioSdkServiceProvider { @Autowired private Utils utils; - private Gson gson = new GsonBuilder().serializeNulls().create(); - @Value("${mosip.biosdk.log-request-response-enabled:false}") private boolean isLogRequestResponse; @@ -59,9 +68,9 @@ public Object init(RequestDto request){ SDKInfo sdkInfo = null; String decryptedRequest = decode(request.getRequest()); logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"init: ", "decoding successful"); - InitRequestDto initRequestDto = gson.fromJson(decryptedRequest, InitRequestDto.class); - logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"init: ", "json to dto successful"); try { + InitRequestDto initRequestDto = utils.getObjectMapper().readValue(decryptedRequest, new TypeReference() {}); + logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"init: ", "json to dto successful"); logRequest(initRequestDto); sdkInfo = iBioApi.init(initRequestDto.getInitParams()); logObject(sdkInfo); @@ -78,9 +87,10 @@ public Object checkQuality(RequestDto request) { Response response; String decryptedRequest = decode(request.getRequest()); logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"checkQuality: ", "decoding successful"); - CheckQualityRequestDto checkQualityRequestDto = gson.fromJson(decryptedRequest, CheckQualityRequestDto.class); - logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"checkQuality: ", "json to dto successful"); + try { + CheckQualityRequestDto checkQualityRequestDto = utils.getObjectMapper().readValue(decryptedRequest, new TypeReference() {}); + logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"checkQuality: ", "json to dto successful"); logRequest(checkQualityRequestDto); response = iBioApi.checkQuality( checkQualityRequestDto.getSample(), @@ -101,10 +111,10 @@ public Object match(RequestDto request) { Response response; String decryptedRequest = decode(request.getRequest()); logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"match: ", "decoding successful"); - MatchRequestDto matchRequestDto = gson.fromJson(decryptedRequest, MatchRequestDto.class); - logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"match: ", "json to dto successful"); try { - logRequest(matchRequestDto); + MatchRequestDto matchRequestDto = utils.getObjectMapper().readValue(decryptedRequest, new TypeReference() {}); + logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"match: ", "json to dto successful"); + logRequest(matchRequestDto); response = iBioApi.match( matchRequestDto.getSample(), matchRequestDto.getGallery(), @@ -124,11 +134,11 @@ public Object match(RequestDto request) { public Object extractTemplate(RequestDto request) { Response response; String decryptedRequest = decode(request.getRequest()); - logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"extractTemplate: ", "decoding successful"); - ExtractTemplateRequestDto extractTemplateRequestDto = gson.fromJson(decryptedRequest, ExtractTemplateRequestDto.class); - logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"extractTemplate: ", "json to dto successful"); + logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"extractTemplate: ", "decoding successful" + (System.currentTimeMillis() - startTime) + " ms"); try { - logRequest(extractTemplateRequestDto); + ExtractTemplateRequestDto extractTemplateRequestDto = utils.getObjectMapper().readValue(decryptedRequest, new TypeReference() {}); + logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"extractTemplate: ", "json to dto successful" + (System.currentTimeMillis() - startTime) + " ms"); + logRequest(extractTemplateRequestDto); response = iBioApi.extractTemplate( extractTemplateRequestDto.getSample(), extractTemplateRequestDto.getModalitiesToExtract(), @@ -148,9 +158,10 @@ public Object segment(RequestDto request) { Response response; String decryptedRequest = decode(request.getRequest()); logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"segment: ", "decoding successful"); - SegmentRequestDto segmentRequestDto = gson.fromJson(decryptedRequest, SegmentRequestDto.class); - logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"segment: ", "json to dto successful"); + try { + SegmentRequestDto segmentRequestDto = utils.getObjectMapper().readValue(decryptedRequest, new TypeReference() {}); + logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"segment: ", "json to dto successful"); logRequest(segmentRequestDto); response = iBioApi.segment( segmentRequestDto.getSample(), @@ -171,10 +182,10 @@ public Object convertFormat(RequestDto request) { Response response; String decryptedRequest = decode(request.getRequest()); logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"convertFormat: ", "decoding successful"); - ConvertFormatRequestDto convertFormatRequestDto = gson.fromJson(decryptedRequest, ConvertFormatRequestDto.class); - logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"convertFormat: ", "json to dto successful"); try { - logRequest(convertFormatRequestDto); + ConvertFormatRequestDto convertFormatRequestDto = utils.getObjectMapper().readValue(decryptedRequest, new TypeReference() {}); + logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"convertFormat: ", "json to dto successful"); + logRequest(convertFormatRequestDto); response = iBioApi.convertFormatV2( convertFormatRequestDto.getSample(), convertFormatRequestDto.getSourceFormat(), @@ -228,20 +239,20 @@ private void logRequest(ConvertFormatRequestDto convertFormatRequestDto) { } } - private void logObject(T response) { + private void logObject(T response) throws JsonProcessingException { if(isLogRequestResponse) { - logger.debug(response.getClass() + ": " + gson.toJson(response)); + logger.debug(response.getClass() + ": " + utils.getObjectMapper().writeValueAsString(response)); } } - private void logResponse(Response response) { + private void logResponse(Response response) throws JsonProcessingException { if(isLogRequestResponse) { Object resp = response.getResponse(); if(resp instanceof BiometricRecord) { BiometricRecord biometricRecord = (BiometricRecord) resp; logBiometricRecord("Response BiometricRecord: ", biometricRecord); } else { - logger.debug("Response: " + gson.toJson(resp)); + logger.debug("Response: " + utils.getObjectMapper().writeValueAsString(resp)); } } } diff --git a/biosdk-services/src/main/java/io/mosip/biosdk/services/utils/BytesToStringSerializer.java b/biosdk-services/src/main/java/io/mosip/biosdk/services/utils/BytesToStringSerializer.java new file mode 100644 index 00000000..6b341fcf --- /dev/null +++ b/biosdk-services/src/main/java/io/mosip/biosdk/services/utils/BytesToStringSerializer.java @@ -0,0 +1,28 @@ +package io.mosip.biosdk.services.utils; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; + +import java.io.IOException; + +public class BytesToStringSerializer extends StdSerializer { + + public BytesToStringSerializer() { + super(byte[].class); + } + + protected BytesToStringSerializer(Class t) { + super(t); + } + + @Override + public void serialize(byte[] value, JsonGenerator gen, SerializerProvider provider) throws IOException { + int[] builder = new int[value.length]; + for(int i = 0; i < value.length; i++) { + builder[i] = Integer.parseInt(Byte.toString(value[i])); + } + + gen.writeArray(builder, 0, value.length);; + } +} \ No newline at end of file diff --git a/biosdk-services/src/main/java/io/mosip/biosdk/services/utils/CustomLocalDateTimeDeSerializer.java b/biosdk-services/src/main/java/io/mosip/biosdk/services/utils/CustomLocalDateTimeDeSerializer.java new file mode 100644 index 00000000..a3e5fd3c --- /dev/null +++ b/biosdk-services/src/main/java/io/mosip/biosdk/services/utils/CustomLocalDateTimeDeSerializer.java @@ -0,0 +1,21 @@ +package io.mosip.biosdk.services.utils; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.JsonNode; + +import java.io.IOException; +import java.time.LocalDateTime; + +public class CustomLocalDateTimeDeSerializer extends JsonDeserializer { + @Override + public LocalDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { + JsonNode node = jsonParser.getCodec().readTree(jsonParser); + JsonNode date = node.get("date"); + JsonNode time = node.get("time"); + + LocalDateTime localDateTime = LocalDateTime.of(date.get("year").intValue(), date.get("month").intValue(), date.get("day").intValue(), time.get("hour").intValue(), time.get("minute").intValue(), time.get("second").intValue(), time.get("nano").intValue()); + return localDateTime; + } +} diff --git a/biosdk-services/src/main/java/io/mosip/biosdk/services/utils/CustomLocalDateTimeSerializer.java b/biosdk-services/src/main/java/io/mosip/biosdk/services/utils/CustomLocalDateTimeSerializer.java new file mode 100644 index 00000000..67c049ca --- /dev/null +++ b/biosdk-services/src/main/java/io/mosip/biosdk/services/utils/CustomLocalDateTimeSerializer.java @@ -0,0 +1,30 @@ +package io.mosip.biosdk.services.utils; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; + +import java.io.IOException; +import java.time.LocalDateTime; + +public class CustomLocalDateTimeSerializer extends JsonSerializer { + @Override + public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + gen.writeStartObject(); + + gen.writeObjectFieldStart("date"); + gen.writeNumberField("year", value.getYear()); + gen.writeNumberField("month", value.getMonthValue()); + gen.writeNumberField("day", value.getDayOfMonth()); + gen.writeEndObject(); + + gen.writeObjectFieldStart("time"); + gen.writeNumberField("hour", value.getHour()); + gen.writeNumberField("minute", value.getMinute()); + gen.writeNumberField("second", value.getSecond()); + gen.writeNumberField("nano", value.getNano()); + gen.writeEndObject(); + + gen.writeEndObject(); + } +} \ No newline at end of file diff --git a/biosdk-services/src/main/java/io/mosip/biosdk/services/utils/Utils.java b/biosdk-services/src/main/java/io/mosip/biosdk/services/utils/Utils.java index 9a29bb5d..a3098fab 100644 --- a/biosdk-services/src/main/java/io/mosip/biosdk/services/utils/Utils.java +++ b/biosdk-services/src/main/java/io/mosip/biosdk/services/utils/Utils.java @@ -9,6 +9,14 @@ import java.util.List; import java.util.function.BiConsumer; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.module.afterburner.AfterburnerModule; import org.apache.commons.codec.digest.DigestUtils; import org.json.simple.parser.ParseException; import org.springframework.beans.factory.annotation.Autowired; @@ -31,8 +39,7 @@ @Component public class Utils { - @Autowired - private Gson gson; + private ObjectMapper mapper; private String utcDateTimePattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; @@ -40,8 +47,8 @@ public String getCurrentResponseTime() { return DateUtils.formatDate(new Date(System.currentTimeMillis()), utcDateTimePattern); } - public RequestDto getRequestInfo(String request) throws ParseException { - return gson.fromJson(request, RequestDto.class); + public RequestDto getRequestInfo(String request) throws ParseException, JsonProcessingException { + return getObjectMapper().readValue(request, new TypeReference() {}); } public static String base64Decode(String data){ @@ -80,9 +87,13 @@ private void appendString(BiometricRecord biometricRecord, StringBuilder stringB stringBuilder.append(" }"); } } - + private String stringOf(Object obj) { - return obj == null ? "null" : gson.toJson(obj); + try { + return obj == null ? "null" : getObjectMapper().writeValueAsString(obj); + } catch (JsonProcessingException e) { + return null; + } } private void appendString(Iterator iterator, StringBuilder stringBuilder, BiConsumer appendBiConsumer) { @@ -311,4 +322,22 @@ private String dateAsString(LocalDateTime localDateTime) { private static String booleanAsString(Boolean bool) { return bool == null ? "null" : Boolean.toString(bool); } + + public ObjectMapper getObjectMapper() { + if(mapper == null) { + mapper = new ObjectMapper().registerModule(new AfterburnerModule()); + SimpleModule module = new SimpleModule(); + module.addDeserializer(LocalDateTime.class, new CustomLocalDateTimeDeSerializer()); + module.addSerializer(LocalDateTime.class, new CustomLocalDateTimeSerializer()); + module.addSerializer(byte[].class, new BytesToStringSerializer()); + mapper.registerModule(module); + mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); + mapper.enable(SerializationFeature.INDENT_OUTPUT); + mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); + mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); + mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); + } + return mapper; + } + } From 4b91809b3072902a7e7ec4ba64ed958c54ff1020 Mon Sep 17 00:00:00 2001 From: trialblazerseee Date: Sun, 6 Jul 2025 15:35:39 +0530 Subject: [PATCH 2/6] Main Controller changes in BioSdkServiceProviderImpl_V_1_0 Signed-off-by: trialblazerseee Signed-off-by: trialblazerseee <84778104+trialblazerseee@users.noreply.github.com> --- .github/workflows/push-trigger-manual.yml | 102 ++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 .github/workflows/push-trigger-manual.yml diff --git a/.github/workflows/push-trigger-manual.yml b/.github/workflows/push-trigger-manual.yml new file mode 100644 index 00000000..d3992e1b --- /dev/null +++ b/.github/workflows/push-trigger-manual.yml @@ -0,0 +1,102 @@ +name: Manual Maven Package upon a push + +on: + workflow_dispatch: + inputs: + message: + description: 'Message for manually triggering' + required: false + default: 'Triggered for Updates' + type: string + push: + branches: + - '!release-branch' + - release* + - master + - 1.* + - develop + - MOSIP* + +jobs: + build: + + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 11 + uses: actions/setup-java@v1 + with: + ref: ${{ github.ref }} + java-version: 11 + server-id: ossrh # Value of the distributionManagement/repository/id field of the pom.xml + settings-path: ${{ github.workspace }} # location for the settings.xml file + + - name: Setup branch and env + run: | + # Strip git ref prefix from version + echo "BRANCH_NAME=$(echo ${{ github.ref }} | sed -e 's,.*/\(.*\),\1,')" >> $GITHUB_ENV + echo "GPG_TTY=$(tty)" >> $GITHUB_ENV + - name: Setup branch and GPG public key + run: | + # Strip git ref prefix from version + echo ${{ env.BRANCH_NAME }} + # echo ${{ env.GPG_TTY }} + # sudo apt-get --yes install gnupg2 + # gpg2 --import ./.github/keys/mosipgpgkey_pub.gpg + # gpg2 --quiet --batch --passphrase=${{secrets.gpg_secret}} --allow-secret-key-import --import ./.github/keys/mosipgpgkey_sec.gpg + + - uses: actions/cache@v4 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven-${{ env.BRANCH_NAME }} + - name: Setup the settings file for ossrh server + run: echo " ossrh ${{secrets.ossrh_user}} ${{secrets.ossrh_secret}} ossrh true gpg2 ${{secrets.gpg_secret}} allow-snapshots true snapshots-repo https://oss.sonatype.org/content/repositories/snapshots false true releases-repo https://oss.sonatype.org/service/local/staging/deploy/maven2 true false sonar . https://sonarcloud.io false " > $GITHUB_WORKSPACE/settings.xml + + - name: Build with Maven + run: | + cd biosdk-services + mvn -B package -s $GITHUB_WORKSPACE/settings.xml -DskipTests -Dgpg.skip=true --file pom.xml + + - name: Ready the springboot artifacts + run: find -name '*.jar' -executable -type f -exec zip release.zip {} + + + + - name: Upload the springboot jars + uses: actions/upload-artifact@v4 + with: + name: release + path: ./release.zip + + - name: Build biosdk-service + run: | + # The Mosip Stage Executor is not packaged as part of release.zip + cd "./$SERVICE_LOCATION" + docker build . --build-arg SOURCE=mosip --build-arg COMMIT_HASH=$(git rev-parse HEAD) --build-arg COMMIT_ID=$(git rev-parse --short HEAD) --build-arg BUILD_TIME=${{steps.date.outputs.date}} --file Dockerfile --tag $SERVICE_NAME + env: + SERVICE_NAME: biosdk-server + SERVICE_LOCATION: biosdk-services + + - name: Log into registry + run: echo "${{ secrets.release_docker_hub }}" | docker login -u ${{ secrets.actor_docker_hub }} --password-stdin + + - name: Push image + run: | + IMAGE_ID=$NAMESPACE/$SERVICE_NAME + + # Change all uppercase to lowercase + IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') + if [[ $BRANCH_NAME == master ]]; then + VERSION=latest + else + VERSION=$BRANCH_NAME + fi + echo IMAGE_ID=$IMAGE_ID + echo VERSION=$VERSION + docker tag $SERVICE_NAME $IMAGE_ID:$VERSION + docker push $IMAGE_ID:$VERSION + env: + NAMESPACE: ${{ secrets.dev_namespace_docker_hub }} + SERVICE_NAME: biosdk-server + SERVICE_LOCATION: biosdk-services From 32b4a074b0589b415070dec5bd815e9b52208dde Mon Sep 17 00:00:00 2001 From: trialblazerseee Date: Sun, 6 Jul 2025 15:43:15 +0530 Subject: [PATCH 3/6] Main Controller changes in BioSdkServiceProviderImpl_V_1_0 Signed-off-by: trialblazerseee Signed-off-by: trialblazerseee <84778104+trialblazerseee@users.noreply.github.com> --- .../io/mosip/biosdk/services/controller/MainController.java | 2 ++ .../impl/spec_1_0/BioSdkServiceProviderImpl_V_1_0.java | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/biosdk-services/src/main/java/io/mosip/biosdk/services/controller/MainController.java b/biosdk-services/src/main/java/io/mosip/biosdk/services/controller/MainController.java index ff517fd6..5d56d2b0 100644 --- a/biosdk-services/src/main/java/io/mosip/biosdk/services/controller/MainController.java +++ b/biosdk-services/src/main/java/io/mosip/biosdk/services/controller/MainController.java @@ -141,6 +141,7 @@ public ResponseEntity match( public ResponseEntity checkQuality( @Validated @RequestBody(required = true) RequestDto request, @ApiIgnore Errors errors) { + Long startTime = System.currentTimeMillis(); ResponseDto responseDto = generateResponseTemplate(request.getVersion()); try { responseDto.setVersion(request.getVersion()); @@ -180,6 +181,7 @@ public ResponseEntity checkQuality( public ResponseEntity extractTemplate( @Validated @RequestBody(required = true) RequestDto request, @ApiIgnore Errors errors) { + Long startTime = System.currentTimeMillis(); ResponseDto responseDto = generateResponseTemplate(request.getVersion()); try { responseDto.setVersion(request.getVersion()); diff --git a/biosdk-services/src/main/java/io/mosip/biosdk/services/impl/spec_1_0/BioSdkServiceProviderImpl_V_1_0.java b/biosdk-services/src/main/java/io/mosip/biosdk/services/impl/spec_1_0/BioSdkServiceProviderImpl_V_1_0.java index 4c4f7017..498957a9 100644 --- a/biosdk-services/src/main/java/io/mosip/biosdk/services/impl/spec_1_0/BioSdkServiceProviderImpl_V_1_0.java +++ b/biosdk-services/src/main/java/io/mosip/biosdk/services/impl/spec_1_0/BioSdkServiceProviderImpl_V_1_0.java @@ -134,10 +134,10 @@ public Object match(RequestDto request) { public Object extractTemplate(RequestDto request) { Response response; String decryptedRequest = decode(request.getRequest()); - logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"extractTemplate: ", "decoding successful" + (System.currentTimeMillis() - startTime) + " ms"); + logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"extractTemplate: ", "decoding successful"); try { ExtractTemplateRequestDto extractTemplateRequestDto = utils.getObjectMapper().readValue(decryptedRequest, new TypeReference() {}); - logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"extractTemplate: ", "json to dto successful" + (System.currentTimeMillis() - startTime) + " ms"); + logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"extractTemplate: ", "json to dto successful"); logRequest(extractTemplateRequestDto); response = iBioApi.extractTemplate( extractTemplateRequestDto.getSample(), From 1b082f8cd095e668cbbece17539959d70b2dbd78 Mon Sep 17 00:00:00 2001 From: trialblazerseee Date: Sun, 6 Jul 2025 15:47:01 +0530 Subject: [PATCH 4/6] Main Controller changes in BioSdkServiceProviderImpl_V_1_0 Signed-off-by: trialblazerseee Signed-off-by: trialblazerseee <84778104+trialblazerseee@users.noreply.github.com> --- biosdk-services/pom.xml | 6 ------ .../spec_1_0/BioSdkServiceProviderImpl_V_1_0.java | 12 ------------ .../java/io/mosip/biosdk/services/utils/Utils.java | 3 --- 3 files changed, 21 deletions(-) diff --git a/biosdk-services/pom.xml b/biosdk-services/pom.xml index 5e8b66ac..5d4cfcc8 100644 --- a/biosdk-services/pom.xml +++ b/biosdk-services/pom.xml @@ -159,12 +159,6 @@ json-simple 1.1.1 - - com.google.code.gson - gson - 2.8.6 - - diff --git a/biosdk-services/src/main/java/io/mosip/biosdk/services/impl/spec_1_0/BioSdkServiceProviderImpl_V_1_0.java b/biosdk-services/src/main/java/io/mosip/biosdk/services/impl/spec_1_0/BioSdkServiceProviderImpl_V_1_0.java index 498957a9..cf00dcdf 100644 --- a/biosdk-services/src/main/java/io/mosip/biosdk/services/impl/spec_1_0/BioSdkServiceProviderImpl_V_1_0.java +++ b/biosdk-services/src/main/java/io/mosip/biosdk/services/impl/spec_1_0/BioSdkServiceProviderImpl_V_1_0.java @@ -3,22 +3,12 @@ import static io.mosip.biosdk.services.constants.AppConstants.LOGGER_IDTYPE; import static io.mosip.biosdk.services.constants.AppConstants.LOGGER_SESSIONID; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.module.SimpleModule; -import com.fasterxml.jackson.module.afterburner.AfterburnerModule; -import io.mosip.biosdk.services.utils.CustomLocalDateTimeDeSerializer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - import io.mosip.biosdk.services.config.LoggerConfig; import io.mosip.biosdk.services.constants.ErrorMessages; import io.mosip.biosdk.services.dto.RequestDto; @@ -37,8 +27,6 @@ import io.mosip.kernel.biometrics.spi.IBioApiV2; import io.mosip.kernel.core.logger.spi.Logger; -import java.time.LocalDateTime; - @Component public class BioSdkServiceProviderImpl_V_1_0 implements BioSdkServiceProvider { diff --git a/biosdk-services/src/main/java/io/mosip/biosdk/services/utils/Utils.java b/biosdk-services/src/main/java/io/mosip/biosdk/services/utils/Utils.java index a3098fab..ac0e46a9 100644 --- a/biosdk-services/src/main/java/io/mosip/biosdk/services/utils/Utils.java +++ b/biosdk-services/src/main/java/io/mosip/biosdk/services/utils/Utils.java @@ -19,11 +19,8 @@ import com.fasterxml.jackson.module.afterburner.AfterburnerModule; import org.apache.commons.codec.digest.DigestUtils; import org.json.simple.parser.ParseException; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import com.google.gson.Gson; - import io.mosip.biosdk.services.dto.RequestDto; import io.mosip.biosdk.services.impl.spec_1_0.dto.request.CheckQualityRequestDto; import io.mosip.biosdk.services.impl.spec_1_0.dto.request.ConvertFormatRequestDto; From 0e57b1c7e75562ed447ca18248dc3a92309e8159 Mon Sep 17 00:00:00 2001 From: TRIALBLAZERS <84778104+trialblazerseee@users.noreply.github.com> Date: Mon, 7 Jul 2025 12:01:22 +0530 Subject: [PATCH 5/6] Delete .github/workflows/push-trigger-manual.yml Signed-off-by: TRIALBLAZERS <84778104+trialblazerseee@users.noreply.github.com> Signed-off-by: trialblazerseee <84778104+trialblazerseee@users.noreply.github.com> --- .github/workflows/push-trigger-manual.yml | 102 ---------------------- 1 file changed, 102 deletions(-) delete mode 100644 .github/workflows/push-trigger-manual.yml diff --git a/.github/workflows/push-trigger-manual.yml b/.github/workflows/push-trigger-manual.yml deleted file mode 100644 index d3992e1b..00000000 --- a/.github/workflows/push-trigger-manual.yml +++ /dev/null @@ -1,102 +0,0 @@ -name: Manual Maven Package upon a push - -on: - workflow_dispatch: - inputs: - message: - description: 'Message for manually triggering' - required: false - default: 'Triggered for Updates' - type: string - push: - branches: - - '!release-branch' - - release* - - master - - 1.* - - develop - - MOSIP* - -jobs: - build: - - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 11 - uses: actions/setup-java@v1 - with: - ref: ${{ github.ref }} - java-version: 11 - server-id: ossrh # Value of the distributionManagement/repository/id field of the pom.xml - settings-path: ${{ github.workspace }} # location for the settings.xml file - - - name: Setup branch and env - run: | - # Strip git ref prefix from version - echo "BRANCH_NAME=$(echo ${{ github.ref }} | sed -e 's,.*/\(.*\),\1,')" >> $GITHUB_ENV - echo "GPG_TTY=$(tty)" >> $GITHUB_ENV - - name: Setup branch and GPG public key - run: | - # Strip git ref prefix from version - echo ${{ env.BRANCH_NAME }} - # echo ${{ env.GPG_TTY }} - # sudo apt-get --yes install gnupg2 - # gpg2 --import ./.github/keys/mosipgpgkey_pub.gpg - # gpg2 --quiet --batch --passphrase=${{secrets.gpg_secret}} --allow-secret-key-import --import ./.github/keys/mosipgpgkey_sec.gpg - - - uses: actions/cache@v4 - with: - path: ~/.m2/repository - key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} - restore-keys: | - ${{ runner.os }}-maven-${{ env.BRANCH_NAME }} - - name: Setup the settings file for ossrh server - run: echo " ossrh ${{secrets.ossrh_user}} ${{secrets.ossrh_secret}} ossrh true gpg2 ${{secrets.gpg_secret}} allow-snapshots true snapshots-repo https://oss.sonatype.org/content/repositories/snapshots false true releases-repo https://oss.sonatype.org/service/local/staging/deploy/maven2 true false sonar . https://sonarcloud.io false " > $GITHUB_WORKSPACE/settings.xml - - - name: Build with Maven - run: | - cd biosdk-services - mvn -B package -s $GITHUB_WORKSPACE/settings.xml -DskipTests -Dgpg.skip=true --file pom.xml - - - name: Ready the springboot artifacts - run: find -name '*.jar' -executable -type f -exec zip release.zip {} + - - - - name: Upload the springboot jars - uses: actions/upload-artifact@v4 - with: - name: release - path: ./release.zip - - - name: Build biosdk-service - run: | - # The Mosip Stage Executor is not packaged as part of release.zip - cd "./$SERVICE_LOCATION" - docker build . --build-arg SOURCE=mosip --build-arg COMMIT_HASH=$(git rev-parse HEAD) --build-arg COMMIT_ID=$(git rev-parse --short HEAD) --build-arg BUILD_TIME=${{steps.date.outputs.date}} --file Dockerfile --tag $SERVICE_NAME - env: - SERVICE_NAME: biosdk-server - SERVICE_LOCATION: biosdk-services - - - name: Log into registry - run: echo "${{ secrets.release_docker_hub }}" | docker login -u ${{ secrets.actor_docker_hub }} --password-stdin - - - name: Push image - run: | - IMAGE_ID=$NAMESPACE/$SERVICE_NAME - - # Change all uppercase to lowercase - IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') - if [[ $BRANCH_NAME == master ]]; then - VERSION=latest - else - VERSION=$BRANCH_NAME - fi - echo IMAGE_ID=$IMAGE_ID - echo VERSION=$VERSION - docker tag $SERVICE_NAME $IMAGE_ID:$VERSION - docker push $IMAGE_ID:$VERSION - env: - NAMESPACE: ${{ secrets.dev_namespace_docker_hub }} - SERVICE_NAME: biosdk-server - SERVICE_LOCATION: biosdk-services From 8fcd7e989492700ee30b7f77e93b9540fe1e842a Mon Sep 17 00:00:00 2001 From: trialblazerseee <84778104+trialblazerseee@users.noreply.github.com> Date: Mon, 7 Jul 2025 18:49:50 +0530 Subject: [PATCH 6/6] MOSIP-42130 - Performance Improvement - biosdk-services Signed-off-by: trialblazerseee <84778104+trialblazerseee@users.noreply.github.com> --- .../biosdk/services/controller/MainController.java | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/biosdk-services/src/main/java/io/mosip/biosdk/services/controller/MainController.java b/biosdk-services/src/main/java/io/mosip/biosdk/services/controller/MainController.java index 5d56d2b0..1aad0ac0 100644 --- a/biosdk-services/src/main/java/io/mosip/biosdk/services/controller/MainController.java +++ b/biosdk-services/src/main/java/io/mosip/biosdk/services/controller/MainController.java @@ -141,16 +141,12 @@ public ResponseEntity match( public ResponseEntity checkQuality( @Validated @RequestBody(required = true) RequestDto request, @ApiIgnore Errors errors) { - Long startTime = System.currentTimeMillis(); ResponseDto responseDto = generateResponseTemplate(request.getVersion()); try { responseDto.setVersion(request.getVersion()); BioSdkServiceProvider bioSdkServiceProviderImpl = null; bioSdkServiceProviderImpl = bioSdkServiceFactory.getBioSdkServiceProvider(request.getVersion()); responseDto.setResponse(bioSdkServiceProviderImpl.checkQuality(request)); - Long sleepTime = 1000 - (System.currentTimeMillis() - startTime); - if(sleepTime > 0) - Thread.sleep(sleepTime); return ResponseEntity.status(HttpStatus.OK).body(serviceUtil.getObjectMapper().writeValueAsString(responseDto)); } catch (BioSDKException e) { logger.error(LOGGER_SESSIONID, LOGGER_IDTYPE, "BioSDKException: ", e.getMessage()); @@ -170,8 +166,6 @@ public ResponseEntity checkQuality( } catch (JsonProcessingException ex) { throw new RuntimeException(ex); } - } catch (InterruptedException e) { - throw new RuntimeException(e); } } @@ -181,18 +175,13 @@ public ResponseEntity checkQuality( public ResponseEntity extractTemplate( @Validated @RequestBody(required = true) RequestDto request, @ApiIgnore Errors errors) { - Long startTime = System.currentTimeMillis(); ResponseDto responseDto = generateResponseTemplate(request.getVersion()); try { responseDto.setVersion(request.getVersion()); BioSdkServiceProvider bioSdkServiceProviderImpl = null; bioSdkServiceProviderImpl = bioSdkServiceFactory.getBioSdkServiceProvider(request.getVersion()); responseDto.setResponse(bioSdkServiceProviderImpl.extractTemplate(request)); - Long sleepTime = 2000 - (System.currentTimeMillis() - startTime); - if(sleepTime > 0) - Thread.sleep(sleepTime); String response = serviceUtil.getObjectMapper().writeValueAsString(responseDto); - return ResponseEntity.status(HttpStatus.OK).body(response); } catch (BioSDKException e) { logger.error(LOGGER_SESSIONID, LOGGER_IDTYPE, "BioSDKException: ", e.getMessage()); @@ -212,8 +201,6 @@ public ResponseEntity extractTemplate( } catch (JsonProcessingException ex) { throw new RuntimeException(ex); } - } catch (InterruptedException e) { - throw new RuntimeException(e); } }