From 4cf746b8055214ac72966ce374fb4d8c5a0a5c75 Mon Sep 17 00:00:00 2001 From: vishwab1 Date: Tue, 16 Dec 2025 17:56:07 +0530 Subject: [PATCH] fix: call type mapper --- .../callhandling/CalltypeServiceImpl.java | 12 +++--- .../common/utils/mapper/CallTypeMapper.java | 43 +++++++++++++++++++ 2 files changed, 50 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/iemr/common/utils/mapper/CallTypeMapper.java diff --git a/src/main/java/com/iemr/common/service/callhandling/CalltypeServiceImpl.java b/src/main/java/com/iemr/common/service/callhandling/CalltypeServiceImpl.java index 1cf9ce32..7d2d7e62 100644 --- a/src/main/java/com/iemr/common/service/callhandling/CalltypeServiceImpl.java +++ b/src/main/java/com/iemr/common/service/callhandling/CalltypeServiceImpl.java @@ -42,11 +42,14 @@ import com.iemr.common.data.notification.Notification; import com.iemr.common.repository.callhandling.IEMRCalltypeRepositoryImplCustom; import com.iemr.common.utils.exception.IEMRException; +import com.iemr.common.utils.mapper.CallTypeMapper; import com.iemr.common.utils.mapper.InputMapper; @Service -public class CalltypeServiceImpl implements CalltypeService -{ +public class CalltypeServiceImpl implements CalltypeService { + + @Autowired + private CallTypeMapper callTypeMapper; private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); InputMapper inputMapper = new InputMapper(); @@ -55,9 +58,8 @@ public class CalltypeServiceImpl implements CalltypeService private IEMRCalltypeRepositoryImplCustom iEMRCalltypeRepositoryImplCustom; @Override - public List getAllCalltypes(String request) throws IEMRException - { - CallType provider = inputMapper.gson().fromJson(request, CallType.class); + public List getAllCalltypes(String request) throws IEMRException { + CallType provider = callTypeMapper.fromJson(request, CallType.class); List callTypes = new ArrayList(); Set callTypesArray = new HashSet(); if (provider.getIsInbound() != null && provider.getIsOutbound() != null) diff --git a/src/main/java/com/iemr/common/utils/mapper/CallTypeMapper.java b/src/main/java/com/iemr/common/utils/mapper/CallTypeMapper.java new file mode 100644 index 00000000..ace82367 --- /dev/null +++ b/src/main/java/com/iemr/common/utils/mapper/CallTypeMapper.java @@ -0,0 +1,43 @@ +package com.iemr.common.utils.mapper; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +@Service +public class CallTypeMapper { + private static GsonBuilder builder; + private static Gson gsonInstance; + private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); + + public CallTypeMapper() { + if (builder == null) { + builder = new GsonBuilder(); + // Only serialize/deserialize fields with @Expose annotation + builder.excludeFieldsWithoutExposeAnnotation(); + + logger.info("CallTypeMapper initialized - Only @Expose fields will be processed"); + } + } + + public static Gson gson() { + if (gsonInstance == null) { + gsonInstance = builder.create(); + } + return gsonInstance; + } + + public T fromJson(String json, Class classOfT) { + try { + T result = gson().fromJson(json, classOfT); + logger.info("Successfully deserialized to class: {}", classOfT.getSimpleName()); + return result; + } catch (Exception e) { + logger.error("Error deserializing JSON to {}: {}", classOfT.getSimpleName(), e.getMessage(), e); + throw e; + } + } +}