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/controller/MainController.java b/biosdk-services/src/main/java/io/mosip/biosdk/services/controller/MainController.java
index b1c478ff..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
@@ -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,26 @@ public ResponseEntity checkQuality(
BioSdkServiceProvider bioSdkServiceProviderImpl = null;
bioSdkServiceProviderImpl = bioSdkServiceFactory.getBioSdkServiceProvider(request.getVersion());
responseDto.setResponse(bioSdkServiceProviderImpl.checkQuality(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 = "/extract-template", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
@@ -145,13 +181,27 @@ public ResponseEntity extractTemplate(
BioSdkServiceProvider bioSdkServiceProviderImpl = null;
bioSdkServiceProviderImpl = bioSdkServiceFactory.getBioSdkServiceProvider(request.getVersion());
responseDto.setResponse(bioSdkServiceProviderImpl.extractTemplate(request));
+ 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);
+ }
}
- 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 +216,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 +250,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..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,13 +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.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
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;
@@ -44,8 +43,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 +56,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 +75,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 +99,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(),
@@ -125,10 +123,10 @@ 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");
try {
- logRequest(extractTemplateRequestDto);
+ ExtractTemplateRequestDto extractTemplateRequestDto = utils.getObjectMapper().readValue(decryptedRequest, new TypeReference() {});
+ logger.debug(LOGGER_SESSIONID, LOGGER_IDTYPE,"extractTemplate: ", "json to dto successful");
+ logRequest(extractTemplateRequestDto);
response = iBioApi.extractTemplate(
extractTemplateRequestDto.getSample(),
extractTemplateRequestDto.getModalitiesToExtract(),
@@ -148,9 +146,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 +170,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 +227,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..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
@@ -9,13 +9,18 @@
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;
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;
@@ -31,8 +36,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 +44,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 +84,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 +319,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;
+ }
+
}