Riattivato filtro per conversione entity in json

This commit is contained in:
2024-05-14 16:06:04 +02:00
parent b1d1c548b4
commit 1b38a00056

View File

@@ -4,14 +4,25 @@ import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
import com.fasterxml.jackson.databind.ser.FilterProvider;
import com.fasterxml.jackson.databind.ser.PropertyFilter;
import com.fasterxml.jackson.databind.ser.PropertyWriter;
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
import it.integry.ems.adapter.*;
import it.integry.ems.response.EsitoType;
import it.integry.ems.schedule.new_cron_job.controller.AutomatedOperationController;
import it.integry.ems.schedule.new_cron_job.dto.operations.base_classes.BaseAutomatedOperationDTO;
import it.integry.ems_model.annotation.EntityChild;
import it.integry.ems_model.annotation.PK;
import it.integry.ems_model.annotation.SqlField;
import it.integry.ems_model.base.ComposedEntityBase;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.resolver.EntitySubTypeHolder;
import it.integry.ems_model.types.OperationType;
import org.reflections.Reflections;
import java.lang.reflect.Field;
@@ -29,7 +40,6 @@ public class ResponseJSONObjectMapper extends ObjectMapper {
private static final long serialVersionUID = 1L;
public SimpleModule addDefaultAdapters(SimpleModule module) {
module.addSerializer(Date.class, new JsonDateAdapterSerializer());
module.addDeserializer(Date.class, new JsonDateAdapterDeserializer());
@@ -58,70 +68,70 @@ public class ResponseJSONObjectMapper extends ObjectMapper {
public ResponseJSONObjectMapper() {
// PropertyFilter theFilter = new SimpleBeanPropertyFilter() {
// @Override
//
// public void serializeAsField(Object pojo, JsonGenerator jgen, SerializerProvider provider,
// PropertyWriter writer) throws Exception {
// if (include(writer)) {
// try {
// if ("operation".equals(writer.getName()) || "type".equalsIgnoreCase(writer.getName())) {
// writer.serializeAsField(pojo, jgen, provider);
// return;
// } else {
//
// Boolean onlyPkMaster = true;
// if (pojo instanceof EntityBase) {
// onlyPkMaster = ((EntityBase) pojo).getOnlyPkMaster();
//
// }
// Field f = pojo.getClass().getDeclaredField(writer.getName());
// if (f != null) {
// PK pk = f.getAnnotation(PK.class);
// SqlField sqlField = f.getAnnotation(SqlField.class);
// EntityChild child = f.getAnnotation(EntityChild.class);
//
// if (((EntityBase) pojo).getOperation() == OperationType.SELECT ||
// ((EntityBase) pojo).getOperation() == OperationType.SELECT_OBJECT) {
// if (f.getGenericType() != null) {
// writer.serializeAsField(pojo, jgen, provider);
// }
// } else {
//
// if (onlyPkMaster && child != null)
// return;
//
// if (pk != null || child != null || (sqlField != null && sqlField.isReturned())) {
//
// writer.serializeAsField(pojo, jgen, provider);
// }
//
// }
// return;
// }
// }
// } catch (Exception e) {
//// System.err.println(e.getMessage());
//// e.printStackTrace();
// }
// } else if (!jgen.canOmitFields()) { // since 2.3
// writer.serializeAsOmittedField(pojo, jgen, provider);
// }
// }
//
// @Override
// protected boolean include(BeanPropertyWriter writer) {
// return true;
// }
//
// @Override
// protected boolean include(PropertyWriter writer) {
// return true;
// }
// };
// FilterProvider filters = new SimpleFilterProvider().addFilter("jsonEntityFilter", theFilter);
//
// setFilterProvider(filters);
PropertyFilter theFilter = new SimpleBeanPropertyFilter() {
@Override
public void serializeAsField(Object pojo, JsonGenerator jgen, SerializerProvider provider,
PropertyWriter writer) throws Exception {
if (include(writer)) {
try {
if ("operation".equals(writer.getName()) || "type".equalsIgnoreCase(writer.getName())) {
writer.serializeAsField(pojo, jgen, provider);
return;
} else {
Boolean onlyPkMaster = true;
if (pojo instanceof EntityBase) {
onlyPkMaster = ((EntityBase) pojo).getOnlyPkMaster();
}
Field f = pojo.getClass().getDeclaredField(writer.getName());
if (f != null) {
PK pk = f.getAnnotation(PK.class);
SqlField sqlField = f.getAnnotation(SqlField.class);
EntityChild child = f.getAnnotation(EntityChild.class);
if (((EntityBase) pojo).getOperation() == OperationType.SELECT ||
((EntityBase) pojo).getOperation() == OperationType.SELECT_OBJECT) {
if (f.getGenericType() != null) {
writer.serializeAsField(pojo, jgen, provider);
}
} else {
if (onlyPkMaster && child != null)
return;
if (pk != null || child != null || (sqlField != null && sqlField.isReturned())) {
writer.serializeAsField(pojo, jgen, provider);
}
}
return;
}
}
} catch (Exception e) {
// System.err.println(e.getMessage());
// e.printStackTrace();
}
} else if (!jgen.canOmitFields()) { // since 2.3
writer.serializeAsOmittedField(pojo, jgen, provider);
}
}
@Override
protected boolean include(BeanPropertyWriter writer) {
return true;
}
@Override
protected boolean include(PropertyWriter writer) {
return true;
}
};
FilterProvider filters = new SimpleFilterProvider().addFilter("jsonEntityFilter", theFilter);
setFilterProvider(filters);
setSerializationInclusion(Include.NON_NULL);