Riattivato filtro per conversione entity in json
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user