FINERACT-2181: CommandProcessingResult serialization optimisation

This commit is contained in:
Adam Saghy
2025-03-19 12:44:52 +01:00
parent ef47989656
commit 35339a6a83
5 changed files with 116 additions and 23 deletions
@@ -19,6 +19,7 @@
package org.apache.fineract.infrastructure.core.api;
import com.google.gson.JsonElement;
import com.google.gson.JsonNull;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
@@ -35,7 +36,7 @@ public class ExternalIdAdapter implements JsonSerializer<ExternalId> {
@SuppressWarnings("unused")
public JsonElement serialize(ExternalId src, Type typeOfSrc, JsonSerializationContext context) {
if (src == null || src.isEmpty()) {
return null;
return JsonNull.INSTANCE;
}
return new JsonPrimitive(src.getValue());
}
@@ -31,7 +31,7 @@ import org.apache.fineract.infrastructure.core.domain.ExternalId;
@Getter
public class CommandProcessingResult implements Serializable {
private Long commandId;
private final Long commandId;
private Long officeId;
private final Long groupId;
private final Long clientId;
@@ -72,9 +72,9 @@ public class CommandProcessingResult implements Serializable {
this.creditBureauReportData = creditBureauReportData;
this.rollbackTransaction = rollbackTransaction;
this.subResourceId = subResourceId;
this.resourceExternalId = resourceExternalId;
this.subResourceExternalId = subResourceExternalId;
this.loanExternalId = loanExternalId;
this.resourceExternalId = setExternalIdOrNull(resourceExternalId);
this.subResourceExternalId = setExternalIdOrNull(subResourceExternalId);
this.loanExternalId = setExternalIdOrNull(loanExternalId);
}
protected CommandProcessingResult(final Long resourceId, final Long officeId, final Long commandId, final Map<String, Object> changes,
@@ -161,4 +161,8 @@ public class CommandProcessingResult implements Serializable {
public void setRollbackTransaction(Boolean rollbackTransaction) {
this.rollbackTransaction = rollbackTransaction;
}
private ExternalId setExternalIdOrNull(ExternalId externalId) {
return externalId == null || externalId.isEmpty() ? null : externalId;
}
}