diff --git a/src/main/java/io/ebeaninternal/server/deploy/meta/DeployBeanDescriptor.java b/src/main/java/io/ebeaninternal/server/deploy/meta/DeployBeanDescriptor.java index 9f26a4f34..18873232a 100644 --- a/src/main/java/io/ebeaninternal/server/deploy/meta/DeployBeanDescriptor.java +++ b/src/main/java/io/ebeaninternal/server/deploy/meta/DeployBeanDescriptor.java @@ -3,7 +3,6 @@ package io.ebeaninternal.server.deploy.meta; import io.ebean.annotation.Cache; import io.ebean.annotation.DocStore; import io.ebean.annotation.DocStoreMode; -import io.ebean.annotation.PartitionMode; import io.ebean.config.ServerConfig; import io.ebean.config.TableName; import io.ebean.config.dbplatform.IdType; @@ -1260,10 +1259,7 @@ public class DeployBeanDescriptor { */ public Object /*AnnotatedClass*/ getJacksonAnnotatedClass() { if (jacksonAnnotatedClass == null) { - com.fasterxml.jackson.databind.ObjectMapper objectMapper = (com.fasterxml.jackson.databind.ObjectMapper) serverConfig.getObjectMapper(); - com.fasterxml.jackson.databind.JavaType javaType = objectMapper.getTypeFactory().constructType(beanType); - jacksonAnnotatedClass = com.fasterxml.jackson.databind.introspect.AnnotatedClassResolver - .resolve(objectMapper.getDeserializationConfig(), javaType, objectMapper.getDeserializationConfig()); + jacksonAnnotatedClass = new DeployBeanObtainJackson(serverConfig, beanType).obtain(); } return jacksonAnnotatedClass; } diff --git a/src/main/java/io/ebeaninternal/server/deploy/meta/DeployBeanObtainJackson.java b/src/main/java/io/ebeaninternal/server/deploy/meta/DeployBeanObtainJackson.java new file mode 100644 index 000000000..9526c2aa2 --- /dev/null +++ b/src/main/java/io/ebeaninternal/server/deploy/meta/DeployBeanObtainJackson.java @@ -0,0 +1,30 @@ +package io.ebeaninternal.server.deploy.meta; + +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.introspect.AnnotatedClassResolver; +import io.ebean.config.ServerConfig; + +/** + * Used to obtain the Jackson AnnotatedClass for a given bean type utlimately to obtain field level Jackson annotations. + */ +class DeployBeanObtainJackson { + + private final ServerConfig serverConfig; + private final Class beanType; + + DeployBeanObtainJackson(ServerConfig serverConfig, Class beanType) { + this.serverConfig = serverConfig; + this.beanType = beanType; + } + + /** + * Return the Jackson AnnotatedClass for the given bean type. + */ + Object obtain() { + + ObjectMapper objectMapper = (ObjectMapper) serverConfig.getObjectMapper(); + JavaType javaType = objectMapper.getTypeFactory().constructType(beanType); + return AnnotatedClassResolver.resolve(objectMapper.getDeserializationConfig(), javaType, objectMapper.getDeserializationConfig()); + } +}