diff --git a/src/main/java/org/gcube/portal/social/networking/model/providers/CustomObjectMapper.java b/src/main/java/org/gcube/portal/social/networking/model/providers/CustomObjectMapper.java new file mode 100644 index 0000000..61a760b --- /dev/null +++ b/src/main/java/org/gcube/portal/social/networking/model/providers/CustomObjectMapper.java @@ -0,0 +1,36 @@ +package org.gcube.portal.social.networking.model.providers; + +import javax.ws.rs.ext.ContextResolver; +import javax.ws.rs.ext.Provider; + +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.databind.SerializationFeature; + +/** + * Custom mapper with property CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES to perform serialization/deserialization + * with snake case over camel case for json beans. + * @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it) + */ +@Provider +public class CustomObjectMapper implements ContextResolver { + + private static final org.slf4j.Logger logger = LoggerFactory.getLogger(CustomObjectMapper.class); + private final ObjectMapper mapper; + + public CustomObjectMapper() { + logger.debug("new ObjectMapperResolver()"); + mapper = new ObjectMapper(); + mapper.enable(SerializationFeature.INDENT_OUTPUT); + mapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES); + + } + + @Override + public ObjectMapper getContext(Class type) { + logger.debug("ObjectMapperResolver.getContext(...) invoked"); + return mapper; + } +} \ No newline at end of file diff --git a/src/main/java/org/gcube/portal/socialnetworking/model/beans/JobNotificationBean.java b/src/main/java/org/gcube/portal/socialnetworking/model/beans/JobNotificationBean.java index a15ad82..dc7e09a 100644 --- a/src/main/java/org/gcube/portal/socialnetworking/model/beans/JobNotificationBean.java +++ b/src/main/java/org/gcube/portal/socialnetworking/model/beans/JobNotificationBean.java @@ -4,7 +4,7 @@ import javax.validation.constraints.NotNull; import org.gcube.portal.databook.shared.JobStatusType; import org.gcube.portal.databook.shared.RunningJob; -import org.gcube.portal.socialnetworking.custom.serializers_deserializers.JobStatusTypeDeserializer; +import org.gcube.portal.socialnetworking.model.custom.serializers_deserializers.JobStatusTypeDeserializer; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/src/main/java/org/gcube/portal/socialnetworking/custom/serializers_deserializers/JobStatusTypeDeserializer.java b/src/main/java/org/gcube/portal/socialnetworking/model/custom/serializers_deserializers/JobStatusTypeDeserializer.java similarity index 94% rename from src/main/java/org/gcube/portal/socialnetworking/custom/serializers_deserializers/JobStatusTypeDeserializer.java rename to src/main/java/org/gcube/portal/socialnetworking/model/custom/serializers_deserializers/JobStatusTypeDeserializer.java index 68ead06..c903b06 100644 --- a/src/main/java/org/gcube/portal/socialnetworking/custom/serializers_deserializers/JobStatusTypeDeserializer.java +++ b/src/main/java/org/gcube/portal/socialnetworking/model/custom/serializers_deserializers/JobStatusTypeDeserializer.java @@ -1,4 +1,4 @@ -package org.gcube.portal.socialnetworking.custom.serializers_deserializers; +package org.gcube.portal.socialnetworking.model.custom.serializers_deserializers; import java.io.IOException;