diff --git a/README.md b/README.md index 2263a080..ad133943 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ Project to build [Jackson](../../../jackson) module to support JSON serialization and deserialization of Hibernate (https://hibernate.org) specific data types and properties; and features like lazy-loading. -[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.fasterxml.jackson.datatype/jackson-datatype-hibernate5/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.fasterxml.jackson.datatype/jackson-datatype-hibernate5/) -[![Javadoc](https://javadoc.io/badge/com.fasterxml.jackson.datatype/jackson-datatype-hibernate5.svg)](https://www.javadoc.io/doc/com.fasterxml.jackson.datatype/jackson-datatype-hibernate5) +[![Maven Central](https://maven-badges.herokuapp.com/maven-central/tools.jackson.datatype/jackson-datatype-hibernate5/badge.svg)](https://maven-badges.herokuapp.com/maven-central/tools.jackson.datatype/jackson-datatype-hibernate5/) +[![Javadoc](https://javadoc.io/badge/tools.jackson.datatype/jackson-datatype-hibernate5.svg)](https://www.javadoc.io/doc/tools.jackson.datatype/jackson-datatype-hibernate5) ## Status @@ -11,32 +11,17 @@ Module is usable and supported for Jackson 2.x. and used by non-trivial number o Currently (October 2025) module is **NOT supported for Jackson 3.x** due to lack of active maintainer. It is considered Deprecated as part of [JSTEP-9](https://github.com/FasterXML/jackson-future-ideas/wiki/JSTEP-9). -Note: Hibernate 4.x, 5.x, 6.x and 7.x are supported (5.x starting with Jackson 2.6; 6.x with Jackson 2.15 and 7.x with Jackson 2.20) but they require different jars, and Maven artifact names (and jar names differ). +Note: Hibernate 4.x, 5.x, 6.x and 7.x are supported but they require different jars, and Maven artifact names (and jar names differ). This document refers to "Hibernate 5" version, but changes with 4.x/6.x/7.x should require little more than replacing "5" in names with "4", "6" or "7". -Hibernate 3.x was supported up to Jackson 2.12 but is no longer supported at and after 2.13 - -Jackson 2.13 adds Support for "Hibernate 5 Jakarta" variant (for Hibernate 5.5 and beyond); +See also "Hibernate 5 Jakarta" variant (for Hibernate 5.5 and beyond); see below for more information. -Jackson 2.15 adds Support for Hibernate 6.x; see below for more information. - -Jackson 2.20 adds Support for Hibernate 7.x; see below for more information. - ### JDK requirements -Before Jackson 2.15, baseline JDK needed for building for JDK 8 and all -module variants worked on Java 8. - -With Jackson 2.15, JDK 11 will be required to build: all modules run on -Java 8 except for Hibernate 6.x module which requires Java 11 like -Hibernate 6.x itself. - -With Jackson 2.20, JDK 17 will be required to build: 4.x and 5.x modules run on -Java 8, 6.x on 11 and Hibernate 7.x module requires Java 17 like -Hibernate 7.x itself. +Java 17 or above is required. ### Javax vs Jakarta @@ -59,9 +44,9 @@ To use module on Maven-based projects, use following dependency ```xml - com.fasterxml.jackson.datatype + tools.jackson.datatype jackson-datatype-hibernate5 - 2.20.0 + 3.0.0 ``` @@ -71,9 +56,9 @@ Note that you need to use "jackson-datatype-hibernate4" for Hibernate 4.x. ```xml - com.fasterxml.jackson.datatype + tools.jackson.datatype jackson-datatype-hibernate4 - 2.20.0 + 3.0.0 ``` @@ -82,9 +67,9 @@ you will need the jakarta suffixed dependency for Hibernate 5.5: ```xml - com.fasterxml.jackson.datatype + tools.jackson.datatype jackson-datatype-hibernate5-jakarta - 2.20.0 + 3.0.0 ``` @@ -93,20 +78,19 @@ but you will need to use "jackson-datatype-hibernate6" for Hibernate 6.x: ```xml - com.fasterxml.jackson.datatype + tools.jackson.datatype jackson-datatype-hibernate6 - 2.20.0 + 3.0.0 ``` -and finally, for Hibernate 7.x (not yet released) +and finally, for Hibernate 7.x ```xml - com.fasterxml.jackson.datatype + tools.jackson.datatype jackson-datatype-hibernate7 - - 2.20.0-SNAPSHOT + 3.0.0 ``` diff --git a/hibernate4/pom.xml b/hibernate4/pom.xml index bbc17297..11ba1a9e 100644 --- a/hibernate4/pom.xml +++ b/hibernate4/pom.xml @@ -6,9 +6,9 @@ 4.0.0 - com.fasterxml.jackson.datatype + tools.jackson.datatype jackson-datatype-hibernate-parent - 2.21.0-SNAPSHOT + 3.0.0-SNAPSHOT jackson-datatype-hibernate4 Jackson-datatype-Hibernate4 @@ -21,7 +21,7 @@ Hibernate (https://hibernate.org) version 4.x data types. 1.8 1.8 - com/fasterxml/jackson/datatype/hibernate4 + tools/jackson/datatype/hibernate4 ${project.groupId}.hibernate4 4.3.11.Final @@ -67,8 +67,8 @@ Hibernate (https://hibernate.org) version 4.x data types. org.apache.maven.plugins maven-compiler-plugin - 8 - 8 + 17 + 17 diff --git a/hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/HibernateSerializerModifier.java b/hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/HibernateSerializerModifier.java deleted file mode 100644 index e0b39626..00000000 --- a/hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/HibernateSerializerModifier.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.fasterxml.jackson.datatype.hibernate4; - -import com.fasterxml.jackson.databind.BeanDescription; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializationConfig; -import com.fasterxml.jackson.databind.ser.BeanSerializerModifier; -import com.fasterxml.jackson.databind.type.CollectionType; -import com.fasterxml.jackson.databind.type.MapType; -import org.hibernate.SessionFactory; - -public class HibernateSerializerModifier - extends BeanSerializerModifier -{ - protected final int _features; - - protected final SessionFactory _sessionFactory; - - public HibernateSerializerModifier(int features, SessionFactory sessionFactory) { - _features = features; - _sessionFactory = sessionFactory; - } - - /* - @Override - public JsonSerializer modifySerializer(SerializationConfig config, - BeanDescription beanDesc, JsonSerializer serializer) { - return serializer; - } - */ - - @Override - public JsonSerializer modifyCollectionSerializer(SerializationConfig config, - CollectionType valueType, BeanDescription beanDesc, JsonSerializer serializer) { - return new PersistentCollectionSerializer(valueType, serializer, _features, _sessionFactory); - } - - @Override - public JsonSerializer modifyMapSerializer(SerializationConfig config, - MapType valueType, BeanDescription beanDesc, JsonSerializer serializer) { - return new PersistentCollectionSerializer(valueType, serializer, _features, _sessionFactory); - } -} diff --git a/hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/Hibernate4Module.java b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/Hibernate4Module.java similarity index 94% rename from hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/Hibernate4Module.java rename to hibernate4/src/main/java/tools/jackson/datatype/hibernate4/Hibernate4Module.java index b75b861f..248d7ff4 100644 --- a/hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/Hibernate4Module.java +++ b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/Hibernate4Module.java @@ -1,11 +1,11 @@ -package com.fasterxml.jackson.datatype.hibernate4; +package tools.jackson.datatype.hibernate4; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.databind.AnnotationIntrospector; +import tools.jackson.core.Version; +import tools.jackson.databind.AnnotationIntrospector; import org.hibernate.SessionFactory; import org.hibernate.engine.spi.Mapping; -public class Hibernate4Module extends com.fasterxml.jackson.databind.Module +public class Hibernate4Module extends tools.jackson.databind.JacksonModule { /** * Enumeration that defines all toggleable features this module @@ -178,11 +178,11 @@ public void setupModule(SetupContext context) context.appendAnnotationIntrospector(ai); } context.addSerializers(new HibernateSerializers(_mapping, _moduleFeatures)); - context.addBeanSerializerModifier(new HibernateSerializerModifier(_moduleFeatures, _sessionFactory)); + context.addSerializerModifier(new HibernateSerializerModifier(_moduleFeatures, _sessionFactory)); } /** - * Method called during {@link #setupModule}, to create {@link com.fasterxml.jackson.databind.AnnotationIntrospector} + * Method called during {@link #setupModule}, to create {@link tools.jackson.databind.AnnotationIntrospector} * to register along with module. If null is returned, no introspector is added. */ protected AnnotationIntrospector annotationIntrospector() { diff --git a/hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/HibernateAnnotationIntrospector.java b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateAnnotationIntrospector.java similarity index 80% rename from hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/HibernateAnnotationIntrospector.java rename to hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateAnnotationIntrospector.java index e3795762..81fde9fa 100644 --- a/hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/HibernateAnnotationIntrospector.java +++ b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateAnnotationIntrospector.java @@ -1,16 +1,17 @@ -package com.fasterxml.jackson.datatype.hibernate4; +package tools.jackson.datatype.hibernate4; import javax.persistence.Transient; import org.hibernate.bytecode.internal.javassist.FieldHandler; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.databind.introspect.AnnotatedClass; -import com.fasterxml.jackson.databind.introspect.AnnotatedMember; -import com.fasterxml.jackson.databind.introspect.NopAnnotationIntrospector; +import tools.jackson.core.Version; +import tools.jackson.databind.cfg.MapperConfig; +import tools.jackson.databind.introspect.AnnotatedClass; +import tools.jackson.databind.introspect.AnnotatedMember; +import tools.jackson.databind.introspect.NopAnnotationIntrospector; /** - * Simple {@link com.fasterxml.jackson.databind.AnnotationIntrospector} that adds support for using + * Simple {@link tools.jackson.databind.AnnotationIntrospector} that adds support for using * {@link javax.persistence.Transient} to denote ignorable fields (alongside with Jackson * and/or JAXB annotations). */ @@ -67,12 +68,12 @@ public Version version() { */ @Override - public boolean hasIgnoreMarker(AnnotatedMember m) { + public boolean hasIgnoreMarker(MapperConfig config, AnnotatedMember m) { return _cfgCheckTransient && m.hasAnnotation(Transient.class); } @Override - public Boolean isIgnorableType(AnnotatedClass ac) + public Boolean isIgnorableType(MapperConfig config, AnnotatedClass ac) { /* 26-Dec-2015, tatu: To fix [datatype-hibernate#72], need to suppress handling * of `FieldHandled`. Not sure if it works without test (alas, none provided), diff --git a/hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/HibernateProxySerializer.java b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateProxySerializer.java similarity index 87% rename from hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/HibernateProxySerializer.java rename to hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateProxySerializer.java index e5a455c4..d7443839 100644 --- a/hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/HibernateProxySerializer.java +++ b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateProxySerializer.java @@ -1,24 +1,23 @@ -package com.fasterxml.jackson.datatype.hibernate4; +package tools.jackson.datatype.hibernate4; import java.beans.Introspector; -import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.HashMap; import javax.persistence.EntityNotFoundException; -import com.fasterxml.jackson.core.*; -import com.fasterxml.jackson.databind.BeanProperty; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; -import com.fasterxml.jackson.databind.jsontype.TypeSerializer; -import com.fasterxml.jackson.databind.ser.ContextualSerializer; -import com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap; -import com.fasterxml.jackson.databind.util.NameTransformer; +import tools.jackson.core.*; +import tools.jackson.databind.BeanProperty; +import tools.jackson.databind.JavaType; +import tools.jackson.databind.DatabindException; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; +import tools.jackson.databind.jsontype.TypeSerializer; +import tools.jackson.databind.ser.impl.PropertySerializerMap; +import tools.jackson.databind.type.TypeFactory; +import tools.jackson.databind.util.NameTransformer; import org.hibernate.engine.spi.Mapping; import org.hibernate.engine.spi.SessionImplementor; @@ -36,8 +35,7 @@ * this one) have. */ public class HibernateProxySerializer - extends JsonSerializer - implements ContextualSerializer + extends ValueSerializer { /** * Property that has proxy value to handle @@ -144,12 +142,12 @@ protected HibernateProxySerializer(HibernateProxySerializer base, } @Override - public JsonSerializer createContextual(SerializerProvider prov, BeanProperty property) { + public ValueSerializer createContextual(SerializationContext prov, BeanProperty property) { return new HibernateProxySerializer(this, property, _unwrapper); } @Override - public JsonSerializer unwrappingSerializer(final NameTransformer unwrapper) + public ValueSerializer unwrappingSerializer(final NameTransformer unwrapper) { return new HibernateProxySerializer(this, _property, unwrapper); } @@ -161,36 +159,34 @@ public boolean isUnwrappingSerializer() { /* /********************************************************************** - /* JsonSerializer impl + /* ValueSerializer impl /********************************************************************** */ @Override - public boolean isEmpty(SerializerProvider provider, HibernateProxy value) { + public boolean isEmpty(SerializationContext provider, HibernateProxy value) { return (value == null) || (findProxied(value) == null); } @Override - public void serialize(HibernateProxy value, JsonGenerator jgen, SerializerProvider provider) - throws IOException + public void serialize(HibernateProxy value, JsonGenerator jgen, SerializationContext provider) { Object proxiedValue = findProxied(value); // TODO: figure out how to suppress nulls, if necessary? (too late for that here) if (proxiedValue == null) { - provider.defaultSerializeNull(jgen); + provider.defaultSerializeNullValue(jgen); return; } findSerializer(provider, proxiedValue).serialize(proxiedValue, jgen, provider); } @Override - public void serializeWithType(HibernateProxy value, JsonGenerator jgen, SerializerProvider provider, + public void serializeWithType(HibernateProxy value, JsonGenerator jgen, SerializationContext provider, TypeSerializer typeSer) - throws IOException { Object proxiedValue = findProxied(value); if (proxiedValue == null) { - provider.defaultSerializeNull(jgen); + provider.defaultSerializeNullValue(jgen); return; } /* This isn't exactly right, since type serializer really refers to proxy @@ -203,9 +199,9 @@ public void serializeWithType(HibernateProxy value, JsonGenerator jgen, Serializ @Override public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint) - throws JsonMappingException + throws DatabindException { - SerializerProvider prov = visitor.getProvider(); + SerializationContext prov = visitor.getContext(); if ((prov == null) || (_property == null)) { super.acceptJsonFormatVisitor(visitor, typeHint); } else { @@ -221,8 +217,7 @@ public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType t /********************************************************************** */ - protected JsonSerializer findSerializer(SerializerProvider provider, Object value) - throws IOException + protected ValueSerializer findSerializer(SerializationContext provider, Object value) { /* TODO: if Hibernate did use generics, or we wanted to allow use of Jackson * annotations to indicate type, should take that into account. @@ -236,7 +231,11 @@ protected JsonSerializer findSerializer(SerializerProvider provider, Obj * really anyone's guess at this point; proxies can exist at any level? */ PropertySerializerMap.SerializerAndMapResult result = - _dynamicSerializers.findAndAddPrimarySerializer(type, provider, _property); + _dynamicSerializers.findAndAddPrimarySerializer( + //TODO find better way to get JavaType + TypeFactory.createDefaultInstance().unsafeSimpleType(type), + provider, + _property); if (_dynamicSerializers != result.map) { _dynamicSerializers = result.map; } diff --git a/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateSerializerModifier.java b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateSerializerModifier.java new file mode 100644 index 00000000..a846454d --- /dev/null +++ b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateSerializerModifier.java @@ -0,0 +1,42 @@ +package tools.jackson.datatype.hibernate4; + +import tools.jackson.databind.BeanDescription; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.SerializationConfig; +import tools.jackson.databind.ser.ValueSerializerModifier; +import tools.jackson.databind.type.CollectionType; +import tools.jackson.databind.type.MapType; +import org.hibernate.SessionFactory; + +public class HibernateSerializerModifier + extends ValueSerializerModifier +{ + protected final int _features; + + protected final SessionFactory _sessionFactory; + + public HibernateSerializerModifier(int features, SessionFactory sessionFactory) { + _features = features; + _sessionFactory = sessionFactory; + } + + /* + @Override + public ValueSerializer modifySerializer(SerializationConfig config, + BeanDescription.Supplier beanDesc, ValueSerializer serializer) { + return serializer; + } + */ + + @Override + public ValueSerializer modifyCollectionSerializer(SerializationConfig config, + CollectionType valueType, BeanDescription.Supplier beanDesc, ValueSerializer serializer) { + return new PersistentCollectionSerializer(valueType, serializer, _features, _sessionFactory); + } + + @Override + public ValueSerializer modifyMapSerializer(SerializationConfig config, + MapType valueType, BeanDescription.Supplier beanDesc, ValueSerializer serializer) { + return new PersistentCollectionSerializer(valueType, serializer, _features, _sessionFactory); + } +} diff --git a/hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/HibernateSerializers.java b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateSerializers.java similarity index 68% rename from hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/HibernateSerializers.java rename to hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateSerializers.java index 30fa0d37..a5584890 100644 --- a/hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/HibernateSerializers.java +++ b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateSerializers.java @@ -1,11 +1,12 @@ -package com.fasterxml.jackson.datatype.hibernate4; +package tools.jackson.datatype.hibernate4; -import com.fasterxml.jackson.databind.BeanDescription; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializationConfig; -import com.fasterxml.jackson.databind.ser.Serializers; -import com.fasterxml.jackson.datatype.hibernate4.Hibernate4Module.Feature; +import com.fasterxml.jackson.annotation.JsonFormat; +import tools.jackson.databind.BeanDescription; +import tools.jackson.databind.JavaType; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.SerializationConfig; +import tools.jackson.databind.ser.Serializers; +import tools.jackson.datatype.hibernate4.Hibernate4Module.Feature; import org.hibernate.engine.spi.Mapping; import org.hibernate.proxy.HibernateProxy; @@ -31,8 +32,8 @@ public HibernateSerializers(Mapping mapping, int features) } @Override - public JsonSerializer findSerializer(SerializationConfig config, - JavaType type, BeanDescription beanDesc) + public ValueSerializer findSerializer(SerializationConfig config, + JavaType type, BeanDescription.Supplier beanDesc, JsonFormat.Value formatOverrides) { Class raw = type.getRawClass(); if (HibernateProxy.class.isAssignableFrom(raw)) { diff --git a/hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/PackageVersion.java.in b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/PackageVersion.java.in similarity index 75% rename from hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/PackageVersion.java.in rename to hibernate4/src/main/java/tools/jackson/datatype/hibernate4/PackageVersion.java.in index 7860aa14..69b6bdd0 100644 --- a/hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/PackageVersion.java.in +++ b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/PackageVersion.java.in @@ -1,8 +1,8 @@ package @package@; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.core.Versioned; -import com.fasterxml.jackson.core.util.VersionUtil; +import tools.jackson.core.Version; +import tools.jackson.core.Versioned; +import tools.jackson.core.util.VersionUtil; /** * Automatically generated from PackageVersion.java.in during diff --git a/hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/PersistentCollectionSerializer.java b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/PersistentCollectionSerializer.java similarity index 77% rename from hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/PersistentCollectionSerializer.java rename to hibernate4/src/main/java/tools/jackson/datatype/hibernate4/PersistentCollectionSerializer.java index deb6fad2..ec48f53b 100644 --- a/hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/PersistentCollectionSerializer.java +++ b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/PersistentCollectionSerializer.java @@ -1,19 +1,17 @@ -package com.fasterxml.jackson.datatype.hibernate4; +package tools.jackson.datatype.hibernate4; import java.io.IOException; import java.util.*; import javax.persistence.*; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.*; -import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; -import com.fasterxml.jackson.databind.jsontype.TypeSerializer; -import com.fasterxml.jackson.databind.ser.ContainerSerializer; -import com.fasterxml.jackson.databind.ser.ContextualSerializer; -import com.fasterxml.jackson.databind.ser.ResolvableSerializer; -import com.fasterxml.jackson.databind.util.NameTransformer; -import com.fasterxml.jackson.datatype.hibernate4.Hibernate4Module.Feature; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.*; +import tools.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; +import tools.jackson.databind.jsontype.TypeSerializer; +import tools.jackson.databind.ser.std.StdContainerSerializer; +import tools.jackson.databind.util.NameTransformer; +import tools.jackson.datatype.hibernate4.Hibernate4Module.Feature; import org.hibernate.FlushMode; import org.hibernate.Hibernate; @@ -31,8 +29,7 @@ * and Map types (unlike in JDK). */ public class PersistentCollectionSerializer - extends ContainerSerializer - implements ContextualSerializer, ResolvableSerializer + extends StdContainerSerializer { private static final long serialVersionUID = 1L; // since 2.7 @@ -52,7 +49,7 @@ public class PersistentCollectionSerializer * Serializer that does actual value serialization when value * is available (either already or with forced access). */ - protected final JsonSerializer _serializer; + protected final ValueSerializer _serializer; protected final SessionFactory _sessionFactory; @@ -64,10 +61,10 @@ public class PersistentCollectionSerializer @SuppressWarnings("unchecked") public PersistentCollectionSerializer(JavaType containerType, - JsonSerializer serializer, int features, SessionFactory sessionFactory) { - super(containerType); + ValueSerializer serializer, int features, SessionFactory sessionFactory) { + super(containerType, null); _originalType = containerType; - _serializer = (JsonSerializer) serializer; + _serializer = (ValueSerializer) serializer; _features = features; _sessionFactory = sessionFactory; } @@ -76,11 +73,11 @@ public PersistentCollectionSerializer(JavaType containerType, * @since 2.7 */ @SuppressWarnings("unchecked") - protected PersistentCollectionSerializer(PersistentCollectionSerializer base, JsonSerializer serializer) + protected PersistentCollectionSerializer(PersistentCollectionSerializer base, ValueSerializer serializer) { super(base); _originalType = base._originalType; - _serializer = (JsonSerializer) serializer; + _serializer = (ValueSerializer) serializer; _features = base._features; _sessionFactory = base._sessionFactory; } @@ -90,7 +87,7 @@ public PersistentCollectionSerializer unwrappingSerializer(NameTransformer unwra return _withSerializer(_serializer.unwrappingSerializer(unwrapper)); } - protected PersistentCollectionSerializer _withSerializer(JsonSerializer ser) { + protected PersistentCollectionSerializer _withSerializer(ValueSerializer ser) { if ((ser == _serializer) || (ser == null)) { return this; } @@ -99,9 +96,9 @@ protected PersistentCollectionSerializer _withSerializer(JsonSerializer ser) // from `ContainerSerializer` @Override - protected ContainerSerializer _withValueTypeSerializer(TypeSerializer vts) + protected StdContainerSerializer _withValueTypeSerializer(TypeSerializer vts) { - ContainerSerializer ser0 = _containerSerializer(); + StdContainerSerializer ser0 = _containerSerializer(); if (ser0 != null) { return _withSerializer(ser0.withValueTypeSerializer(vts)); } @@ -118,11 +115,9 @@ protected ContainerSerializer _withValueTypeSerializer(TypeSerializer vts) */ @Override - public void resolve(SerializerProvider provider) throws JsonMappingException + public void resolve(SerializationContext provider) throws DatabindException { - if (_serializer instanceof ResolvableSerializer) { - ((ResolvableSerializer) _serializer).resolve(provider); - } + _serializer.resolve(provider); } /** @@ -130,13 +125,13 @@ public void resolve(SerializerProvider provider) throws JsonMappingException * must know type of property being serialized. */ @Override - public JsonSerializer createContextual(SerializerProvider provider, + public ValueSerializer createContextual(SerializationContext provider, BeanProperty property) - throws JsonMappingException + throws DatabindException { // 18-Oct-2013, tatu: Whether this is for the primary property or secondary is // not quite certain; presume primary one for now. - JsonSerializer ser = provider.handlePrimaryContextualization(_serializer, property); + ValueSerializer ser = provider.handlePrimaryContextualization(_serializer, property); // If we use eager loading, can just return underlying serializer as is if (!usesLazyLoading(property)) { @@ -147,25 +142,12 @@ public JsonSerializer createContextual(SerializerProvider provider, /* /********************************************************************** - /* JsonSerializer simple accessors, metadata + /* ValueSerializer simple accessors, metadata /********************************************************************** */ - @Deprecated // since 2.5 - @Override - public boolean isEmpty(Object value) { - if (value == null) { // is null ever passed? - return true; - } - if (value instanceof PersistentCollection) { - Object lazy = findLazyValue((PersistentCollection) value); - return (lazy == null) || _serializer.isEmpty(lazy); - } - return _serializer.isEmpty(value); - } - @Override - public boolean isEmpty(SerializerProvider provider, Object value) + public boolean isEmpty(SerializationContext provider, Object value) { if (value == null) { // is null ever passed? return true; @@ -189,7 +171,7 @@ public boolean usesObjectId() { @Override public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint) - throws JsonMappingException + throws DatabindException { _serializer.acceptJsonFormatVisitor(visitor, typeHint); } @@ -202,7 +184,7 @@ public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType t @Override public JavaType getContentType() { - ContainerSerializer ser = _containerSerializer(); + StdContainerSerializer ser = _containerSerializer(); if (ser != null) { return ser.getContentType(); } @@ -210,8 +192,8 @@ public JavaType getContentType() { } @Override - public JsonSerializer getContentSerializer() { - ContainerSerializer ser = _containerSerializer(); + public ValueSerializer getContentSerializer() { + StdContainerSerializer ser = _containerSerializer(); if (ser != null) { return ser.getContentSerializer(); } @@ -232,23 +214,22 @@ public boolean hasSingleElement(Object value) { /* /********************************************************************** - /* JsonSerializer, actual serialization + /* ValueSerializer, actual serialization /********************************************************************** */ @Override - public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) - throws IOException + public void serialize(Object value, JsonGenerator jgen, SerializationContext provider) { if (value instanceof PersistentCollection) { value = findLazyValue((PersistentCollection) value); if (value == null) { - provider.defaultSerializeNull(jgen); + provider.defaultSerializeNullValue(jgen); return; } } if (_serializer == null) { // sanity check... - throw JsonMappingException.from(jgen, "PersistentCollection does not have serializer set"); + throw DatabindException.from(jgen, "PersistentCollection does not have serializer set"); } if (Feature.REPLACE_PERSISTENT_COLLECTIONS.enabledIn(_features)) { @@ -259,19 +240,18 @@ public void serialize(Object value, JsonGenerator jgen, SerializerProvider provi } @Override - public void serializeWithType(Object value, JsonGenerator jgen, SerializerProvider provider, + public void serializeWithType(Object value, JsonGenerator jgen, SerializationContext provider, TypeSerializer typeSer) - throws IOException { if (value instanceof PersistentCollection) { value = findLazyValue((PersistentCollection) value); if (value == null) { - provider.defaultSerializeNull(jgen); + provider.defaultSerializeNullValue(jgen); return; } } if (_serializer == null) { // sanity check... - throw JsonMappingException.from(jgen, "PersistentCollection does not have serializer set"); + throw DatabindException.from(jgen, "PersistentCollection does not have serializer set"); } if (Feature.REPLACE_PERSISTENT_COLLECTIONS.enabledIn(_features)) { @@ -287,9 +267,9 @@ public void serializeWithType(Object value, JsonGenerator jgen, SerializerProvid /********************************************************************** */ - protected ContainerSerializer _containerSerializer() { - if (_serializer instanceof ContainerSerializer) { - return (ContainerSerializer) _serializer; + protected StdContainerSerializer _containerSerializer() { + if (_serializer instanceof StdContainerSerializer stdContainerSerializer) { + return stdContainerSerializer; } return null; } diff --git a/hibernate4/src/main/resources/META-INF/services/com.fasterxml.jackson.databind.Module b/hibernate4/src/main/resources/META-INF/services/com.fasterxml.jackson.databind.Module index 6b813112..17c7941c 100644 --- a/hibernate4/src/main/resources/META-INF/services/com.fasterxml.jackson.databind.Module +++ b/hibernate4/src/main/resources/META-INF/services/com.fasterxml.jackson.databind.Module @@ -1 +1 @@ -com.fasterxml.jackson.datatype.hibernate4.Hibernate4Module +tools.jackson.datatype.hibernate4.Hibernate4Module diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/BaseTest.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/BaseTest.java similarity index 74% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/BaseTest.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/BaseTest.java index 23d5c38b..e2ef8e39 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/BaseTest.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/BaseTest.java @@ -1,8 +1,9 @@ -package com.fasterxml.jackson.datatype.hibernate4; +package tools.jackson.datatype.hibernate4; import java.util.Arrays; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; import static org.junit.jupiter.api.Assertions.fail; @@ -10,14 +11,19 @@ public abstract class BaseTest { protected BaseTest() { } + protected JsonMapper.Builder mapperBuilderWithModule(boolean forceLazyLoading) + { + return JsonMapper.builder().addModule(hibernateModule(forceLazyLoading, false)); + } + protected ObjectMapper mapperWithModule(boolean forceLazyLoading) { - return new ObjectMapper().registerModule(hibernateModule(forceLazyLoading, false)); + return mapperBuilderWithModule(forceLazyLoading).build(); } protected ObjectMapper mapperWithModule(boolean forceLazyLoading, boolean nullMissingEntities) { - return new ObjectMapper().registerModule(hibernateModule(forceLazyLoading, nullMissingEntities)); + return JsonMapper.builder().addModule(hibernateModule(forceLazyLoading, nullMissingEntities)).build(); } protected Hibernate4Module hibernateModule(boolean forceLazyLoading) { diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/ForceLazyLoadingTest.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/ForceLazyLoadingTest.java similarity index 87% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/ForceLazyLoadingTest.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/ForceLazyLoadingTest.java index 1c5fa6b8..5fc85fdb 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/ForceLazyLoadingTest.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/ForceLazyLoadingTest.java @@ -1,8 +1,8 @@ -package com.fasterxml.jackson.datatype.hibernate4; +package tools.jackson.datatype.hibernate4; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.hibernate4.data.Customer; -import com.fasterxml.jackson.datatype.hibernate4.data.Payment; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.datatype.hibernate4.data.Customer; +import tools.jackson.datatype.hibernate4.data.Payment; import org.hibernate.Hibernate; import org.junit.jupiter.api.Test; diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/HibernateTest.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/HibernateTest.java similarity index 92% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/HibernateTest.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/HibernateTest.java index d9b5a4b0..9f6d92fa 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/HibernateTest.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/HibernateTest.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate4; +package tools.jackson.datatype.hibernate4; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; @@ -7,9 +7,9 @@ import org.junit.jupiter.api.*; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.hibernate4.data.Customer; -import com.fasterxml.jackson.datatype.hibernate4.data.Employee; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.datatype.hibernate4.data.Customer; +import tools.jackson.datatype.hibernate4.data.Employee; import static org.junit.jupiter.api.Assertions.*; diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/InclusionTest.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/InclusionTest.java similarity index 61% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/InclusionTest.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/InclusionTest.java index f0cd02f3..0e399664 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/InclusionTest.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/InclusionTest.java @@ -1,11 +1,12 @@ -package com.fasterxml.jackson.datatype.hibernate4; +package tools.jackson.datatype.hibernate4; import java.util.*; import org.junit.jupiter.api.Test; import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -21,8 +22,9 @@ static class Mock @Test public void testInclusion() throws Exception { - final ObjectMapper mapper = mapperWithModule(false); - mapper.setSerializationInclusion(Include.NON_EMPTY); + final JsonMapper.Builder builder = mapperBuilderWithModule(false); + builder.changeDefaultPropertyInclusion(inc -> inc.withValueInclusion(Include.NON_EMPTY)); + ObjectMapper mapper = builder.build(); String json = mapper.writeValueAsString(new Mock()); assertEquals("{\"id\":13}", json); } diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/InfiniteRecursion70Test.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/InfiniteRecursion70Test.java similarity index 90% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/InfiniteRecursion70Test.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/InfiniteRecursion70Test.java index 6ecb3908..6e43885f 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/InfiniteRecursion70Test.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/InfiniteRecursion70Test.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate4; +package tools.jackson.datatype.hibernate4; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; @@ -7,8 +7,8 @@ import org.hibernate.Hibernate; import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.hibernate4.data.Contrato; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.datatype.hibernate4.data.Contrato; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/LazyLoadingTest.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java similarity index 82% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/LazyLoadingTest.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java index 8b442153..dd584bd5 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/LazyLoadingTest.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate4; +package tools.jackson.datatype.hibernate4; import java.util.*; @@ -6,11 +6,12 @@ import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.hibernate4.Hibernate4Module.Feature; -import com.fasterxml.jackson.datatype.hibernate4.data.Customer; -import com.fasterxml.jackson.datatype.hibernate4.data.Payment; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.datatype.hibernate4.Hibernate4Module.Feature; +import tools.jackson.datatype.hibernate4.data.Customer; +import tools.jackson.datatype.hibernate4.data.Payment; import org.hibernate.Hibernate; import org.junit.jupiter.api.Test; @@ -60,10 +61,10 @@ public void testGetCustomerJson() throws Exception } @Test - public void testSerializeIdentifierFeature() throws JsonProcessingException { + public void testSerializeIdentifierFeature() throws JacksonException { Hibernate4Module module = new Hibernate4Module(); module.enable(Feature.SERIALIZE_IDENTIFIER_FOR_LAZY_NOT_LOADED_OBJECTS); - ObjectMapper objectMapper = new ObjectMapper().registerModule(module); + ObjectMapper objectMapper = JsonMapper.builder().addModule(module).build(); EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit"); try { diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/MissingEntitiesAsNullTest.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/MissingEntitiesAsNullTest.java similarity index 89% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/MissingEntitiesAsNullTest.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/MissingEntitiesAsNullTest.java index 48e9b69d..745b7f5b 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/MissingEntitiesAsNullTest.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/MissingEntitiesAsNullTest.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate4; +package tools.jackson.datatype.hibernate4; import java.util.Map; @@ -10,9 +10,9 @@ import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.hibernate4.data.Customer; +import tools.jackson.databind.DatabindException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.datatype.hibernate4.data.Customer; import static org.junit.jupiter.api.Assertions.*; @@ -71,7 +71,7 @@ public void testProductWithValidForeignKey() throws Exception { } // caused by javax.persistence.EntityNotFoundException: Unable to find - // com.fasterxml.jackson.datatype.hibernate4.data.Product with id X10_1678 + // tools.jackson.datatype.hibernate4.data.Product with id X10_1678 @Test public void testExceptionWithInvalidForeignKey() throws Exception { EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit"); @@ -90,8 +90,8 @@ public void testExceptionWithInvalidForeignKey() throws Exception { // JUnit 3.8 fail("Expected EntityNotFoundException exception"); - } catch (JsonMappingException e) { - assertEquals("Unable to find com.fasterxml.jackson.datatype.hibernate4.data.Product with id X10_1678", e.getCause().getMessage()); + } catch (DatabindException e) { + assertEquals("Unable to find tools.jackson.datatype.hibernate4.data.Product with id X10_1678", e.getCause().getMessage()); } finally { emf.close(); } diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/OneToManyTest.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/OneToManyTest.java similarity index 84% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/OneToManyTest.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/OneToManyTest.java index c2549828..57d686c1 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/OneToManyTest.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/OneToManyTest.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5; +package tools.jackson.datatype.hibernate4; import java.util.*; @@ -6,7 +6,8 @@ import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -42,7 +43,7 @@ public void testMapWithOneToMany() throws Exception { } private String mapWithHibernateModule(Object object) throws Exception { - return new ObjectMapper().registerModule(new Hibernate5Module()).writeValueAsString(object); + return JsonMapper.builder().addModule(new Hibernate4Module()).build().writeValueAsString(object); } private String mapWithoutHibernateModule(Object object) throws Exception { diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/Polymorphic81Test.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/Polymorphic81Test.java similarity index 95% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/Polymorphic81Test.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/Polymorphic81Test.java index 96a8b3e6..51c04122 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/Polymorphic81Test.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/Polymorphic81Test.java @@ -1,11 +1,11 @@ -package com.fasterxml.jackson.datatype.hibernate4; +package tools.jackson.datatype.hibernate4; import java.util.*; import org.junit.jupiter.api.Test; import com.fasterxml.jackson.annotation.*; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/ReplacePersistentCollectionTest.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/ReplacePersistentCollectionTest.java similarity index 84% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/ReplacePersistentCollectionTest.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/ReplacePersistentCollectionTest.java index cee6a6ff..bae4ee7e 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/ReplacePersistentCollectionTest.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/ReplacePersistentCollectionTest.java @@ -1,10 +1,12 @@ -package com.fasterxml.jackson.datatype.hibernate4; - -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.json.JsonMapper; -import com.fasterxml.jackson.datatype.hibernate4.data.Customer; -import com.fasterxml.jackson.datatype.hibernate4.data.Payment; +package tools.jackson.datatype.hibernate4; + +import tools.jackson.databind.DatabindException; +import tools.jackson.databind.DefaultTyping; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.databind.jsontype.DefaultBaseTypeLimitingValidator; +import tools.jackson.datatype.hibernate4.data.Customer; +import tools.jackson.datatype.hibernate4.data.Payment; import org.hibernate.Hibernate; import org.junit.jupiter.api.*; @@ -61,7 +63,7 @@ public void testNoReplacePersistentCollection() throws Exception { boolean exceptionThrown = false; try { /*Map stuff =*/ mapper.readValue(json, Map.class); - } catch (JsonMappingException e) { + } catch (DatabindException e) { exceptionThrown = true; } assertTrue(exceptionThrown); @@ -98,7 +100,7 @@ public void testReplacePersistentCollection() throws Exception { boolean issue94failed = false; try { /* Map stuff =*/ mapper.readValue(json, Map.class); - } catch (JsonMappingException e) { + } catch (DatabindException e) { issue94failed = true; } @@ -114,7 +116,7 @@ public void testReplacePersistentCollection() throws Exception { private ObjectMapper hibernateMapper(Hibernate4Module module) { return JsonMapper.builder() .addModule(module) - .build() - .enableDefaultTyping(); + .activateDefaultTyping(new DefaultBaseTypeLimitingValidator(), DefaultTyping.NON_FINAL) + .build(); } } diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/TestMaps.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/TestMaps.java similarity index 82% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/TestMaps.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/TestMaps.java index 0f670506..feead3e6 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/TestMaps.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/TestMaps.java @@ -1,10 +1,10 @@ -package com.fasterxml.jackson.datatype.hibernate5; +package tools.jackson.datatype.hibernate4; import java.util.*; import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/TestVersions.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/TestVersions.java similarity index 80% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/TestVersions.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/TestVersions.java index e280337a..ffdfb988 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/TestVersions.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/TestVersions.java @@ -1,9 +1,9 @@ -package com.fasterxml.jackson.datatype.hibernate4; +package tools.jackson.datatype.hibernate4; import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.core.Versioned; +import tools.jackson.core.Version; +import tools.jackson.core.Versioned; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/TransientTest.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/TransientTest.java similarity index 91% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/TransientTest.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/TransientTest.java index b45bd123..8e117d5c 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/TransientTest.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/TransientTest.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate4; +package tools.jackson.datatype.hibernate4; import javax.persistence.Transient; @@ -7,7 +7,8 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonView; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -55,7 +56,7 @@ public void testSimpleTransient() throws Exception // and then with Transient disabled Hibernate4Module mod = hibernateModule(false); mod.disable(Hibernate4Module.Feature.USE_TRANSIENT_ANNOTATION); - mapper = new ObjectMapper().registerModule(mod); + mapper = JsonMapper.builder().addModule(mod).build(); assertEquals(aposToQuotes("{'a':1,'b':2}"), mapper.writeValueAsString(new WithTransient())); } diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/UnwrappedTest.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/UnwrappedTest.java similarity index 80% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/UnwrappedTest.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/UnwrappedTest.java index 266e997b..87a0c5cd 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/UnwrappedTest.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/UnwrappedTest.java @@ -1,12 +1,12 @@ -package com.fasterxml.jackson.datatype.hibernate5; +package tools.jackson.datatype.hibernate4; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonUnwrapped; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.hibernate5.data.Customer; -import com.fasterxml.jackson.datatype.hibernate5.data.Product; +import tools.jackson.core.JacksonException; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.datatype.hibernate4.data.Customer; +import tools.jackson.datatype.hibernate4.data.Product; import org.hibernate.Hibernate; import org.junit.jupiter.api.Test; @@ -39,7 +39,7 @@ public T getContent() } @Test - public void testSimpleUnwrapped() throws JsonProcessingException + public void testSimpleUnwrapped() throws JacksonException { EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit"); try { diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/Contrato.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/Contrato.java similarity index 97% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/Contrato.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/Contrato.java index b43f3585..44121816 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/Contrato.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/Contrato.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate4.data; +package tools.jackson.datatype.hibernate4.data; import java.math.BigDecimal; import java.util.List; diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/Customer.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/Customer.java similarity index 99% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/Customer.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/Customer.java index 3ba8a577..586e10d6 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/Customer.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/Customer.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate4.data; +package tools.jackson.datatype.hibernate4.data; import java.util.HashSet; import java.util.Set; diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/Employee.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/Employee.java similarity index 98% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/Employee.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/Employee.java index 702bcd3e..045df474 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/Employee.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/Employee.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate4.data; +package tools.jackson.datatype.hibernate4.data; import java.util.HashSet; import java.util.Set; diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/Office.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/Office.java similarity index 98% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/Office.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/Office.java index 77ef279b..c13f9d23 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/Office.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/Office.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.data; +package tools.jackson.datatype.hibernate4.data; import java.util.HashSet; diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/Order.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/Order.java similarity index 98% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/Order.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/Order.java index 727e2f85..dfbb2216 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/Order.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/Order.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.data; +package tools.jackson.datatype.hibernate4.data; import com.fasterxml.jackson.annotation.JsonBackReference; diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/OrderDetail.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/OrderDetail.java similarity index 98% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/OrderDetail.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/OrderDetail.java index 8f13c668..daa3bbc1 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/OrderDetail.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/OrderDetail.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.data; +package tools.jackson.datatype.hibernate4.data; import com.fasterxml.jackson.annotation.JsonBackReference; diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/OrderDetailId.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/OrderDetailId.java similarity index 97% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/OrderDetailId.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/OrderDetailId.java index 6575b13f..1bb3557d 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/OrderDetailId.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/OrderDetailId.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.data; +package tools.jackson.datatype.hibernate4.data; import javax.persistence.Column; diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/Payment.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/Payment.java similarity index 97% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/Payment.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/Payment.java index f4e8d63b..ab4d4a37 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/Payment.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/Payment.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.data; +package tools.jackson.datatype.hibernate4.data; import java.util.Date; diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/PaymentId.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/PaymentId.java similarity index 97% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/PaymentId.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/PaymentId.java index 3a84f039..c07c9e61 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/PaymentId.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/PaymentId.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.data; +package tools.jackson.datatype.hibernate4.data; import javax.persistence.Column; diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/Product.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/Product.java similarity index 98% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/Product.java rename to hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/Product.java index bf782933..a3b48900 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/Product.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/data/Product.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.data; +package tools.jackson.datatype.hibernate4.data; import java.util.HashSet; diff --git a/hibernate4/src/test/resources/META-INF/persistence.xml b/hibernate4/src/test/resources/META-INF/persistence.xml index 07c255ae..d14dcc9c 100644 --- a/hibernate4/src/test/resources/META-INF/persistence.xml +++ b/hibernate4/src/test/resources/META-INF/persistence.xml @@ -6,18 +6,18 @@ org.hibernate.ejb.HibernatePersistence - com.fasterxml.jackson.datatype.hibernate4.data.Contrato - com.fasterxml.jackson.datatype.hibernate4.data.Customer - com.fasterxml.jackson.datatype.hibernate4.data.Employee - com.fasterxml.jackson.datatype.hibernate4.data.Liquidacao - com.fasterxml.jackson.datatype.hibernate4.data.Office - com.fasterxml.jackson.datatype.hibernate4.data.Order - com.fasterxml.jackson.datatype.hibernate4.data.OrderDetail - com.fasterxml.jackson.datatype.hibernate4.data.OrderDetailId - com.fasterxml.jackson.datatype.hibernate4.data.Parcela - com.fasterxml.jackson.datatype.hibernate4.data.Payment - com.fasterxml.jackson.datatype.hibernate4.data.PaymentId - com.fasterxml.jackson.datatype.hibernate4.data.Product + tools.jackson.datatype.hibernate4.data.Contrato + tools.jackson.datatype.hibernate4.data.Customer + tools.jackson.datatype.hibernate4.data.Employee + tools.jackson.datatype.hibernate4.data.Liquidacao + tools.jackson.datatype.hibernate4.data.Office + tools.jackson.datatype.hibernate4.data.Order + tools.jackson.datatype.hibernate4.data.OrderDetail + tools.jackson.datatype.hibernate4.data.OrderDetailId + tools.jackson.datatype.hibernate4.data.Parcela + tools.jackson.datatype.hibernate4.data.Payment + tools.jackson.datatype.hibernate4.data.PaymentId + tools.jackson.datatype.hibernate4.data.Product diff --git a/hibernate5-jakarta/pom.xml b/hibernate5-jakarta/pom.xml index 5a96264a..daee0f7d 100644 --- a/hibernate5-jakarta/pom.xml +++ b/hibernate5-jakarta/pom.xml @@ -6,9 +6,9 @@ 4.0.0 - com.fasterxml.jackson.datatype + tools.jackson.datatype jackson-datatype-hibernate-parent - 2.21.0-SNAPSHOT + 3.0.0-SNAPSHOT jackson-datatype-hibernate5-jakarta Jackson-datatype-Hibernate5-jakarta @@ -21,7 +21,7 @@ Hibernate (https://hibernate.org) version 5.5 with Jakarta data types. 1.8 1.8 - com/fasterxml/jackson/datatype/hibernate5/jakarta + tools/jackson/datatype/hibernate5/jakarta ${project.groupId}.hibernate5.jakarta 5.6.15.Final @@ -84,8 +84,8 @@ Hibernate (https://hibernate.org) version 5.5 with Jakarta data types. org.apache.maven.plugins maven-compiler-plugin - 8 - 8 + 17 + 17 diff --git a/hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Hibernate5JSerializerModifier.java b/hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Hibernate5JSerializerModifier.java deleted file mode 100644 index aa7afd54..00000000 --- a/hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Hibernate5JSerializerModifier.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta; - -import com.fasterxml.jackson.databind.BeanDescription; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializationConfig; -import com.fasterxml.jackson.databind.ser.BeanSerializerModifier; -import com.fasterxml.jackson.databind.type.CollectionType; -import com.fasterxml.jackson.databind.type.MapType; -import org.hibernate.SessionFactory; - -public class Hibernate5JSerializerModifier - extends BeanSerializerModifier -{ - protected final int _features; - - protected final SessionFactory _sessionFactory; - - public Hibernate5JSerializerModifier(int features, SessionFactory sessionFactory) { - _features = features; - _sessionFactory = sessionFactory; - } - - /* - @Override - public JsonSerializer modifySerializer(SerializationConfig config, - BeanDescription beanDesc, JsonSerializer serializer) { - return serializer; - } - */ - - @Override - public JsonSerializer modifyCollectionSerializer(SerializationConfig config, - CollectionType valueType, BeanDescription beanDesc, JsonSerializer serializer) { - return new PersistentCollectionSerializer(valueType, serializer, _features, _sessionFactory); - } - - @Override - public JsonSerializer modifyMapSerializer(SerializationConfig config, - MapType valueType, BeanDescription beanDesc, JsonSerializer serializer) { - return new PersistentCollectionSerializer(valueType, serializer, _features, _sessionFactory); - } -} diff --git a/hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Hibernate5JAnnotationIntrospector.java b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JAnnotationIntrospector.java similarity index 83% rename from hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Hibernate5JAnnotationIntrospector.java rename to hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JAnnotationIntrospector.java index 0425ba97..49e4c43a 100644 --- a/hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Hibernate5JAnnotationIntrospector.java +++ b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JAnnotationIntrospector.java @@ -1,15 +1,16 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta; +package tools.jackson.datatype.hibernate5.jakarta; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.databind.AnnotationIntrospector; -import com.fasterxml.jackson.databind.introspect.AnnotatedClass; -import com.fasterxml.jackson.databind.introspect.AnnotatedMember; -import com.fasterxml.jackson.datatype.hibernate5.jakarta.PackageVersion; +import tools.jackson.core.Version; +import tools.jackson.databind.AnnotationIntrospector; +import tools.jackson.databind.cfg.MapperConfig; +import tools.jackson.databind.introspect.AnnotatedClass; +import tools.jackson.databind.introspect.AnnotatedMember; +import tools.jackson.datatype.hibernate5.jakarta.PackageVersion; import jakarta.persistence.Transient; /** - * Simple {@link com.fasterxml.jackson.databind.AnnotationIntrospector} that adds support for using + * Simple {@link tools.jackson.databind.AnnotationIntrospector} that adds support for using * {@link jakarta.persistence.Transient} to denote ignorable fields (alongside with Jackson * and/or JAXB annotations). */ @@ -66,12 +67,12 @@ public Version version() { */ @Override - public boolean hasIgnoreMarker(AnnotatedMember m) { + public boolean hasIgnoreMarker(MapperConfig config, AnnotatedMember m) { return _cfgCheckTransient && m.hasAnnotation(Transient.class); } @Override - public Boolean isIgnorableType(AnnotatedClass ac) + public Boolean isIgnorableType(MapperConfig config, AnnotatedClass ac) { /* 26-Dec-2015, tatu: To fix [datatype-hibernate#72], need to suppress handling * of `FieldHandled`. Not sure if it works without test (alas, none provided), diff --git a/hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Hibernate5JProxySerializer.java b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JProxySerializer.java similarity index 88% rename from hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Hibernate5JProxySerializer.java rename to hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JProxySerializer.java index 1e38ab43..02393e09 100644 --- a/hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Hibernate5JProxySerializer.java +++ b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JProxySerializer.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta; +package tools.jackson.datatype.hibernate5.jakarta; import java.beans.Introspector; import java.io.IOException; @@ -13,17 +13,17 @@ import org.hibernate.proxy.LazyInitializer; import org.hibernate.proxy.pojo.BasicLazyInitializer; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.BeanProperty; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; -import com.fasterxml.jackson.databind.jsontype.TypeSerializer; -import com.fasterxml.jackson.databind.ser.ContextualSerializer; -import com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap; -import com.fasterxml.jackson.databind.util.NameTransformer; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.BeanProperty; +import tools.jackson.databind.JavaType; +import tools.jackson.databind.DatabindException; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; +import tools.jackson.databind.jsontype.TypeSerializer; +import tools.jackson.databind.ser.impl.PropertySerializerMap; +import tools.jackson.databind.type.TypeFactory; +import tools.jackson.databind.util.NameTransformer; import jakarta.persistence.EntityNotFoundException; @@ -37,8 +37,7 @@ * this one) have. */ public class Hibernate5JProxySerializer - extends JsonSerializer - implements ContextualSerializer + extends ValueSerializer { /** * Property that has proxy value to handle @@ -104,12 +103,12 @@ protected Hibernate5JProxySerializer(Hibernate5JProxySerializer base, } @Override - public JsonSerializer createContextual(SerializerProvider prov, BeanProperty property) { + public ValueSerializer createContextual(SerializationContext prov, BeanProperty property) { return new Hibernate5JProxySerializer(this, property, _unwrapper); } @Override - public JsonSerializer unwrappingSerializer(final NameTransformer unwrapper) { + public ValueSerializer unwrappingSerializer(final NameTransformer unwrapper) { return new Hibernate5JProxySerializer(this, _property, unwrapper); } @@ -121,36 +120,34 @@ public boolean isUnwrappingSerializer() /* /********************************************************************** - /* JsonSerializer impl + /* ValueSerializer impl /********************************************************************** */ @Override - public boolean isEmpty(SerializerProvider provider, HibernateProxy value) { + public boolean isEmpty(SerializationContext provider, HibernateProxy value) { return (value == null) || (findProxied(value) == null); } @Override - public void serialize(HibernateProxy value, JsonGenerator g, SerializerProvider provider) - throws IOException + public void serialize(HibernateProxy value, JsonGenerator g, SerializationContext provider) { Object proxiedValue = findProxied(value); // TODO: figure out how to suppress nulls, if necessary? (too late for that here) if (proxiedValue == null) { - provider.defaultSerializeNull(g); + provider.defaultSerializeNullValue(g); return; } findSerializer(provider, proxiedValue).serialize(proxiedValue, g, provider); } @Override - public void serializeWithType(HibernateProxy value, JsonGenerator g, SerializerProvider provider, + public void serializeWithType(HibernateProxy value, JsonGenerator g, SerializationContext provider, TypeSerializer typeSer) - throws IOException { Object proxiedValue = findProxied(value); if (proxiedValue == null) { - provider.defaultSerializeNull(g); + provider.defaultSerializeNullValue(g); return; } /* This isn't exactly right, since type serializer really refers to proxy @@ -163,9 +160,9 @@ public void serializeWithType(HibernateProxy value, JsonGenerator g, SerializerP @Override public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint) - throws JsonMappingException + throws DatabindException { - SerializerProvider prov = visitor.getProvider(); + SerializationContext prov = visitor.getContext(); if ((prov == null) || (_property == null)) { super.acceptJsonFormatVisitor(visitor, typeHint); } else { @@ -181,8 +178,7 @@ public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType t /********************************************************************** */ - protected JsonSerializer findSerializer(SerializerProvider provider, Object value) - throws IOException + protected ValueSerializer findSerializer(SerializationContext provider, Object value) { /* TODO: if Hibernate did use generics, or we wanted to allow use of Jackson * annotations to indicate type, should take that into account. @@ -196,7 +192,11 @@ protected JsonSerializer findSerializer(SerializerProvider provider, Obj * really anyone's guess at this point; proxies can exist at any level? */ PropertySerializerMap.SerializerAndMapResult result = - _dynamicSerializers.findAndAddPrimarySerializer(type, provider, _property); + _dynamicSerializers.findAndAddPrimarySerializer( + //TODO find better way to get JavaType + TypeFactory.createDefaultInstance().unsafeSimpleType(type), + provider, + _property); if (_dynamicSerializers != result.map) { _dynamicSerializers = result.map; } diff --git a/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JSerializerModifier.java b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JSerializerModifier.java new file mode 100644 index 00000000..93901359 --- /dev/null +++ b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JSerializerModifier.java @@ -0,0 +1,42 @@ +package tools.jackson.datatype.hibernate5.jakarta; + +import tools.jackson.databind.BeanDescription; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.SerializationConfig; +import tools.jackson.databind.ser.ValueSerializerModifier; +import tools.jackson.databind.type.CollectionType; +import tools.jackson.databind.type.MapType; +import org.hibernate.SessionFactory; + +public class Hibernate5JSerializerModifier + extends ValueSerializerModifier +{ + protected final int _features; + + protected final SessionFactory _sessionFactory; + + public Hibernate5JSerializerModifier(int features, SessionFactory sessionFactory) { + _features = features; + _sessionFactory = sessionFactory; + } + + /* + @Override + public ValueSerializer modifySerializer(SerializationConfig config, + BeanDescription.Supplier beanDesc, ValueSerializer serializer) { + return serializer; + } + */ + + @Override + public ValueSerializer modifyCollectionSerializer(SerializationConfig config, + CollectionType valueType, BeanDescription.Supplier beanDesc, ValueSerializer serializer) { + return new PersistentCollectionSerializer(valueType, serializer, _features, _sessionFactory); + } + + @Override + public ValueSerializer modifyMapSerializer(SerializationConfig config, + MapType valueType, BeanDescription.Supplier beanDesc, ValueSerializer serializer) { + return new PersistentCollectionSerializer(valueType, serializer, _features, _sessionFactory); + } +} diff --git a/hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Hibernate5JSerializers.java b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JSerializers.java similarity index 72% rename from hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Hibernate5JSerializers.java rename to hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JSerializers.java index d6006830..883f5eef 100644 --- a/hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Hibernate5JSerializers.java +++ b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JSerializers.java @@ -1,10 +1,11 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta; +package tools.jackson.datatype.hibernate5.jakarta; -import com.fasterxml.jackson.databind.BeanDescription; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializationConfig; -import com.fasterxml.jackson.databind.ser.Serializers; +import com.fasterxml.jackson.annotation.JsonFormat; +import tools.jackson.databind.BeanDescription; +import tools.jackson.databind.JavaType; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.SerializationConfig; +import tools.jackson.databind.ser.Serializers; import org.hibernate.engine.spi.Mapping; import org.hibernate.proxy.HibernateProxy; @@ -30,8 +31,8 @@ public Hibernate5JSerializers(Mapping mapping, int features) } @Override - public JsonSerializer findSerializer(SerializationConfig config, - JavaType type, BeanDescription beanDesc) + public ValueSerializer findSerializer(SerializationConfig config, + JavaType type, BeanDescription.Supplier beanDesc, JsonFormat.Value formatOverrides) { Class raw = type.getRawClass(); if (HibernateProxy.class.isAssignableFrom(raw)) { diff --git a/hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Hibernate5JakartaModule.java b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JakartaModule.java similarity index 94% rename from hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Hibernate5JakartaModule.java rename to hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JakartaModule.java index 93ce548f..7a0cde0a 100644 --- a/hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Hibernate5JakartaModule.java +++ b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JakartaModule.java @@ -1,12 +1,12 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta; +package tools.jackson.datatype.hibernate5.jakarta; import org.hibernate.SessionFactory; import org.hibernate.engine.spi.Mapping; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.databind.AnnotationIntrospector; +import tools.jackson.core.Version; +import tools.jackson.databind.AnnotationIntrospector; -public class Hibernate5JakartaModule extends com.fasterxml.jackson.databind.Module +public class Hibernate5JakartaModule extends tools.jackson.databind.JacksonModule { /** * Enumeration that defines all toggleable features this module @@ -180,11 +180,11 @@ public void setupModule(SetupContext context) context.appendAnnotationIntrospector(ai); } context.addSerializers(new Hibernate5JSerializers(_mapping, _moduleFeatures)); - context.addBeanSerializerModifier(new Hibernate5JSerializerModifier(_moduleFeatures, _sessionFactory)); + context.addSerializerModifier(new Hibernate5JSerializerModifier(_moduleFeatures, _sessionFactory)); } /** - * Method called during {@link #setupModule}, to create {@link com.fasterxml.jackson.databind.AnnotationIntrospector} + * Method called during {@link #setupModule}, to create {@link tools.jackson.databind.AnnotationIntrospector} * to register along with module. If null is returned, no introspector is added. */ protected AnnotationIntrospector annotationIntrospector() { diff --git a/hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Hibernate5JakartaVersion.java b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JakartaVersion.java similarity index 95% rename from hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Hibernate5JakartaVersion.java rename to hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JakartaVersion.java index e9e3984d..f149d1d5 100644 --- a/hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Hibernate5JakartaVersion.java +++ b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JakartaVersion.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta; +package tools.jackson.datatype.hibernate5.jakarta; public class Hibernate5JakartaVersion { diff --git a/hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/PackageVersion.java.in b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/PackageVersion.java.in similarity index 75% rename from hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/PackageVersion.java.in rename to hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/PackageVersion.java.in index 7860aa14..69b6bdd0 100644 --- a/hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/PackageVersion.java.in +++ b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/PackageVersion.java.in @@ -1,8 +1,8 @@ package @package@; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.core.Versioned; -import com.fasterxml.jackson.core.util.VersionUtil; +import tools.jackson.core.Version; +import tools.jackson.core.Versioned; +import tools.jackson.core.util.VersionUtil; /** * Automatically generated from PackageVersion.java.in during diff --git a/hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/PersistentCollectionSerializer.java b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/PersistentCollectionSerializer.java similarity index 82% rename from hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/PersistentCollectionSerializer.java rename to hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/PersistentCollectionSerializer.java index 2252fd09..d8fdb5a9 100644 --- a/hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/PersistentCollectionSerializer.java +++ b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/PersistentCollectionSerializer.java @@ -1,6 +1,5 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta; +package tools.jackson.datatype.hibernate5.jakarta; -import java.io.IOException; import java.util.*; import org.hibernate.FlushMode; @@ -14,15 +13,13 @@ import org.hibernate.mapping.Bag; import org.hibernate.resource.transaction.backend.jta.internal.JtaTransactionCoordinatorImpl; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.*; -import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; -import com.fasterxml.jackson.databind.jsontype.TypeSerializer; -import com.fasterxml.jackson.databind.ser.ContainerSerializer; -import com.fasterxml.jackson.databind.ser.ContextualSerializer; -import com.fasterxml.jackson.databind.ser.ResolvableSerializer; -import com.fasterxml.jackson.databind.util.NameTransformer; -import com.fasterxml.jackson.datatype.hibernate5.jakarta.Hibernate5JakartaModule.Feature; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.*; +import tools.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; +import tools.jackson.databind.jsontype.TypeSerializer; +import tools.jackson.databind.ser.std.StdContainerSerializer; +import tools.jackson.databind.util.NameTransformer; +import tools.jackson.datatype.hibernate5.jakarta.Hibernate5JakartaModule.Feature; import jakarta.persistence.ElementCollection; import jakarta.persistence.EntityManager; @@ -38,8 +35,7 @@ * and Map types (unlike in JDK). */ public class PersistentCollectionSerializer - extends ContainerSerializer - implements ContextualSerializer, ResolvableSerializer + extends StdContainerSerializer { private static final long serialVersionUID = 1L; @@ -57,7 +53,7 @@ public class PersistentCollectionSerializer * Serializer that does actual value serialization when value * is available (either already or with forced access). */ - protected final JsonSerializer _serializer; + protected final ValueSerializer _serializer; protected final SessionFactory _sessionFactory; @@ -69,20 +65,20 @@ public class PersistentCollectionSerializer @SuppressWarnings("unchecked") public PersistentCollectionSerializer(JavaType containerType, - JsonSerializer serializer, int features, SessionFactory sessionFactory) { - super(containerType); + ValueSerializer serializer, int features, SessionFactory sessionFactory) { + super(containerType, null); _originalType = containerType; - _serializer = (JsonSerializer) serializer; + _serializer = (ValueSerializer) serializer; _features = features; _sessionFactory = sessionFactory; } @SuppressWarnings("unchecked") - protected PersistentCollectionSerializer(PersistentCollectionSerializer base, JsonSerializer serializer) + protected PersistentCollectionSerializer(PersistentCollectionSerializer base, ValueSerializer serializer) { super(base); _originalType = base._originalType; - _serializer = (JsonSerializer) serializer; + _serializer = (ValueSerializer) serializer; _features = base._features; _sessionFactory = base._sessionFactory; } @@ -92,7 +88,7 @@ public PersistentCollectionSerializer unwrappingSerializer(NameTransformer unwra return _withSerializer(_serializer.unwrappingSerializer(unwrapper)); } - protected PersistentCollectionSerializer _withSerializer(JsonSerializer ser) { + protected PersistentCollectionSerializer _withSerializer(ValueSerializer ser) { if ((ser == _serializer) || (ser == null)) { return this; } @@ -101,9 +97,9 @@ protected PersistentCollectionSerializer _withSerializer(JsonSerializer ser) // from `ContainerSerializer` @Override - protected ContainerSerializer _withValueTypeSerializer(TypeSerializer vts) + protected StdContainerSerializer _withValueTypeSerializer(TypeSerializer vts) { - ContainerSerializer ser0 = _containerSerializer(); + StdContainerSerializer ser0 = _containerSerializer(); if (ser0 != null) { return _withSerializer(ser0.withValueTypeSerializer(vts)); } @@ -120,11 +116,9 @@ protected ContainerSerializer _withValueTypeSerializer(TypeSerializer vts) */ @Override - public void resolve(SerializerProvider provider) throws JsonMappingException + public void resolve(SerializationContext provider) throws DatabindException { - if (_serializer instanceof ResolvableSerializer) { - ((ResolvableSerializer) _serializer).resolve(provider); - } + _serializer.resolve(provider); } /** @@ -132,13 +126,13 @@ public void resolve(SerializerProvider provider) throws JsonMappingException * must know type of property being serialized. */ @Override - public JsonSerializer createContextual(SerializerProvider provider, + public ValueSerializer createContextual(SerializationContext provider, BeanProperty property) - throws JsonMappingException + throws DatabindException { // 18-Oct-2013, tatu: Whether this is for the primary property or secondary is // not quite certain; presume primary one for now. - JsonSerializer ser = provider.handlePrimaryContextualization(_serializer, property); + ValueSerializer ser = provider.handlePrimaryContextualization(_serializer, property); // If we use eager loading, can just return underlying serializer as is if (!usesLazyLoading(property)) { @@ -149,12 +143,12 @@ public JsonSerializer createContextual(SerializerProvider provider, /* /********************************************************************** - /* JsonSerializer simple accessors, metadata + /* ValueSerializer simple accessors, metadata /********************************************************************** */ @Override - public boolean isEmpty(SerializerProvider provider, Object value) + public boolean isEmpty(SerializationContext provider, Object value) { if (value == null) { // is null ever passed? return true; @@ -178,7 +172,7 @@ public boolean usesObjectId() { @Override public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint) - throws JsonMappingException + throws DatabindException { _serializer.acceptJsonFormatVisitor(visitor, typeHint); } @@ -191,7 +185,7 @@ public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType t @Override public JavaType getContentType() { - ContainerSerializer ser = _containerSerializer(); + StdContainerSerializer ser = _containerSerializer(); if (ser != null) { return ser.getContentType(); } @@ -199,8 +193,8 @@ public JavaType getContentType() { } @Override - public JsonSerializer getContentSerializer() { - ContainerSerializer ser = _containerSerializer(); + public ValueSerializer getContentSerializer() { + StdContainerSerializer ser = _containerSerializer(); if (ser != null) { return ser.getContentSerializer(); } @@ -221,23 +215,22 @@ public boolean hasSingleElement(Object value) { /* /********************************************************************** - /* JsonSerializer, actual serialization + /* ValueSerializer, actual serialization /********************************************************************** */ @Override - public void serialize(Object value, JsonGenerator g, SerializerProvider provider) - throws IOException + public void serialize(Object value, JsonGenerator g, SerializationContext provider) { if (value instanceof PersistentCollection) { value = findLazyValue((PersistentCollection) value); if (value == null) { - provider.defaultSerializeNull(g); + provider.defaultSerializeNullValue(g); return; } } if (_serializer == null) { // sanity check... - throw JsonMappingException.from(g, "PersistentCollection does not have serializer set"); + throw DatabindException.from(g, "PersistentCollection does not have serializer set"); } // 30-Jul-2016, tatu: wrt [datatype-hibernate#93], should NOT have to do anything here; @@ -246,19 +239,18 @@ public void serialize(Object value, JsonGenerator g, SerializerProvider provider } @Override - public void serializeWithType(Object value, JsonGenerator g, SerializerProvider provider, + public void serializeWithType(Object value, JsonGenerator g, SerializationContext provider, TypeSerializer typeSer) - throws IOException { if (value instanceof PersistentCollection) { value = findLazyValue((PersistentCollection) value); if (value == null) { - provider.defaultSerializeNull(g); + provider.defaultSerializeNullValue(g); return; } } if (_serializer == null) { // sanity check... - throw JsonMappingException.from(g, "PersistentCollection does not have serializer set"); + throw DatabindException.from(g, "PersistentCollection does not have serializer set"); } // 30-Jul-2016, tatu: wrt [datatype-hibernate#93], conversion IS needed here (or, @@ -277,9 +269,9 @@ public void serializeWithType(Object value, JsonGenerator g, SerializerProvider /********************************************************************** */ - protected ContainerSerializer _containerSerializer() { - if (_serializer instanceof ContainerSerializer) { - return (ContainerSerializer) _serializer; + protected StdContainerSerializer _containerSerializer() { + if (_serializer instanceof StdContainerSerializer stdContainerSerializer) { + return stdContainerSerializer; } return null; } diff --git a/hibernate5-jakarta/src/main/resources/META-INF/services/com.fasterxml.jackson.databind.Module b/hibernate5-jakarta/src/main/resources/META-INF/services/com.fasterxml.jackson.databind.Module index 2ab5f774..0178fbbf 100644 --- a/hibernate5-jakarta/src/main/resources/META-INF/services/com.fasterxml.jackson.databind.Module +++ b/hibernate5-jakarta/src/main/resources/META-INF/services/com.fasterxml.jackson.databind.Module @@ -1 +1 @@ -com.fasterxml.jackson.datatype.hibernate5.jakarta.Hibernate5JakartaModule +tools.jackson.datatype.hibernate5.jakarta.Hibernate5JakartaModule diff --git a/hibernate5-jakarta/src/moditect/module-info.java b/hibernate5-jakarta/src/moditect/module-info.java index 85e35b07..da05a67f 100644 --- a/hibernate5-jakarta/src/moditect/module-info.java +++ b/hibernate5-jakarta/src/moditect/module-info.java @@ -1,15 +1,15 @@ -module com.fasterxml.jackson.datatype.hibernate5.jakarta { - requires transitive com.fasterxml.jackson.core; - requires transitive com.fasterxml.jackson.databind; +module tools.jackson.datatype.hibernate5.jakarta { + requires transitive tools.jackson.core; + requires transitive tools.jackson.databind; requires transitive org.hibernate.orm.core; - requires static com.fasterxml.jackson.annotation; + requires static tools.jackson.annotation; requires static jakarta.activation; requires static jakarta.persistence; - exports com.fasterxml.jackson.datatype.hibernate5.jakarta; - opens com.fasterxml.jackson.datatype.hibernate5.jakarta; + exports tools.jackson.datatype.hibernate5.jakarta; + opens tools.jackson.datatype.hibernate5.jakarta; - provides com.fasterxml.jackson.databind.Module with - com.fasterxml.jackson.datatype.hibernate5.jakarta.Hibernate5JakartaModule; + provides tools.jackson.databind.JacksonModule with + tools.jackson.datatype.hibernate5.jakarta.Hibernate5JakartaModule; } diff --git a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/BaseTest.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/BaseTest.java similarity index 75% rename from hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/BaseTest.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/BaseTest.java index ec00f851..c822539b 100644 --- a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/BaseTest.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/BaseTest.java @@ -1,10 +1,11 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta; +package tools.jackson.datatype.hibernate5.jakarta; import java.util.Arrays; import org.apache.log4j.Logger; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; import static org.junit.jupiter.api.Assertions.fail; @@ -20,19 +21,24 @@ protected BaseTest() { } } + protected JsonMapper.Builder mapperBuilderWithModule(boolean forceLazyLoading) + { + return JsonMapper.builder().addModule(hibernateModule(forceLazyLoading, false)); + } + protected ObjectMapper mapperWithModule(boolean forceLazyLoading) { - return new ObjectMapper().registerModule(hibernateModule(forceLazyLoading, false)); + return mapperBuilderWithModule(forceLazyLoading).build(); } protected ObjectMapper mapperWithModule(boolean forceLazyLoading, boolean nullMissingEntities) { - return new ObjectMapper().registerModule(hibernateModule(forceLazyLoading, nullMissingEntities)); + return JsonMapper.builder().addModule(hibernateModule(forceLazyLoading, nullMissingEntities)).build(); } protected Hibernate5JakartaModule hibernateModule(boolean forceLazyLoading) { - return hibernateModule(forceLazyLoading, false); + return hibernateModule(forceLazyLoading, false); } protected Hibernate5JakartaModule hibernateModule(boolean forceLazyLoading, boolean nullMissingEntities) diff --git a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/ForceLazyLoadingTest.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/ForceLazyLoadingTest.java similarity index 86% rename from hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/ForceLazyLoadingTest.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/ForceLazyLoadingTest.java index 08f82a00..6b7a2620 100644 --- a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/ForceLazyLoadingTest.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/ForceLazyLoadingTest.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta; +package tools.jackson.datatype.hibernate5.jakarta; import java.util.Map; import java.util.Set; @@ -7,9 +7,9 @@ import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.hibernate5.jakarta.data.Customer; -import com.fasterxml.jackson.datatype.hibernate5.jakarta.data.Payment; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.datatype.hibernate5.jakarta.data.Customer; +import tools.jackson.datatype.hibernate5.jakarta.data.Payment; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; diff --git a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/HibernateTest.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/HibernateTest.java similarity index 92% rename from hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/HibernateTest.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/HibernateTest.java index ba9b9887..b509708f 100644 --- a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/HibernateTest.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/HibernateTest.java @@ -1,8 +1,8 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta; +package tools.jackson.datatype.hibernate5.jakarta; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.hibernate5.jakarta.data.Customer; -import com.fasterxml.jackson.datatype.hibernate5.jakarta.data.Employee; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.datatype.hibernate5.jakarta.data.Customer; +import tools.jackson.datatype.hibernate5.jakarta.data.Employee; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; diff --git a/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/InclusionTest.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/InclusionTest.java new file mode 100644 index 00000000..dd25099e --- /dev/null +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/InclusionTest.java @@ -0,0 +1,31 @@ +package tools.jackson.datatype.hibernate5.jakarta; + +import java.util.*; + +import org.junit.jupiter.api.Test; + +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class InclusionTest extends BaseTest +{ + static class Mock + { + public long id = 13; + public Set mocks = new LinkedHashSet(); + } + + // [hibernate#65] + @Test + public void testInclusion() throws Exception + { + final JsonMapper.Builder builder = mapperBuilderWithModule(false); + builder.changeDefaultPropertyInclusion(inc -> inc.withValueInclusion(Include.NON_EMPTY)); + ObjectMapper mapper = builder.build(); + String json = mapper.writeValueAsString(new Mock()); + assertEquals("{\"id\":13}", json); + } +} diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/MissingEntitiesAsNullTest.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/MissingEntitiesAsNullTest.java similarity index 89% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/MissingEntitiesAsNullTest.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/MissingEntitiesAsNullTest.java index 75669c44..0dce00ba 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/MissingEntitiesAsNullTest.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/MissingEntitiesAsNullTest.java @@ -1,18 +1,17 @@ -package com.fasterxml.jackson.datatype.hibernate6; +package tools.jackson.datatype.hibernate5.jakarta; import java.util.Map; -import com.fasterxml.jackson.datatype.hibernate6.data.Customer; import org.hibernate.Hibernate; -import org.junit.jupiter.api.Test; - -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.DatabindException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.datatype.hibernate5.jakarta.data.Customer; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.Persistence; +import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; @@ -71,7 +70,7 @@ public void testProductWithValidForeignKey() throws Exception { } // caused by jakarta.persistence.EntityNotFoundException: Unable to find - // com.fasterxml.jackson.datatype.hibernate6.data.Product with id X10_1678 + // tools.jackson.datatype.hibernate5.jakarta.data.Product with id X10_1678 @Test public void testExceptionWithInvalidForeignKey() throws Exception { EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit"); @@ -90,8 +89,8 @@ public void testExceptionWithInvalidForeignKey() throws Exception { // JUnit 3.8 fail("Expected EntityNotFoundException exception"); - } catch (JsonMappingException e) { - assertEquals("Unable to find com.fasterxml.jackson.datatype.hibernate6.data.Product with id X10_1678", e.getCause().getMessage()); + } catch (DatabindException e) { + assertEquals("Unable to find tools.jackson.datatype.hibernate5.jakarta.data.Product with id X10_1678", e.getCause().getMessage()); } finally { emf.close(); } diff --git a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/OneToManyTest.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/OneToManyTest.java similarity index 84% rename from hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/OneToManyTest.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/OneToManyTest.java index 7bd42f52..86ff8ff4 100644 --- a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/OneToManyTest.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/OneToManyTest.java @@ -1,12 +1,13 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta; +package tools.jackson.datatype.hibernate5.jakarta; import java.util.LinkedHashMap; import java.util.Map; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import jakarta.persistence.OneToMany; import org.junit.jupiter.api.Test; +import tools.jackson.databind.json.JsonMapper; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -42,7 +43,7 @@ public void testMapWithOneToMany() throws Exception { } private String mapWithHibernateModule(Object object) throws Exception { - return new ObjectMapper().registerModule(new Hibernate5JakartaModule()).writeValueAsString(object); + return JsonMapper.builder().addModule(new Hibernate5JakartaModule()).build().writeValueAsString(object); } private String mapWithoutHibernateModule(Object object) throws Exception { diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/Polymorphic81Test.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/Polymorphic81Test.java similarity index 96% rename from hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/Polymorphic81Test.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/Polymorphic81Test.java index b0511354..605da711 100644 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/Polymorphic81Test.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/Polymorphic81Test.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate7; +package tools.jackson.datatype.hibernate5.jakarta; import java.util.ArrayList; import java.util.List; @@ -8,7 +8,7 @@ import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/ReplacePersistentCollectionTest.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/ReplacePersistentCollectionTest.java similarity index 82% rename from hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/ReplacePersistentCollectionTest.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/ReplacePersistentCollectionTest.java index 287a52eb..1f824a39 100644 --- a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/ReplacePersistentCollectionTest.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/ReplacePersistentCollectionTest.java @@ -1,15 +1,16 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta; +package tools.jackson.datatype.hibernate5.jakarta; import java.util.Set; import org.hibernate.Hibernate; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping; -import com.fasterxml.jackson.databind.json.JsonMapper; -import com.fasterxml.jackson.datatype.hibernate5.jakarta.data.Customer; -import com.fasterxml.jackson.datatype.hibernate5.jakarta.data.Payment; +import tools.jackson.databind.DatabindException; +import tools.jackson.databind.DefaultTyping; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.databind.jsontype.DefaultBaseTypeLimitingValidator; +import tools.jackson.datatype.hibernate5.jakarta.data.Customer; +import tools.jackson.datatype.hibernate5.jakarta.data.Payment; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; @@ -55,7 +56,7 @@ public void testNoReplacePersistentCollection() throws Exception { try { /*Customer result =*/ mapper.readValue(json, Customer.class); fail("Should throw exception"); - } catch (JsonMappingException e) { + } catch (DatabindException e) { verifyException(e, "failed to lazily initialize"); } } @@ -89,7 +90,7 @@ public void testReplacePersistentCollection() throws Exception { private ObjectMapper hibernateMapper(Hibernate5JakartaModule module) { return JsonMapper.builder() .addModule(module) - .build() - .enableDefaultTyping(DefaultTyping.NON_FINAL); + .activateDefaultTyping(new DefaultBaseTypeLimitingValidator(), DefaultTyping.NON_FINAL) + .build(); } } diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/TestMaps.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/TestMaps.java similarity index 83% rename from hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/TestMaps.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/TestMaps.java index 1b958b84..8e73e5f3 100644 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/TestMaps.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/TestMaps.java @@ -1,11 +1,11 @@ -package com.fasterxml.jackson.datatype.hibernate7; +package tools.jackson.datatype.hibernate5.jakarta; import java.util.HashMap; import java.util.Map; import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/TestVersions.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/TestVersions.java similarity index 80% rename from hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/TestVersions.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/TestVersions.java index bb358b2f..723c5613 100644 --- a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/TestVersions.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/TestVersions.java @@ -1,9 +1,9 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta; +package tools.jackson.datatype.hibernate5.jakarta; import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.core.Versioned; +import tools.jackson.core.Version; +import tools.jackson.core.Versioned; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/TransientTest.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/TransientTest.java similarity index 85% rename from hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/TransientTest.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/TransientTest.java index 715adc45..b791d7a8 100644 --- a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/TransientTest.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/TransientTest.java @@ -1,11 +1,12 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta; +package tools.jackson.datatype.hibernate5.jakarta; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import jakarta.persistence.Transient; import org.junit.jupiter.api.Test; +import tools.jackson.databind.json.JsonMapper; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -38,7 +39,7 @@ public void testSimpleTransient() throws Exception // and then with Transient disabled Hibernate5JakartaModule mod = hibernateModule(false); mod.disable(Hibernate5JakartaModule.Feature.USE_TRANSIENT_ANNOTATION); - mapper = new ObjectMapper().registerModule(mod); + mapper = JsonMapper.builder().addModule(mod).build(); assertEquals(aposToQuotes("{'a':1,'b':2}"), mapper.writeValueAsString(new WithTransient())); } diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/UnwrappedTest.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/UnwrappedTest.java similarity index 80% rename from hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/UnwrappedTest.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/UnwrappedTest.java index 094c1679..c7a9076d 100644 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/UnwrappedTest.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/UnwrappedTest.java @@ -1,18 +1,19 @@ -package com.fasterxml.jackson.datatype.hibernate7; +package tools.jackson.datatype.hibernate5.jakarta; -import com.fasterxml.jackson.datatype.hibernate7.data.Customer; -import com.fasterxml.jackson.datatype.hibernate7.data.Product; import org.hibernate.Hibernate; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonUnwrapped; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.core.JacksonException; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.datatype.hibernate5.jakarta.data.Customer; +import tools.jackson.datatype.hibernate5.jakarta.data.Product; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.Persistence; + import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; @@ -40,7 +41,7 @@ public T getContent() } @Test - public void testSimpleUnwrapped() throws JsonProcessingException + public void testSimpleUnwrapped() throws JacksonException { EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit"); try { diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/Customer.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/Customer.java similarity index 99% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/Customer.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/Customer.java index ccb26da3..07959c8e 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/Customer.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/Customer.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate6.data; +package tools.jackson.datatype.hibernate5.jakarta.data; import static jakarta.persistence.GenerationType.IDENTITY; diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/Employee.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/Employee.java similarity index 98% rename from hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/Employee.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/Employee.java index e9318e67..5e70aeee 100644 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/Employee.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/Employee.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate7.data; +package tools.jackson.datatype.hibernate5.jakarta.data; import static jakarta.persistence.GenerationType.IDENTITY; diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/Office.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/Office.java similarity index 98% rename from hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/Office.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/Office.java index 0c3f5256..688c776b 100644 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/Office.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/Office.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate7.data; +package tools.jackson.datatype.hibernate5.jakarta.data; import java.util.HashSet; import java.util.Set; diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/Order.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/Order.java similarity index 98% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/Order.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/Order.java index 1e332a89..d7ff966f 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/Order.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/Order.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate6.data; +package tools.jackson.datatype.hibernate5.jakarta.data; import static jakarta.persistence.GenerationType.IDENTITY; diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/OrderDetail.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/OrderDetail.java similarity index 98% rename from hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/OrderDetail.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/OrderDetail.java index ab532dfa..a6d2a4bc 100644 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/OrderDetail.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/OrderDetail.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate7.data; +package tools.jackson.datatype.hibernate5.jakarta.data; import com.fasterxml.jackson.annotation.JsonBackReference; diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/OrderDetailId.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/OrderDetailId.java similarity index 97% rename from hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/OrderDetailId.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/OrderDetailId.java index 0c5d8fcd..0fa5d376 100644 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/OrderDetailId.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/OrderDetailId.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate7.data; +package tools.jackson.datatype.hibernate5.jakarta.data; import jakarta.persistence.Column; import jakarta.persistence.Embeddable; diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/Payment.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/Payment.java similarity index 97% rename from hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/Payment.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/Payment.java index 704e0876..192731f3 100644 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/Payment.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/Payment.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate7.data; +package tools.jackson.datatype.hibernate5.jakarta.data; import java.util.Date; diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/PaymentId.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/PaymentId.java similarity index 97% rename from hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/PaymentId.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/PaymentId.java index 5629f5e8..a7e89a64 100644 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/PaymentId.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/PaymentId.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate7.data; +package tools.jackson.datatype.hibernate5.jakarta.data; import jakarta.persistence.Column; import jakarta.persistence.Embeddable; diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/Product.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/Product.java similarity index 98% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/Product.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/Product.java index ff033e61..7b7d8990 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/Product.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/data/Product.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate6.data; +package tools.jackson.datatype.hibernate5.jakarta.data; import java.util.HashSet; diff --git a/hibernate5-jakarta/src/test/resources/META-INF/persistence.xml b/hibernate5-jakarta/src/test/resources/META-INF/persistence.xml index aa2aaaa1..596619df 100644 --- a/hibernate5-jakarta/src/test/resources/META-INF/persistence.xml +++ b/hibernate5-jakarta/src/test/resources/META-INF/persistence.xml @@ -6,15 +6,15 @@ org.hibernate.jpa.HibernatePersistenceProvider - com.fasterxml.jackson.datatype.hibernate5.jakarta.data.Customer - com.fasterxml.jackson.datatype.hibernate5.jakarta.data.Employee - com.fasterxml.jackson.datatype.hibernate5.jakarta.data.Office - com.fasterxml.jackson.datatype.hibernate5.jakarta.data.Order - com.fasterxml.jackson.datatype.hibernate5.jakarta.data.OrderDetail - com.fasterxml.jackson.datatype.hibernate5.jakarta.data.OrderDetailId - com.fasterxml.jackson.datatype.hibernate5.jakarta.data.Payment - com.fasterxml.jackson.datatype.hibernate5.jakarta.data.PaymentId - com.fasterxml.jackson.datatype.hibernate5.jakarta.data.Product + tools.jackson.datatype.hibernate5.jakarta.data.Customer + tools.jackson.datatype.hibernate5.jakarta.data.Employee + tools.jackson.datatype.hibernate5.jakarta.data.Office + tools.jackson.datatype.hibernate5.jakarta.data.Order + tools.jackson.datatype.hibernate5.jakarta.data.OrderDetail + tools.jackson.datatype.hibernate5.jakarta.data.OrderDetailId + tools.jackson.datatype.hibernate5.jakarta.data.Payment + tools.jackson.datatype.hibernate5.jakarta.data.PaymentId + tools.jackson.datatype.hibernate5.jakarta.data.Product diff --git a/hibernate5/pom.xml b/hibernate5/pom.xml index c9fc18d8..0c692d26 100644 --- a/hibernate5/pom.xml +++ b/hibernate5/pom.xml @@ -6,9 +6,9 @@ 4.0.0 - com.fasterxml.jackson.datatype + tools.jackson.datatype jackson-datatype-hibernate-parent - 2.21.0-SNAPSHOT + 3.0.0-SNAPSHOT jackson-datatype-hibernate5 Jackson-datatype-Hibernate5 @@ -21,7 +21,7 @@ Hibernate (https://hibernate.org) version 5.x data types. 1.8 1.8 - com/fasterxml/jackson/datatype/hibernate5 + tools/jackson/datatype/hibernate5 ${project.groupId}.hibernate5 5.3.37.Final @@ -101,8 +101,8 @@ Hibernate (https://hibernate.org) version 5.x data types. org.apache.maven.plugins maven-compiler-plugin - 8 - 8 + 17 + 17 diff --git a/hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/HibernateSerializerModifier.java b/hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/HibernateSerializerModifier.java deleted file mode 100644 index 48e34561..00000000 --- a/hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/HibernateSerializerModifier.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.fasterxml.jackson.datatype.hibernate5; - -import com.fasterxml.jackson.databind.BeanDescription; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializationConfig; -import com.fasterxml.jackson.databind.ser.BeanSerializerModifier; -import com.fasterxml.jackson.databind.type.CollectionType; -import com.fasterxml.jackson.databind.type.MapType; -import org.hibernate.SessionFactory; - -public class HibernateSerializerModifier - extends BeanSerializerModifier -{ - protected final int _features; - - protected final SessionFactory _sessionFactory; - - public HibernateSerializerModifier(int features, SessionFactory sessionFactory) { - _features = features; - _sessionFactory = sessionFactory; - } - - /* - @Override - public JsonSerializer modifySerializer(SerializationConfig config, - BeanDescription beanDesc, JsonSerializer serializer) { - return serializer; - } - */ - - @Override - public JsonSerializer modifyCollectionSerializer(SerializationConfig config, - CollectionType valueType, BeanDescription beanDesc, JsonSerializer serializer) { - return new PersistentCollectionSerializer(valueType, serializer, _features, _sessionFactory); - } - - @Override - public JsonSerializer modifyMapSerializer(SerializationConfig config, - MapType valueType, BeanDescription beanDesc, JsonSerializer serializer) { - return new PersistentCollectionSerializer(valueType, serializer, _features, _sessionFactory); - } -} diff --git a/hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/Hibernate5Module.java b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/Hibernate5Module.java similarity index 94% rename from hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/Hibernate5Module.java rename to hibernate5/src/main/java/tools/jackson/datatype/hibernate5/Hibernate5Module.java index 538990ce..41f1d3a1 100644 --- a/hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/Hibernate5Module.java +++ b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/Hibernate5Module.java @@ -1,12 +1,12 @@ -package com.fasterxml.jackson.datatype.hibernate5; +package tools.jackson.datatype.hibernate5; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.databind.AnnotationIntrospector; -import com.fasterxml.jackson.databind.Module; +import tools.jackson.core.Version; +import tools.jackson.databind.AnnotationIntrospector; +import tools.jackson.databind.JacksonModule; import org.hibernate.SessionFactory; import org.hibernate.engine.spi.Mapping; -public class Hibernate5Module extends com.fasterxml.jackson.databind.Module +public class Hibernate5Module extends tools.jackson.databind.JacksonModule { /** * Enumeration that defines all toggleable features this module @@ -180,11 +180,11 @@ public void setupModule(SetupContext context) context.appendAnnotationIntrospector(ai); } context.addSerializers(new HibernateSerializers(_mapping, _moduleFeatures)); - context.addBeanSerializerModifier(new HibernateSerializerModifier(_moduleFeatures, _sessionFactory)); + context.addSerializerModifier(new HibernateSerializerModifier(_moduleFeatures, _sessionFactory)); } /** - * Method called during {@link #setupModule}, to create {@link com.fasterxml.jackson.databind.AnnotationIntrospector} + * Method called during {@link #setupModule}, to create {@link tools.jackson.databind.AnnotationIntrospector} * to register along with module. If null is returned, no introspector is added. */ protected AnnotationIntrospector annotationIntrospector() { diff --git a/hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/Hibernate5Version.java b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/Hibernate5Version.java similarity index 95% rename from hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/Hibernate5Version.java rename to hibernate5/src/main/java/tools/jackson/datatype/hibernate5/Hibernate5Version.java index e832327d..c1585208 100644 --- a/hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/Hibernate5Version.java +++ b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/Hibernate5Version.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5; +package tools.jackson.datatype.hibernate5; public class Hibernate5Version { diff --git a/hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/HibernateAnnotationIntrospector.java b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateAnnotationIntrospector.java similarity index 85% rename from hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/HibernateAnnotationIntrospector.java rename to hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateAnnotationIntrospector.java index 47e923ba..1338c1c7 100644 --- a/hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/HibernateAnnotationIntrospector.java +++ b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateAnnotationIntrospector.java @@ -1,14 +1,15 @@ -package com.fasterxml.jackson.datatype.hibernate5; +package tools.jackson.datatype.hibernate5; import javax.persistence.Transient; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.databind.AnnotationIntrospector; -import com.fasterxml.jackson.databind.introspect.AnnotatedClass; -import com.fasterxml.jackson.databind.introspect.AnnotatedMember; +import tools.jackson.core.Version; +import tools.jackson.databind.AnnotationIntrospector; +import tools.jackson.databind.cfg.MapperConfig; +import tools.jackson.databind.introspect.AnnotatedClass; +import tools.jackson.databind.introspect.AnnotatedMember; /** - * Simple {@link com.fasterxml.jackson.databind.AnnotationIntrospector} that adds support for using + * Simple {@link tools.jackson.databind.AnnotationIntrospector} that adds support for using * {@link javax.persistence.Transient} to denote ignorable fields (alongside with Jackson * and/or JAXB annotations). */ @@ -65,12 +66,12 @@ public Version version() { */ @Override - public boolean hasIgnoreMarker(AnnotatedMember m) { + public boolean hasIgnoreMarker(MapperConfig config, AnnotatedMember m) { return _cfgCheckTransient && m.hasAnnotation(Transient.class); } @Override - public Boolean isIgnorableType(AnnotatedClass ac) + public Boolean isIgnorableType(MapperConfig config, AnnotatedClass ac) { /* 26-Dec-2015, tatu: To fix [datatype-hibernate#72], need to suppress handling * of `FieldHandled`. Not sure if it works without test (alas, none provided), diff --git a/hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/HibernateProxySerializer.java b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateProxySerializer.java similarity index 89% rename from hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/HibernateProxySerializer.java rename to hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateProxySerializer.java index 55adcf30..7f66264c 100644 --- a/hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/HibernateProxySerializer.java +++ b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateProxySerializer.java @@ -1,24 +1,23 @@ -package com.fasterxml.jackson.datatype.hibernate5; +package tools.jackson.datatype.hibernate5; import java.beans.Introspector; -import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.HashMap; import javax.persistence.EntityNotFoundException; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.BeanProperty; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; -import com.fasterxml.jackson.databind.jsontype.TypeSerializer; -import com.fasterxml.jackson.databind.ser.ContextualSerializer; -import com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap; -import com.fasterxml.jackson.databind.util.NameTransformer; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.BeanProperty; +import tools.jackson.databind.JavaType; +import tools.jackson.databind.DatabindException; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; +import tools.jackson.databind.jsontype.TypeSerializer; +import tools.jackson.databind.ser.impl.PropertySerializerMap; +import tools.jackson.databind.type.TypeFactory; +import tools.jackson.databind.util.NameTransformer; import org.hibernate.engine.spi.Mapping; import org.hibernate.engine.spi.SessionFactoryImplementor; @@ -37,8 +36,7 @@ * this one) have. */ public class HibernateProxySerializer - extends JsonSerializer - implements ContextualSerializer + extends ValueSerializer { /** * Property that has proxy value to handle @@ -145,12 +143,12 @@ protected HibernateProxySerializer(HibernateProxySerializer base, } @Override - public JsonSerializer createContextual(SerializerProvider prov, BeanProperty property) { + public ValueSerializer createContextual(SerializationContext prov, BeanProperty property) { return new HibernateProxySerializer(this, property, _unwrapper); } @Override - public JsonSerializer unwrappingSerializer(final NameTransformer unwrapper) { + public ValueSerializer unwrappingSerializer(final NameTransformer unwrapper) { return new HibernateProxySerializer(this, _property, unwrapper); } @@ -162,36 +160,34 @@ public boolean isUnwrappingSerializer() /* /********************************************************************** - /* JsonSerializer impl + /* ValueSerializer impl /********************************************************************** */ @Override - public boolean isEmpty(SerializerProvider provider, HibernateProxy value) { + public boolean isEmpty(SerializationContext provider, HibernateProxy value) { return (value == null) || (findProxied(value) == null); } @Override - public void serialize(HibernateProxy value, JsonGenerator g, SerializerProvider provider) - throws IOException + public void serialize(HibernateProxy value, JsonGenerator g, SerializationContext provider) { Object proxiedValue = findProxied(value); // TODO: figure out how to suppress nulls, if necessary? (too late for that here) if (proxiedValue == null) { - provider.defaultSerializeNull(g); + provider.defaultSerializeNullValue(g); return; } findSerializer(provider, proxiedValue).serialize(proxiedValue, g, provider); } @Override - public void serializeWithType(HibernateProxy value, JsonGenerator g, SerializerProvider provider, + public void serializeWithType(HibernateProxy value, JsonGenerator g, SerializationContext provider, TypeSerializer typeSer) - throws IOException { Object proxiedValue = findProxied(value); if (proxiedValue == null) { - provider.defaultSerializeNull(g); + provider.defaultSerializeNullValue(g); return; } /* This isn't exactly right, since type serializer really refers to proxy @@ -204,9 +200,9 @@ public void serializeWithType(HibernateProxy value, JsonGenerator g, SerializerP @Override public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint) - throws JsonMappingException + throws DatabindException { - SerializerProvider prov = visitor.getProvider(); + SerializationContext prov = visitor.getContext(); if ((prov == null) || (_property == null)) { super.acceptJsonFormatVisitor(visitor, typeHint); } else { @@ -222,8 +218,7 @@ public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType t /********************************************************************** */ - protected JsonSerializer findSerializer(SerializerProvider provider, Object value) - throws IOException + protected ValueSerializer findSerializer(SerializationContext provider, Object value) { /* TODO: if Hibernate did use generics, or we wanted to allow use of Jackson * annotations to indicate type, should take that into account. @@ -237,7 +232,11 @@ protected JsonSerializer findSerializer(SerializerProvider provider, Obj * really anyone's guess at this point; proxies can exist at any level? */ PropertySerializerMap.SerializerAndMapResult result = - _dynamicSerializers.findAndAddPrimarySerializer(type, provider, _property); + _dynamicSerializers.findAndAddPrimarySerializer( + //TODO find better way to get JavaType + TypeFactory.createDefaultInstance().unsafeSimpleType(type), + provider, + _property); if (_dynamicSerializers != result.map) { _dynamicSerializers = result.map; } diff --git a/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateSerializerModifier.java b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateSerializerModifier.java new file mode 100644 index 00000000..762b9722 --- /dev/null +++ b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateSerializerModifier.java @@ -0,0 +1,42 @@ +package tools.jackson.datatype.hibernate5; + +import tools.jackson.databind.BeanDescription; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.SerializationConfig; +import tools.jackson.databind.ser.ValueSerializerModifier; +import tools.jackson.databind.type.CollectionType; +import tools.jackson.databind.type.MapType; +import org.hibernate.SessionFactory; + +public class HibernateSerializerModifier + extends ValueSerializerModifier +{ + protected final int _features; + + protected final SessionFactory _sessionFactory; + + public HibernateSerializerModifier(int features, SessionFactory sessionFactory) { + _features = features; + _sessionFactory = sessionFactory; + } + + /* + @Override + public ValueSerializer modifySerializer(SerializationConfig config, + BeanDescription.Supplier beanDesc, ValueSerializer serializer) { + return serializer; + } + */ + + @Override + public ValueSerializer modifyCollectionSerializer(SerializationConfig config, + CollectionType valueType, BeanDescription.Supplier beanDesc, ValueSerializer serializer) { + return new PersistentCollectionSerializer(valueType, serializer, _features, _sessionFactory); + } + + @Override + public ValueSerializer modifyMapSerializer(SerializationConfig config, + MapType valueType, BeanDescription.Supplier beanDesc, ValueSerializer serializer) { + return new PersistentCollectionSerializer(valueType, serializer, _features, _sessionFactory); + } +} diff --git a/hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/HibernateSerializers.java b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateSerializers.java similarity index 72% rename from hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/HibernateSerializers.java rename to hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateSerializers.java index 89222b17..67a6559d 100644 --- a/hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/HibernateSerializers.java +++ b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateSerializers.java @@ -1,10 +1,11 @@ -package com.fasterxml.jackson.datatype.hibernate5; +package tools.jackson.datatype.hibernate5; -import com.fasterxml.jackson.databind.BeanDescription; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializationConfig; -import com.fasterxml.jackson.databind.ser.Serializers; +import com.fasterxml.jackson.annotation.JsonFormat; +import tools.jackson.databind.BeanDescription; +import tools.jackson.databind.JavaType; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.SerializationConfig; +import tools.jackson.databind.ser.Serializers; import org.hibernate.engine.spi.Mapping; import org.hibernate.proxy.HibernateProxy; @@ -30,8 +31,8 @@ public HibernateSerializers(Mapping mapping, int features) } @Override - public JsonSerializer findSerializer(SerializationConfig config, - JavaType type, BeanDescription beanDesc) + public ValueSerializer findSerializer(SerializationConfig config, + JavaType type, BeanDescription.Supplier beanDesc, JsonFormat.Value formatOverrides) { Class raw = type.getRawClass(); if (HibernateProxy.class.isAssignableFrom(raw)) { diff --git a/hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/PackageVersion.java.in b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/PackageVersion.java.in similarity index 75% rename from hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/PackageVersion.java.in rename to hibernate5/src/main/java/tools/jackson/datatype/hibernate5/PackageVersion.java.in index 7860aa14..69b6bdd0 100644 --- a/hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/PackageVersion.java.in +++ b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/PackageVersion.java.in @@ -1,8 +1,8 @@ package @package@; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.core.Versioned; -import com.fasterxml.jackson.core.util.VersionUtil; +import tools.jackson.core.Version; +import tools.jackson.core.Versioned; +import tools.jackson.core.util.VersionUtil; /** * Automatically generated from PackageVersion.java.in during diff --git a/hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/PersistentCollectionSerializer.java b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/PersistentCollectionSerializer.java similarity index 82% rename from hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/PersistentCollectionSerializer.java rename to hibernate5/src/main/java/tools/jackson/datatype/hibernate5/PersistentCollectionSerializer.java index c539ef39..9e21bfdc 100644 --- a/hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/PersistentCollectionSerializer.java +++ b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/PersistentCollectionSerializer.java @@ -1,19 +1,16 @@ -package com.fasterxml.jackson.datatype.hibernate5; +package tools.jackson.datatype.hibernate5; -import java.io.IOException; import java.util.*; import javax.persistence.*; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.*; -import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; -import com.fasterxml.jackson.databind.jsontype.TypeSerializer; -import com.fasterxml.jackson.databind.ser.ContainerSerializer; -import com.fasterxml.jackson.databind.ser.ContextualSerializer; -import com.fasterxml.jackson.databind.ser.ResolvableSerializer; -import com.fasterxml.jackson.databind.util.NameTransformer; -import com.fasterxml.jackson.datatype.hibernate5.Hibernate5Module.Feature; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.*; +import tools.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; +import tools.jackson.databind.jsontype.TypeSerializer; +import tools.jackson.databind.ser.std.StdContainerSerializer; +import tools.jackson.databind.util.NameTransformer; +import tools.jackson.datatype.hibernate5.Hibernate5Module.Feature; import org.hibernate.FlushMode; import org.hibernate.Hibernate; @@ -32,8 +29,7 @@ * and Map types (unlike in JDK). */ public class PersistentCollectionSerializer - extends ContainerSerializer - implements ContextualSerializer, ResolvableSerializer + extends StdContainerSerializer { private static final long serialVersionUID = 1L; // since 2.7 @@ -53,7 +49,7 @@ public class PersistentCollectionSerializer * Serializer that does actual value serialization when value * is available (either already or with forced access). */ - protected final JsonSerializer _serializer; + protected final ValueSerializer _serializer; protected final SessionFactory _sessionFactory; @@ -65,10 +61,10 @@ public class PersistentCollectionSerializer @SuppressWarnings("unchecked") public PersistentCollectionSerializer(JavaType containerType, - JsonSerializer serializer, int features, SessionFactory sessionFactory) { - super(containerType); + ValueSerializer serializer, int features, SessionFactory sessionFactory) { + super(containerType, null); _originalType = containerType; - _serializer = (JsonSerializer) serializer; + _serializer = (ValueSerializer) serializer; _features = features; _sessionFactory = sessionFactory; } @@ -77,11 +73,11 @@ public PersistentCollectionSerializer(JavaType containerType, * @since 2.7 */ @SuppressWarnings("unchecked") - protected PersistentCollectionSerializer(PersistentCollectionSerializer base, JsonSerializer serializer) + protected PersistentCollectionSerializer(PersistentCollectionSerializer base, ValueSerializer serializer) { super(base); _originalType = base._originalType; - _serializer = (JsonSerializer) serializer; + _serializer = (ValueSerializer) serializer; _features = base._features; _sessionFactory = base._sessionFactory; } @@ -91,7 +87,7 @@ public PersistentCollectionSerializer unwrappingSerializer(NameTransformer unwra return _withSerializer(_serializer.unwrappingSerializer(unwrapper)); } - protected PersistentCollectionSerializer _withSerializer(JsonSerializer ser) { + protected PersistentCollectionSerializer _withSerializer(ValueSerializer ser) { if ((ser == _serializer) || (ser == null)) { return this; } @@ -100,9 +96,9 @@ protected PersistentCollectionSerializer _withSerializer(JsonSerializer ser) // from `ContainerSerializer` @Override - protected ContainerSerializer _withValueTypeSerializer(TypeSerializer vts) + protected StdContainerSerializer _withValueTypeSerializer(TypeSerializer vts) { - ContainerSerializer ser0 = _containerSerializer(); + StdContainerSerializer ser0 = _containerSerializer(); if (ser0 != null) { return _withSerializer(ser0.withValueTypeSerializer(vts)); } @@ -119,11 +115,9 @@ protected ContainerSerializer _withValueTypeSerializer(TypeSerializer vts) */ @Override - public void resolve(SerializerProvider provider) throws JsonMappingException + public void resolve(SerializationContext provider) throws DatabindException { - if (_serializer instanceof ResolvableSerializer) { - ((ResolvableSerializer) _serializer).resolve(provider); - } + _serializer.resolve(provider); } /** @@ -131,13 +125,13 @@ public void resolve(SerializerProvider provider) throws JsonMappingException * must know type of property being serialized. */ @Override - public JsonSerializer createContextual(SerializerProvider provider, + public ValueSerializer createContextual(SerializationContext provider, BeanProperty property) - throws JsonMappingException + throws DatabindException { // 18-Oct-2013, tatu: Whether this is for the primary property or secondary is // not quite certain; presume primary one for now. - JsonSerializer ser = provider.handlePrimaryContextualization(_serializer, property); + ValueSerializer ser = provider.handlePrimaryContextualization(_serializer, property); // If we use eager loading, can just return underlying serializer as is if (!usesLazyLoading(property)) { @@ -148,12 +142,12 @@ public JsonSerializer createContextual(SerializerProvider provider, /* /********************************************************************** - /* JsonSerializer simple accessors, metadata + /* ValueSerializer simple accessors, metadata /********************************************************************** */ @Override // since 2.6 - public boolean isEmpty(SerializerProvider provider, Object value) + public boolean isEmpty(SerializationContext provider, Object value) { if (value == null) { // is null ever passed? return true; @@ -177,7 +171,7 @@ public boolean usesObjectId() { @Override public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint) - throws JsonMappingException + throws DatabindException { _serializer.acceptJsonFormatVisitor(visitor, typeHint); } @@ -190,7 +184,7 @@ public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType t @Override public JavaType getContentType() { - ContainerSerializer ser = _containerSerializer(); + StdContainerSerializer ser = _containerSerializer(); if (ser != null) { return ser.getContentType(); } @@ -198,8 +192,8 @@ public JavaType getContentType() { } @Override - public JsonSerializer getContentSerializer() { - ContainerSerializer ser = _containerSerializer(); + public ValueSerializer getContentSerializer() { + StdContainerSerializer ser = _containerSerializer(); if (ser != null) { return ser.getContentSerializer(); } @@ -220,23 +214,22 @@ public boolean hasSingleElement(Object value) { /* /********************************************************************** - /* JsonSerializer, actual serialization + /* ValueSerializer, actual serialization /********************************************************************** */ @Override - public void serialize(Object value, JsonGenerator g, SerializerProvider provider) - throws IOException + public void serialize(Object value, JsonGenerator g, SerializationContext provider) { if (value instanceof PersistentCollection) { value = findLazyValue((PersistentCollection) value); if (value == null) { - provider.defaultSerializeNull(g); + provider.defaultSerializeNullValue(g); return; } } if (_serializer == null) { // sanity check... - throw JsonMappingException.from(g, "PersistentCollection does not have serializer set"); + throw DatabindException.from(g, "PersistentCollection does not have serializer set"); } // 30-Jul-2016, tatu: wrt [datatype-hibernate#93], should NOT have to do anything here; @@ -245,19 +238,18 @@ public void serialize(Object value, JsonGenerator g, SerializerProvider provider } @Override - public void serializeWithType(Object value, JsonGenerator g, SerializerProvider provider, + public void serializeWithType(Object value, JsonGenerator g, SerializationContext provider, TypeSerializer typeSer) - throws IOException { if (value instanceof PersistentCollection) { value = findLazyValue((PersistentCollection) value); if (value == null) { - provider.defaultSerializeNull(g); + provider.defaultSerializeNullValue(g); return; } } if (_serializer == null) { // sanity check... - throw JsonMappingException.from(g, "PersistentCollection does not have serializer set"); + throw DatabindException.from(g, "PersistentCollection does not have serializer set"); } // 30-Jul-2016, tatu: wrt [datatype-hibernate#93], conversion IS needed here (or, @@ -276,9 +268,9 @@ public void serializeWithType(Object value, JsonGenerator g, SerializerProvider /********************************************************************** */ - protected ContainerSerializer _containerSerializer() { - if (_serializer instanceof ContainerSerializer) { - return (ContainerSerializer) _serializer; + protected StdContainerSerializer _containerSerializer() { + if (_serializer instanceof StdContainerSerializer stdContainerSerializer) { + return stdContainerSerializer; } return null; } diff --git a/hibernate5/src/main/resources/META-INF/services/com.fasterxml.jackson.databind.Module b/hibernate5/src/main/resources/META-INF/services/com.fasterxml.jackson.databind.Module index 7c451293..038ffd06 100644 --- a/hibernate5/src/main/resources/META-INF/services/com.fasterxml.jackson.databind.Module +++ b/hibernate5/src/main/resources/META-INF/services/com.fasterxml.jackson.databind.Module @@ -1 +1 @@ -com.fasterxml.jackson.datatype.hibernate5.Hibernate5Module +tools.jackson.datatype.hibernate5.Hibernate5Module diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/BaseTest.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/BaseTest.java similarity index 78% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/BaseTest.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/BaseTest.java index 1d966cb7..2473ced4 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/BaseTest.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/BaseTest.java @@ -1,10 +1,11 @@ -package com.fasterxml.jackson.datatype.hibernate5; +package tools.jackson.datatype.hibernate5; import java.util.Arrays; import org.apache.log4j.Logger; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; import static org.junit.jupiter.api.Assertions.fail; @@ -20,14 +21,19 @@ protected BaseTest() { } } + protected JsonMapper.Builder mapperBuilderWithModule(boolean forceLazyLoading) + { + return JsonMapper.builder().addModule(hibernateModule(forceLazyLoading, false)); + } + protected ObjectMapper mapperWithModule(boolean forceLazyLoading) { - return new ObjectMapper().registerModule(hibernateModule(forceLazyLoading, false)); + return mapperBuilderWithModule(forceLazyLoading).build(); } protected ObjectMapper mapperWithModule(boolean forceLazyLoading, boolean nullMissingEntities) { - return new ObjectMapper().registerModule(hibernateModule(forceLazyLoading, nullMissingEntities)); + return JsonMapper.builder().addModule(hibernateModule(forceLazyLoading, nullMissingEntities)).build(); } protected Hibernate5Module hibernateModule(boolean forceLazyLoading) diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/ForceLazyLoadingTest.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/ForceLazyLoadingTest.java similarity index 87% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/ForceLazyLoadingTest.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/ForceLazyLoadingTest.java index 77b18b1f..7dda25bc 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/ForceLazyLoadingTest.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/ForceLazyLoadingTest.java @@ -1,8 +1,8 @@ -package com.fasterxml.jackson.datatype.hibernate5; +package tools.jackson.datatype.hibernate5; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.hibernate5.data.Customer; -import com.fasterxml.jackson.datatype.hibernate5.data.Payment; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.datatype.hibernate5.data.Customer; +import tools.jackson.datatype.hibernate5.data.Payment; import org.hibernate.Hibernate; import org.junit.jupiter.api.Test; diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/HibernateTest.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/HibernateTest.java similarity index 92% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/HibernateTest.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/HibernateTest.java index 5e15d9ef..43e62ecb 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/HibernateTest.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/HibernateTest.java @@ -1,14 +1,14 @@ -package com.fasterxml.jackson.datatype.hibernate5; +package tools.jackson.datatype.hibernate5; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import javax.persistence.Query; -import com.fasterxml.jackson.datatype.hibernate5.data.Customer; +import tools.jackson.datatype.hibernate5.data.Customer; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.hibernate5.data.Employee; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.datatype.hibernate5.data.Employee; import org.junit.jupiter.api.*; diff --git a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/InclusionTest.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/InclusionTest.java similarity index 61% rename from hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/InclusionTest.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/InclusionTest.java index d8ecce90..1dd90fb6 100644 --- a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/InclusionTest.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/InclusionTest.java @@ -1,11 +1,12 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta; +package tools.jackson.datatype.hibernate5; import java.util.*; import org.junit.jupiter.api.Test; import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -21,8 +22,9 @@ static class Mock @Test public void testInclusion() throws Exception { - final ObjectMapper mapper = mapperWithModule(false); - mapper.setSerializationInclusion(Include.NON_EMPTY); + final JsonMapper.Builder builder = mapperBuilderWithModule(false); + builder.changeDefaultPropertyInclusion(inc -> inc.withValueInclusion(Include.NON_EMPTY)); + ObjectMapper mapper = builder.build(); String json = mapper.writeValueAsString(new Mock()); assertEquals("{\"id\":13}", json); } diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/LazyLoadingTest.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/LazyLoadingTest.java similarity index 83% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/LazyLoadingTest.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/LazyLoadingTest.java index 0e667f95..838c7ef6 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/LazyLoadingTest.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/LazyLoadingTest.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5; +package tools.jackson.datatype.hibernate5; import java.util.*; @@ -6,11 +6,12 @@ import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.hibernate5.Hibernate5Module.Feature; -import com.fasterxml.jackson.datatype.hibernate5.data.Customer; -import com.fasterxml.jackson.datatype.hibernate5.data.Payment; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.datatype.hibernate5.Hibernate5Module.Feature; +import tools.jackson.datatype.hibernate5.data.Customer; +import tools.jackson.datatype.hibernate5.data.Payment; import org.hibernate.Hibernate; import org.junit.jupiter.api.Test; @@ -63,10 +64,10 @@ public void testGetCustomerJson() throws Exception } @Test - public void testSerializeIdentifierFeature() throws JsonProcessingException { + public void testSerializeIdentifierFeature() throws JacksonException { Hibernate5Module module = new Hibernate5Module(); module.enable(Feature.SERIALIZE_IDENTIFIER_FOR_LAZY_NOT_LOADED_OBJECTS); - ObjectMapper objectMapper = new ObjectMapper().registerModule(module); + ObjectMapper objectMapper = JsonMapper.builder().addModule(module).build(); EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit"); try { diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/MissingEntitiesAsNullTest.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/MissingEntitiesAsNullTest.java similarity index 89% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/MissingEntitiesAsNullTest.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/MissingEntitiesAsNullTest.java index 58526160..b4259bf0 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/MissingEntitiesAsNullTest.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/MissingEntitiesAsNullTest.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5; +package tools.jackson.datatype.hibernate5; import java.util.Map; @@ -9,9 +9,9 @@ import org.hibernate.Hibernate; import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.hibernate5.data.Customer; +import tools.jackson.databind.DatabindException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.datatype.hibernate5.data.Customer; import static org.junit.jupiter.api.Assertions.*; @@ -70,7 +70,7 @@ public void testProductWithValidForeignKey() throws Exception { } // caused by javax.persistence.EntityNotFoundException: Unable to find - // com.fasterxml.jackson.datatype.hibernate4.data.Product with id X10_1678 + // tools.jackson.datatype.hibernate4.data.Product with id X10_1678 @Test public void testExceptionWithInvalidForeignKey() throws Exception { EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit"); @@ -89,8 +89,8 @@ public void testExceptionWithInvalidForeignKey() throws Exception { // JUnit 3.8 fail("Expected EntityNotFoundException exception"); - } catch (JsonMappingException e) { - assertEquals("Unable to find com.fasterxml.jackson.datatype.hibernate5.data.Product with id X10_1678", e.getCause().getMessage()); + } catch (DatabindException e) { + assertEquals("Unable to find tools.jackson.datatype.hibernate5.data.Product with id X10_1678", e.getCause().getMessage()); } finally { emf.close(); } diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/OneToManyTest.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/OneToManyTest.java similarity index 84% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/OneToManyTest.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/OneToManyTest.java index 51173d39..e7c7bb04 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/OneToManyTest.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/OneToManyTest.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate4; +package tools.jackson.datatype.hibernate5; import java.util.*; @@ -6,7 +6,8 @@ import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -42,7 +43,7 @@ public void testMapWithOneToMany() throws Exception { } private String mapWithHibernateModule(Object object) throws Exception { - return new ObjectMapper().registerModule(new Hibernate4Module()).writeValueAsString(object); + return JsonMapper.builder().addModule(new Hibernate5Module()).build().writeValueAsString(object); } private String mapWithoutHibernateModule(Object object) throws Exception { diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/Polymorphic81Test.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/Polymorphic81Test.java similarity index 95% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/Polymorphic81Test.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/Polymorphic81Test.java index d3a7e18a..be811a4a 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/Polymorphic81Test.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/Polymorphic81Test.java @@ -1,11 +1,11 @@ -package com.fasterxml.jackson.datatype.hibernate5; +package tools.jackson.datatype.hibernate5; import java.util.*; import org.junit.jupiter.api.Test; import com.fasterxml.jackson.annotation.*; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/ReplacePersistentCollectionTest.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/ReplacePersistentCollectionTest.java similarity index 82% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/ReplacePersistentCollectionTest.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/ReplacePersistentCollectionTest.java index fc273228..add3443f 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/ReplacePersistentCollectionTest.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/ReplacePersistentCollectionTest.java @@ -1,13 +1,14 @@ -package com.fasterxml.jackson.datatype.hibernate5; +package tools.jackson.datatype.hibernate5; import java.util.*; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping; -import com.fasterxml.jackson.databind.json.JsonMapper; -import com.fasterxml.jackson.datatype.hibernate5.data.Customer; -import com.fasterxml.jackson.datatype.hibernate5.data.Payment; +import tools.jackson.databind.DatabindException; +import tools.jackson.databind.DefaultTyping; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.databind.jsontype.DefaultBaseTypeLimitingValidator; +import tools.jackson.datatype.hibernate5.data.Customer; +import tools.jackson.datatype.hibernate5.data.Payment; import org.hibernate.Hibernate; import org.junit.jupiter.api.*; @@ -54,7 +55,7 @@ public void testNoReplacePersistentCollection() throws Exception { try { /*Customer result =*/ mapper.readValue(json, Customer.class); fail("Should throw exception"); - } catch (JsonMappingException e) { + } catch (DatabindException e) { verifyException(e, "failed to lazily initialize"); } } @@ -91,7 +92,7 @@ public void testReplacePersistentCollection() throws Exception { private ObjectMapper hibernateMapper(Hibernate5Module module) { return JsonMapper.builder() .addModule(module) - .build() - .enableDefaultTyping(DefaultTyping.NON_FINAL); + .activateDefaultTyping(new DefaultBaseTypeLimitingValidator(), DefaultTyping.NON_FINAL) + .build(); } } diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/TestMaps.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/TestMaps.java similarity index 82% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/TestMaps.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/TestMaps.java index ad47cef1..a202062c 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/TestMaps.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/TestMaps.java @@ -1,10 +1,10 @@ -package com.fasterxml.jackson.datatype.hibernate4; +package tools.jackson.datatype.hibernate5; import java.util.*; import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/TestVersions.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/TestVersions.java similarity index 80% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/TestVersions.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/TestVersions.java index 17a68ea5..8a7bbff7 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/TestVersions.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/TestVersions.java @@ -1,9 +1,9 @@ -package com.fasterxml.jackson.datatype.hibernate5; +package tools.jackson.datatype.hibernate5; import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.core.Versioned; +import tools.jackson.core.Version; +import tools.jackson.core.Versioned; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/TransientTest.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/TransientTest.java similarity index 85% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/TransientTest.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/TransientTest.java index 23fb0fb6..561c0ca2 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/TransientTest.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/TransientTest.java @@ -1,11 +1,12 @@ -package com.fasterxml.jackson.datatype.hibernate5; +package tools.jackson.datatype.hibernate5; import javax.persistence.Transient; import org.junit.jupiter.api.Test; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -38,7 +39,7 @@ public void testSimpleTransient() throws Exception // and then with Transient disabled Hibernate5Module mod = hibernateModule(false); mod.disable(Hibernate5Module.Feature.USE_TRANSIENT_ANNOTATION); - mapper = new ObjectMapper().registerModule(mod); + mapper = JsonMapper.builder().addModule(mod).build(); assertEquals(aposToQuotes("{'a':1,'b':2}"), mapper.writeValueAsString(new WithTransient())); } diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/UnwrappedTest.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/UnwrappedTest.java similarity index 79% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/UnwrappedTest.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/UnwrappedTest.java index 664e5a6e..13fa85ff 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/UnwrappedTest.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/UnwrappedTest.java @@ -1,19 +1,18 @@ -package com.fasterxml.jackson.datatype.hibernate4; +package tools.jackson.datatype.hibernate5; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonUnwrapped; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.hibernate4.data.Customer; -import com.fasterxml.jackson.datatype.hibernate4.data.Product; +import tools.jackson.core.JacksonException; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.datatype.hibernate5.data.Customer; +import tools.jackson.datatype.hibernate5.data.Product; import org.hibernate.Hibernate; import org.junit.jupiter.api.Test; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; -import java.util.Map; import static org.junit.jupiter.api.Assertions.*; @@ -40,7 +39,7 @@ public T getContent() } @Test - public void testSimpleUnwrapped() throws JsonProcessingException + public void testSimpleUnwrapped() throws JacksonException { EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit"); try { diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/Customer.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/Customer.java similarity index 99% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/Customer.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/Customer.java index 8c1e2a54..9aea84f4 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/Customer.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/Customer.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.data; +package tools.jackson.datatype.hibernate5.data; import java.util.HashSet; import java.util.Set; diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/Employee.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/Employee.java similarity index 98% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/Employee.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/Employee.java index 80dcb314..eed2791a 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/data/Employee.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/Employee.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.data; +package tools.jackson.datatype.hibernate5.data; import java.util.HashSet; import java.util.Set; diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/Office.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/Office.java similarity index 98% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/Office.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/Office.java index 20ea3e0b..37b88d1b 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/Office.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/Office.java @@ -1,15 +1,15 @@ -package com.fasterxml.jackson.datatype.hibernate4.data; +package tools.jackson.datatype.hibernate5.data; -import java.util.HashSet; -import java.util.Set; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.Id; -import javax.persistence.OneToMany; -import javax.persistence.Table; +import java.util.HashSet; +import java.util.Set; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; @SuppressWarnings("serial") @Entity diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/Order.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/Order.java similarity index 98% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/Order.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/Order.java index 706177eb..4e66b43e 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/Order.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/Order.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate4.data; +package tools.jackson.datatype.hibernate5.data; import com.fasterxml.jackson.annotation.JsonBackReference; diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/OrderDetail.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/OrderDetail.java similarity index 98% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/OrderDetail.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/OrderDetail.java index be543de5..219f84d3 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/OrderDetail.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/OrderDetail.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate4.data; +package tools.jackson.datatype.hibernate5.data; import com.fasterxml.jackson.annotation.JsonBackReference; diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/OrderDetailId.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/OrderDetailId.java similarity index 97% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/OrderDetailId.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/OrderDetailId.java index 6865b91b..50974f81 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/OrderDetailId.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/OrderDetailId.java @@ -1,8 +1,8 @@ -package com.fasterxml.jackson.datatype.hibernate4.data; +package tools.jackson.datatype.hibernate5.data; -import javax.persistence.Column; -import javax.persistence.Embeddable; +import javax.persistence.Column; +import javax.persistence.Embeddable; @SuppressWarnings("serial") @Embeddable diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/Payment.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/Payment.java similarity index 97% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/Payment.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/Payment.java index e022cfca..b8535b03 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/Payment.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/Payment.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate4.data; +package tools.jackson.datatype.hibernate5.data; import java.util.Date; diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/PaymentId.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/PaymentId.java similarity index 97% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/PaymentId.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/PaymentId.java index 86628856..099a730c 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/PaymentId.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/PaymentId.java @@ -1,8 +1,8 @@ -package com.fasterxml.jackson.datatype.hibernate4.data; +package tools.jackson.datatype.hibernate5.data; -import javax.persistence.Column; -import javax.persistence.Embeddable; +import javax.persistence.Column; +import javax.persistence.Embeddable; @SuppressWarnings("serial") @Embeddable diff --git a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/Product.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/Product.java similarity index 98% rename from hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/Product.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/Product.java index c8245441..d5b04915 100644 --- a/hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4/data/Product.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/data/Product.java @@ -1,15 +1,15 @@ -package com.fasterxml.jackson.datatype.hibernate4.data; +package tools.jackson.datatype.hibernate5.data; -import java.util.HashSet; -import java.util.Set; -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.Id; -import javax.persistence.OneToMany; -import javax.persistence.Table; +import java.util.HashSet; +import java.util.Set; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; @SuppressWarnings("serial") @Entity diff --git a/hibernate5/src/test/resources/META-INF/persistence.xml b/hibernate5/src/test/resources/META-INF/persistence.xml index 1080af14..3a5d8dd7 100644 --- a/hibernate5/src/test/resources/META-INF/persistence.xml +++ b/hibernate5/src/test/resources/META-INF/persistence.xml @@ -6,18 +6,18 @@ org.hibernate.jpa.HibernatePersistenceProvider - com.fasterxml.jackson.datatype.hibernate5.data.Contrato - com.fasterxml.jackson.datatype.hibernate5.data.Customer - com.fasterxml.jackson.datatype.hibernate5.data.Employee - com.fasterxml.jackson.datatype.hibernate5.data.Liquidacao - com.fasterxml.jackson.datatype.hibernate5.data.Office - com.fasterxml.jackson.datatype.hibernate5.data.Order - com.fasterxml.jackson.datatype.hibernate5.data.OrderDetail - com.fasterxml.jackson.datatype.hibernate5.data.OrderDetailId - com.fasterxml.jackson.datatype.hibernate5.data.Parcela - com.fasterxml.jackson.datatype.hibernate5.data.Payment - com.fasterxml.jackson.datatype.hibernate5.data.PaymentId - com.fasterxml.jackson.datatype.hibernate5.data.Product + tools.jackson.datatype.hibernate5.data.Contrato + tools.jackson.datatype.hibernate5.data.Customer + tools.jackson.datatype.hibernate5.data.Employee + tools.jackson.datatype.hibernate5.data.Liquidacao + tools.jackson.datatype.hibernate5.data.Office + tools.jackson.datatype.hibernate5.data.Order + tools.jackson.datatype.hibernate5.data.OrderDetail + tools.jackson.datatype.hibernate5.data.OrderDetailId + tools.jackson.datatype.hibernate5.data.Parcela + tools.jackson.datatype.hibernate5.data.Payment + tools.jackson.datatype.hibernate5.data.PaymentId + tools.jackson.datatype.hibernate5.data.Product diff --git a/hibernate5_2-test/pom.xml b/hibernate5_2-test/pom.xml deleted file mode 100644 index aca4e4e6..00000000 --- a/hibernate5_2-test/pom.xml +++ /dev/null @@ -1,128 +0,0 @@ - - 4.0.0 - - com.fasterxml.jackson.datatype - jackson-datatype-hibernate-parent - 2.13.0-SNAPSHOT - - jackson-datatype-hibernate5_2-test - - - 1.8 - 1.8 - - - - - com.fasterxml.jackson.datatype - jackson-datatype-hibernate5 - ${project.version} - test - - - com.fasterxml.jackson.datatype - jackson-datatype-hibernate5 - ${project.version} - test-jar - test - - - org.hibernate - hibernate-core - 5.3.20.Final - provided - - - - - org.mockito - mockito-core - 1.10.19 - test - - - org.slf4j - slf4j-log4j12 - 1.6.6 - test - - - log4j - log4j - 1.2.17 - test - - - com.h2database - h2 - 2.2.220 - test - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 8 - 8 - - - - - org.apache.maven.plugins - maven-jar-plugin - - - default-jar - - - - - - - org.apache.maven.plugins - maven-install-plugin - 2.4 - - true - - - - - org.apache.maven.plugins - maven-deploy-plugin - - true - - - - - - - hibernate5_2-test - - 1.8 - - - - - org.apache.maven.plugins - maven-surefire-plugin - - - - com.fasterxml.jackson.datatype:jackson-datatype-hibernate5 - - --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED - - - - - - - diff --git a/hibernate6/pom.xml b/hibernate6/pom.xml index a7b04912..3bbe4e0c 100644 --- a/hibernate6/pom.xml +++ b/hibernate6/pom.xml @@ -6,9 +6,9 @@ 4.0.0 - com.fasterxml.jackson.datatype + tools.jackson.datatype jackson-datatype-hibernate-parent - 2.21.0-SNAPSHOT + 3.0.0-SNAPSHOT jackson-datatype-hibernate6 Jackson-datatype-hibernate6 @@ -19,7 +19,7 @@ Hibernate (https://hibernate.org/) version 6.x with Jakarta data types. https://github.com/FasterXML/jackson-datatype-hibernate - com/fasterxml/jackson/datatype/hibernate6 + tools/jackson/datatype/hibernate6 ${project.groupId}.hibernate6 6.2.33.Final @@ -76,8 +76,8 @@ Hibernate (https://hibernate.org/) version 6.x with Jakarta data types. org.apache.maven.plugins maven-compiler-plugin - 11 - 11 + 17 + 17 diff --git a/hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/Hibernate6SerializerModifier.java b/hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/Hibernate6SerializerModifier.java deleted file mode 100644 index dd3758dd..00000000 --- a/hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/Hibernate6SerializerModifier.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.fasterxml.jackson.datatype.hibernate6; - -import com.fasterxml.jackson.databind.BeanDescription; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializationConfig; -import com.fasterxml.jackson.databind.ser.BeanSerializerModifier; -import com.fasterxml.jackson.databind.type.CollectionType; -import com.fasterxml.jackson.databind.type.MapType; -import org.hibernate.SessionFactory; - -public class Hibernate6SerializerModifier - extends BeanSerializerModifier -{ - protected final int _features; - - protected final SessionFactory _sessionFactory; - - public Hibernate6SerializerModifier(int features, SessionFactory sessionFactory) { - _features = features; - _sessionFactory = sessionFactory; - } - - /* - @Override - public JsonSerializer modifySerializer(SerializationConfig config, - BeanDescription beanDesc, JsonSerializer serializer) { - return serializer; - } - */ - - @Override - public JsonSerializer modifyCollectionSerializer(SerializationConfig config, - CollectionType valueType, BeanDescription beanDesc, JsonSerializer serializer) { - return new PersistentCollectionSerializer(valueType, serializer, _features, _sessionFactory); - } - - @Override - public JsonSerializer modifyMapSerializer(SerializationConfig config, - MapType valueType, BeanDescription beanDesc, JsonSerializer serializer) { - return new PersistentCollectionSerializer(valueType, serializer, _features, _sessionFactory); - } -} diff --git a/hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/Hibernate6AnnotationIntrospector.java b/hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6AnnotationIntrospector.java similarity index 87% rename from hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/Hibernate6AnnotationIntrospector.java rename to hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6AnnotationIntrospector.java index 7dd81868..e247fc69 100644 --- a/hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/Hibernate6AnnotationIntrospector.java +++ b/hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6AnnotationIntrospector.java @@ -1,9 +1,10 @@ -package com.fasterxml.jackson.datatype.hibernate6; +package tools.jackson.datatype.hibernate6; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.databind.AnnotationIntrospector; -import com.fasterxml.jackson.databind.introspect.AnnotatedClass; -import com.fasterxml.jackson.databind.introspect.AnnotatedMember; +import tools.jackson.core.Version; +import tools.jackson.databind.AnnotationIntrospector; +import tools.jackson.databind.cfg.MapperConfig; +import tools.jackson.databind.introspect.AnnotatedClass; +import tools.jackson.databind.introspect.AnnotatedMember; import jakarta.persistence.Transient; /** @@ -64,12 +65,12 @@ public Version version() { */ @Override - public boolean hasIgnoreMarker(AnnotatedMember m) { + public boolean hasIgnoreMarker(MapperConfig config, AnnotatedMember m) { return _cfgCheckTransient && m.hasAnnotation(Transient.class); } @Override - public Boolean isIgnorableType(AnnotatedClass ac) + public Boolean isIgnorableType(MapperConfig config, AnnotatedClass ac) { /* 26-Dec-2015, tatu: To fix [datatype-hibernate#72], need to suppress handling * of `FieldHandled`. Not sure if it works without test (alas, none provided), diff --git a/hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/Hibernate6Module.java b/hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6Module.java similarity index 95% rename from hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/Hibernate6Module.java rename to hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6Module.java index b5b22edc..765587af 100644 --- a/hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/Hibernate6Module.java +++ b/hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6Module.java @@ -1,12 +1,12 @@ -package com.fasterxml.jackson.datatype.hibernate6; +package tools.jackson.datatype.hibernate6; import org.hibernate.SessionFactory; import org.hibernate.engine.spi.Mapping; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.databind.AnnotationIntrospector; +import tools.jackson.core.Version; +import tools.jackson.databind.AnnotationIntrospector; -public class Hibernate6Module extends com.fasterxml.jackson.databind.Module +public class Hibernate6Module extends tools.jackson.databind.JacksonModule { /** * Enumeration that defines all toggleable features this module @@ -180,7 +180,7 @@ public void setupModule(SetupContext context) context.appendAnnotationIntrospector(ai); } context.addSerializers(new Hibernate6Serializers(_mapping, _moduleFeatures)); - context.addBeanSerializerModifier(new Hibernate6SerializerModifier(_moduleFeatures, _sessionFactory)); + context.addSerializerModifier(new Hibernate6SerializerModifier(_moduleFeatures, _sessionFactory)); } /** diff --git a/hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/Hibernate6ProxySerializer.java b/hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6ProxySerializer.java similarity index 87% rename from hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/Hibernate6ProxySerializer.java rename to hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6ProxySerializer.java index 4f63e996..065e08c7 100644 --- a/hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/Hibernate6ProxySerializer.java +++ b/hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6ProxySerializer.java @@ -1,7 +1,6 @@ -package com.fasterxml.jackson.datatype.hibernate6; +package tools.jackson.datatype.hibernate6; import java.beans.Introspector; -import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.HashMap; @@ -13,17 +12,17 @@ import org.hibernate.proxy.LazyInitializer; import org.hibernate.proxy.pojo.BasicLazyInitializer; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.BeanProperty; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; -import com.fasterxml.jackson.databind.jsontype.TypeSerializer; -import com.fasterxml.jackson.databind.ser.ContextualSerializer; -import com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap; -import com.fasterxml.jackson.databind.util.NameTransformer; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.BeanProperty; +import tools.jackson.databind.JavaType; +import tools.jackson.databind.DatabindException; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; +import tools.jackson.databind.jsontype.TypeSerializer; +import tools.jackson.databind.ser.impl.PropertySerializerMap; +import tools.jackson.databind.type.TypeFactory; +import tools.jackson.databind.util.NameTransformer; import jakarta.persistence.EntityNotFoundException; @@ -37,8 +36,7 @@ * this one) have. */ public class Hibernate6ProxySerializer - extends JsonSerializer - implements ContextualSerializer + extends ValueSerializer { /** * Property that has proxy value to handle @@ -104,12 +102,12 @@ protected Hibernate6ProxySerializer(Hibernate6ProxySerializer base, } @Override - public JsonSerializer createContextual(SerializerProvider prov, BeanProperty property) { + public ValueSerializer createContextual(SerializationContext prov, BeanProperty property) { return new Hibernate6ProxySerializer(this, property, _unwrapper); } @Override - public JsonSerializer unwrappingSerializer(final NameTransformer unwrapper) { + public ValueSerializer unwrappingSerializer(final NameTransformer unwrapper) { return new Hibernate6ProxySerializer(this, _property, unwrapper); } @@ -121,36 +119,34 @@ public boolean isUnwrappingSerializer() /* /********************************************************************** - /* JsonSerializer impl + /* ValueSerializer impl /********************************************************************** */ @Override - public boolean isEmpty(SerializerProvider provider, HibernateProxy value) { + public boolean isEmpty(SerializationContext provider, HibernateProxy value) { return (value == null) || (findProxied(value) == null); } @Override - public void serialize(HibernateProxy value, JsonGenerator g, SerializerProvider provider) - throws IOException + public void serialize(HibernateProxy value, JsonGenerator g, SerializationContext provider) { Object proxiedValue = findProxied(value); // TODO: figure out how to suppress nulls, if necessary? (too late for that here) if (proxiedValue == null) { - provider.defaultSerializeNull(g); + provider.defaultSerializeNullValue(g); return; } findSerializer(provider, proxiedValue).serialize(proxiedValue, g, provider); } @Override - public void serializeWithType(HibernateProxy value, JsonGenerator g, SerializerProvider provider, + public void serializeWithType(HibernateProxy value, JsonGenerator g, SerializationContext provider, TypeSerializer typeSer) - throws IOException { Object proxiedValue = findProxied(value); if (proxiedValue == null) { - provider.defaultSerializeNull(g); + provider.defaultSerializeNullValue(g); return; } /* This isn't exactly right, since type serializer really refers to proxy @@ -163,9 +159,9 @@ public void serializeWithType(HibernateProxy value, JsonGenerator g, SerializerP @Override public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint) - throws JsonMappingException + throws DatabindException { - SerializerProvider prov = visitor.getProvider(); + SerializationContext prov = visitor.getContext(); if ((prov == null) || (_property == null)) { super.acceptJsonFormatVisitor(visitor, typeHint); } else { @@ -181,8 +177,7 @@ public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType t /********************************************************************** */ - protected JsonSerializer findSerializer(SerializerProvider provider, Object value) - throws IOException + protected ValueSerializer findSerializer(SerializationContext provider, Object value) { /* TODO: if Hibernate did use generics, or we wanted to allow use of Jackson * annotations to indicate type, should take that into account. @@ -196,7 +191,11 @@ protected JsonSerializer findSerializer(SerializerProvider provider, Obj * really anyone's guess at this point; proxies can exist at any level? */ PropertySerializerMap.SerializerAndMapResult result = - _dynamicSerializers.findAndAddPrimarySerializer(type, provider, _property); + _dynamicSerializers.findAndAddPrimarySerializer( + //TODO find better way to get JavaType + TypeFactory.createDefaultInstance().unsafeSimpleType(type), + provider, + _property); if (_dynamicSerializers != result.map) { _dynamicSerializers = result.map; } diff --git a/hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6SerializerModifier.java b/hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6SerializerModifier.java new file mode 100644 index 00000000..759b91c4 --- /dev/null +++ b/hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6SerializerModifier.java @@ -0,0 +1,42 @@ +package tools.jackson.datatype.hibernate6; + +import tools.jackson.databind.BeanDescription; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.SerializationConfig; +import tools.jackson.databind.ser.ValueSerializerModifier; +import tools.jackson.databind.type.CollectionType; +import tools.jackson.databind.type.MapType; +import org.hibernate.SessionFactory; + +public class Hibernate6SerializerModifier + extends ValueSerializerModifier +{ + protected final int _features; + + protected final SessionFactory _sessionFactory; + + public Hibernate6SerializerModifier(int features, SessionFactory sessionFactory) { + _features = features; + _sessionFactory = sessionFactory; + } + + /* + @Override + public ValueSerializer modifySerializer(SerializationConfig config, + BeanDescription.Supplier beanDesc, ValueSerializer serializer) { + return serializer; + } + */ + + @Override + public ValueSerializer modifyCollectionSerializer(SerializationConfig config, + CollectionType valueType, BeanDescription.Supplier beanDesc, ValueSerializer serializer) { + return new PersistentCollectionSerializer(valueType, serializer, _features, _sessionFactory); + } + + @Override + public ValueSerializer modifyMapSerializer(SerializationConfig config, + MapType valueType, BeanDescription.Supplier beanDesc, ValueSerializer serializer) { + return new PersistentCollectionSerializer(valueType, serializer, _features, _sessionFactory); + } +} diff --git a/hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/Hibernate6Serializers.java b/hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6Serializers.java similarity index 72% rename from hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/Hibernate6Serializers.java rename to hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6Serializers.java index 750179f1..17e63243 100644 --- a/hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/Hibernate6Serializers.java +++ b/hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6Serializers.java @@ -1,10 +1,11 @@ -package com.fasterxml.jackson.datatype.hibernate6; +package tools.jackson.datatype.hibernate6; -import com.fasterxml.jackson.databind.BeanDescription; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializationConfig; -import com.fasterxml.jackson.databind.ser.Serializers; +import com.fasterxml.jackson.annotation.JsonFormat; +import tools.jackson.databind.BeanDescription; +import tools.jackson.databind.JavaType; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.SerializationConfig; +import tools.jackson.databind.ser.Serializers; import org.hibernate.engine.spi.Mapping; import org.hibernate.proxy.HibernateProxy; @@ -30,8 +31,8 @@ public Hibernate6Serializers(Mapping mapping, int features) } @Override - public JsonSerializer findSerializer(SerializationConfig config, - JavaType type, BeanDescription beanDesc) + public ValueSerializer findSerializer(SerializationConfig config, + JavaType type, BeanDescription.Supplier beanDesc, JsonFormat.Value formatOverrides) { Class raw = type.getRawClass(); if (HibernateProxy.class.isAssignableFrom(raw)) { diff --git a/hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/Hibernate6Version.java b/hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6Version.java similarity index 95% rename from hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/Hibernate6Version.java rename to hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6Version.java index 62150877..fa5f929e 100644 --- a/hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/Hibernate6Version.java +++ b/hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6Version.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate6; +package tools.jackson.datatype.hibernate6; public class Hibernate6Version { diff --git a/hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/PackageVersion.java.in b/hibernate6/src/main/java/tools/jackson/datatype/hibernate6/PackageVersion.java.in similarity index 75% rename from hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/PackageVersion.java.in rename to hibernate6/src/main/java/tools/jackson/datatype/hibernate6/PackageVersion.java.in index 7860aa14..69b6bdd0 100644 --- a/hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/PackageVersion.java.in +++ b/hibernate6/src/main/java/tools/jackson/datatype/hibernate6/PackageVersion.java.in @@ -1,8 +1,8 @@ package @package@; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.core.Versioned; -import com.fasterxml.jackson.core.util.VersionUtil; +import tools.jackson.core.Version; +import tools.jackson.core.Versioned; +import tools.jackson.core.util.VersionUtil; /** * Automatically generated from PackageVersion.java.in during diff --git a/hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/PersistentCollectionSerializer.java b/hibernate6/src/main/java/tools/jackson/datatype/hibernate6/PersistentCollectionSerializer.java similarity index 83% rename from hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/PersistentCollectionSerializer.java rename to hibernate6/src/main/java/tools/jackson/datatype/hibernate6/PersistentCollectionSerializer.java index 5c142b9d..8c2dccc1 100644 --- a/hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/PersistentCollectionSerializer.java +++ b/hibernate6/src/main/java/tools/jackson/datatype/hibernate6/PersistentCollectionSerializer.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate6; +package tools.jackson.datatype.hibernate6; import java.io.IOException; import java.util.*; @@ -14,14 +14,12 @@ import org.hibernate.mapping.Bag; import org.hibernate.resource.transaction.backend.jta.internal.JtaTransactionCoordinatorImpl; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.*; -import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; -import com.fasterxml.jackson.databind.jsontype.TypeSerializer; -import com.fasterxml.jackson.databind.ser.ContainerSerializer; -import com.fasterxml.jackson.databind.ser.ContextualSerializer; -import com.fasterxml.jackson.databind.ser.ResolvableSerializer; -import com.fasterxml.jackson.databind.util.NameTransformer; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.*; +import tools.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; +import tools.jackson.databind.jsontype.TypeSerializer; +import tools.jackson.databind.ser.std.StdContainerSerializer; +import tools.jackson.databind.util.NameTransformer; import jakarta.persistence.ElementCollection; import jakarta.persistence.EntityManager; @@ -37,8 +35,7 @@ * and Map types (unlike in JDK). */ public class PersistentCollectionSerializer - extends ContainerSerializer - implements ContextualSerializer, ResolvableSerializer + extends StdContainerSerializer { private static final long serialVersionUID = 1L; @@ -56,7 +53,7 @@ public class PersistentCollectionSerializer * Serializer that does actual value serialization when value * is available (either already or with forced access). */ - protected final JsonSerializer _serializer; + protected final ValueSerializer _serializer; protected final SessionFactory _sessionFactory; @@ -68,20 +65,20 @@ public class PersistentCollectionSerializer @SuppressWarnings("unchecked") public PersistentCollectionSerializer(JavaType containerType, - JsonSerializer serializer, int features, SessionFactory sessionFactory) { - super(containerType); + ValueSerializer serializer, int features, SessionFactory sessionFactory) { + super(containerType, null); _originalType = containerType; - _serializer = (JsonSerializer) serializer; + _serializer = (ValueSerializer) serializer; _features = features; _sessionFactory = sessionFactory; } @SuppressWarnings("unchecked") - protected PersistentCollectionSerializer(PersistentCollectionSerializer base, JsonSerializer serializer) + protected PersistentCollectionSerializer(PersistentCollectionSerializer base, ValueSerializer serializer) { super(base); _originalType = base._originalType; - _serializer = (JsonSerializer) serializer; + _serializer = (ValueSerializer) serializer; _features = base._features; _sessionFactory = base._sessionFactory; } @@ -91,7 +88,7 @@ public PersistentCollectionSerializer unwrappingSerializer(NameTransformer unwra return _withSerializer(_serializer.unwrappingSerializer(unwrapper)); } - protected PersistentCollectionSerializer _withSerializer(JsonSerializer ser) { + protected PersistentCollectionSerializer _withSerializer(ValueSerializer ser) { if ((ser == _serializer) || (ser == null)) { return this; } @@ -100,9 +97,9 @@ protected PersistentCollectionSerializer _withSerializer(JsonSerializer ser) // from `ContainerSerializer` @Override - protected ContainerSerializer _withValueTypeSerializer(TypeSerializer vts) + protected StdContainerSerializer _withValueTypeSerializer(TypeSerializer vts) { - ContainerSerializer ser0 = _containerSerializer(); + StdContainerSerializer ser0 = _containerSerializer(); if (ser0 != null) { return _withSerializer(ser0.withValueTypeSerializer(vts)); } @@ -119,11 +116,9 @@ protected ContainerSerializer _withValueTypeSerializer(TypeSerializer vts) */ @Override - public void resolve(SerializerProvider provider) throws JsonMappingException + public void resolve(SerializationContext provider) throws DatabindException { - if (_serializer instanceof ResolvableSerializer) { - ((ResolvableSerializer) _serializer).resolve(provider); - } + _serializer.resolve(provider); } /** @@ -131,13 +126,13 @@ public void resolve(SerializerProvider provider) throws JsonMappingException * must know type of property being serialized. */ @Override - public JsonSerializer createContextual(SerializerProvider provider, + public ValueSerializer createContextual(SerializationContext provider, BeanProperty property) - throws JsonMappingException + throws DatabindException { // 18-Oct-2013, tatu: Whether this is for the primary property or secondary is // not quite certain; presume primary one for now. - JsonSerializer ser = provider.handlePrimaryContextualization(_serializer, property); + ValueSerializer ser = provider.handlePrimaryContextualization(_serializer, property); // If we use eager loading, can just return underlying serializer as is if (!usesLazyLoading(property)) { @@ -148,12 +143,12 @@ public JsonSerializer createContextual(SerializerProvider provider, /* /********************************************************************** - /* JsonSerializer simple accessors, metadata + /* ValueSerializer simple accessors, metadata /********************************************************************** */ @Override - public boolean isEmpty(SerializerProvider provider, Object value) + public boolean isEmpty(SerializationContext provider, Object value) { if (value == null) { // is null ever passed? return true; @@ -177,7 +172,7 @@ public boolean usesObjectId() { @Override public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint) - throws JsonMappingException + throws DatabindException { _serializer.acceptJsonFormatVisitor(visitor, typeHint); } @@ -190,7 +185,7 @@ public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType t @Override public JavaType getContentType() { - ContainerSerializer ser = _containerSerializer(); + StdContainerSerializer ser = _containerSerializer(); if (ser != null) { return ser.getContentType(); } @@ -198,8 +193,8 @@ public JavaType getContentType() { } @Override - public JsonSerializer getContentSerializer() { - ContainerSerializer ser = _containerSerializer(); + public ValueSerializer getContentSerializer() { + StdContainerSerializer ser = _containerSerializer(); if (ser != null) { return ser.getContentSerializer(); } @@ -220,23 +215,22 @@ public boolean hasSingleElement(Object value) { /* /********************************************************************** - /* JsonSerializer, actual serialization + /* ValueSerializer, actual serialization /********************************************************************** */ @Override - public void serialize(Object value, JsonGenerator g, SerializerProvider provider) - throws IOException + public void serialize(Object value, JsonGenerator g, SerializationContext provider) { if (value instanceof PersistentCollection) { value = findLazyValue((PersistentCollection) value); if (value == null) { - provider.defaultSerializeNull(g); + provider.defaultSerializeNullValue(g); return; } } if (_serializer == null) { // sanity check... - throw JsonMappingException.from(g, "PersistentCollection does not have serializer set"); + throw DatabindException.from(g, "PersistentCollection does not have serializer set"); } // 30-Jul-2016, tatu: wrt [datatype-hibernate#93], should NOT have to do anything here; @@ -245,19 +239,18 @@ public void serialize(Object value, JsonGenerator g, SerializerProvider provider } @Override - public void serializeWithType(Object value, JsonGenerator g, SerializerProvider provider, + public void serializeWithType(Object value, JsonGenerator g, SerializationContext provider, TypeSerializer typeSer) - throws IOException { if (value instanceof PersistentCollection) { value = findLazyValue((PersistentCollection) value); if (value == null) { - provider.defaultSerializeNull(g); + provider.defaultSerializeNullValue(g); return; } } if (_serializer == null) { // sanity check... - throw JsonMappingException.from(g, "PersistentCollection does not have serializer set"); + throw DatabindException.from(g, "PersistentCollection does not have serializer set"); } // 30-Jul-2016, tatu: wrt [datatype-hibernate#93], conversion IS needed here (or, @@ -276,9 +269,9 @@ public void serializeWithType(Object value, JsonGenerator g, SerializerProvider /********************************************************************** */ - protected ContainerSerializer _containerSerializer() { - if (_serializer instanceof ContainerSerializer) { - return (ContainerSerializer) _serializer; + protected StdContainerSerializer _containerSerializer() { + if (_serializer instanceof StdContainerSerializer stdContainerSerializer) { + return stdContainerSerializer; } return null; } diff --git a/hibernate6/src/main/resources/META-INF/services/com.fasterxml.jackson.databind.Module b/hibernate6/src/main/resources/META-INF/services/com.fasterxml.jackson.databind.Module index f5c702c7..61621b5e 100644 --- a/hibernate6/src/main/resources/META-INF/services/com.fasterxml.jackson.databind.Module +++ b/hibernate6/src/main/resources/META-INF/services/com.fasterxml.jackson.databind.Module @@ -1 +1 @@ -com.fasterxml.jackson.datatype.hibernate6.Hibernate6Module +tools.jackson.datatype.hibernate6.Hibernate6Module diff --git a/hibernate6/src/moditect/module-info.java b/hibernate6/src/moditect/module-info.java index 7d6cc685..168110d9 100644 --- a/hibernate6/src/moditect/module-info.java +++ b/hibernate6/src/moditect/module-info.java @@ -1,15 +1,15 @@ -module com.fasterxml.jackson.datatype.hibernate6 { - requires transitive com.fasterxml.jackson.core; - requires transitive com.fasterxml.jackson.databind; +module tools.jackson.datatype.hibernate6 { + requires transitive tools.jackson.core; + requires transitive tools.jackson.databind; requires transitive org.hibernate.orm.core; requires static com.fasterxml.jackson.annotation; requires static jakarta.activation; requires static jakarta.persistence; - exports com.fasterxml.jackson.datatype.hibernate6; - opens com.fasterxml.jackson.datatype.hibernate6; + exports tools.jackson.datatype.hibernate6; + opens tools.jackson.datatype.hibernate6; - provides com.fasterxml.jackson.databind.Module with - com.fasterxml.jackson.datatype.hibernate6.Hibernate6Module; + provides tools.jackson.databind.JacksonModule with + tools.jackson.datatype.hibernate6.Hibernate6Module; } diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/BaseTest.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/BaseTest.java similarity index 83% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/BaseTest.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/BaseTest.java index 41184422..832a537d 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/BaseTest.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/BaseTest.java @@ -1,9 +1,9 @@ -package com.fasterxml.jackson.datatype.hibernate6; +package tools.jackson.datatype.hibernate6; import java.util.Arrays; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.json.JsonMapper; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; import org.apache.log4j.Logger; import static org.junit.jupiter.api.Assertions.fail; @@ -20,9 +20,14 @@ protected BaseTest() { } } + protected JsonMapper.Builder mapperBuilderWithModule(boolean forceLazyLoading) + { + return JsonMapper.builder().addModule(hibernateModule(forceLazyLoading, false)); + } + protected ObjectMapper mapperWithModule(boolean forceLazyLoading) { - return JsonMapper.builder().addModule(hibernateModule(forceLazyLoading, false)).build(); + return mapperBuilderWithModule(forceLazyLoading).build(); } protected ObjectMapper mapperWithModule(boolean forceLazyLoading, boolean nullMissingEntities) @@ -32,7 +37,7 @@ protected ObjectMapper mapperWithModule(boolean forceLazyLoading, boolean nullMi protected Hibernate6Module hibernateModule(boolean forceLazyLoading) { - return hibernateModule(forceLazyLoading, false); + return hibernateModule(forceLazyLoading, false); } protected Hibernate6Module hibernateModule(boolean forceLazyLoading, boolean nullMissingEntities) diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/ForceLazyLoadingTest.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/ForceLazyLoadingTest.java similarity index 87% rename from hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/ForceLazyLoadingTest.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/ForceLazyLoadingTest.java index 60be156d..80c3e2da 100644 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/ForceLazyLoadingTest.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/ForceLazyLoadingTest.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate7; +package tools.jackson.datatype.hibernate6; import java.util.Map; import java.util.Set; @@ -11,10 +11,10 @@ import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.datatype.hibernate7.data.Customer; -import com.fasterxml.jackson.datatype.hibernate7.data.Payment; +import tools.jackson.datatype.hibernate6.data.Customer; +import tools.jackson.datatype.hibernate6.data.Payment; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.*; diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/HibernateTest.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/HibernateTest.java similarity index 92% rename from hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/HibernateTest.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/HibernateTest.java index e5f85871..a2ac6eaa 100644 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/HibernateTest.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/HibernateTest.java @@ -1,9 +1,9 @@ -package com.fasterxml.jackson.datatype.hibernate7; +package tools.jackson.datatype.hibernate6; -import com.fasterxml.jackson.datatype.hibernate7.data.Customer; -import com.fasterxml.jackson.datatype.hibernate7.data.Employee; +import tools.jackson.datatype.hibernate6.data.Customer; +import tools.jackson.datatype.hibernate6.data.Employee; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; diff --git a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/InclusionTest.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/InclusionTest.java similarity index 61% rename from hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/InclusionTest.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/InclusionTest.java index 77cf2d57..dd60f1a4 100644 --- a/hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5/InclusionTest.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/InclusionTest.java @@ -1,11 +1,12 @@ -package com.fasterxml.jackson.datatype.hibernate5; +package tools.jackson.datatype.hibernate6; import java.util.*; import org.junit.jupiter.api.Test; import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -21,8 +22,9 @@ static class Mock @Test public void testInclusion() throws Exception { - final ObjectMapper mapper = mapperWithModule(false); - mapper.setSerializationInclusion(Include.NON_EMPTY); + final JsonMapper.Builder builder = mapperBuilderWithModule(false); + builder.changeDefaultPropertyInclusion(inc -> inc.withValueInclusion(Include.NON_EMPTY)); + ObjectMapper mapper = builder.build(); String json = mapper.writeValueAsString(new Mock()); assertEquals("{\"id\":13}", json); } diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/LazyLoadingTest.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/LazyLoadingTest.java similarity index 81% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/LazyLoadingTest.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/LazyLoadingTest.java index 1147afe4..0a275daf 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/LazyLoadingTest.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/LazyLoadingTest.java @@ -1,17 +1,18 @@ -package com.fasterxml.jackson.datatype.hibernate6; +package tools.jackson.datatype.hibernate6; import java.util.Map; import java.util.Set; -import com.fasterxml.jackson.datatype.hibernate6.data.Customer; -import com.fasterxml.jackson.datatype.hibernate6.data.Payment; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.datatype.hibernate6.data.Customer; +import tools.jackson.datatype.hibernate6.data.Payment; import org.hibernate.Hibernate; import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.hibernate6.Hibernate6Module.Feature; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.datatype.hibernate6.Hibernate6Module.Feature; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; @@ -64,10 +65,13 @@ public void testGetCustomerJson() throws Exception } @Test - public void testSerializeIdentifierFeature() throws JsonProcessingException { + public void testSerializeIdentifierFeature() throws JacksonException { Hibernate6Module module = new Hibernate6Module(); module.enable(Feature.SERIALIZE_IDENTIFIER_FOR_LAZY_NOT_LOADED_OBJECTS); - ObjectMapper objectMapper = new ObjectMapper().registerModule(module); + ObjectMapper objectMapper = + JsonMapper.builder() + .addModule(module) + .build(); EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit"); try { diff --git a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/MissingEntitiesAsNullTest.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/MissingEntitiesAsNullTest.java similarity index 88% rename from hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/MissingEntitiesAsNullTest.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/MissingEntitiesAsNullTest.java index c5c61ef6..f9b4ac26 100644 --- a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/MissingEntitiesAsNullTest.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/MissingEntitiesAsNullTest.java @@ -1,17 +1,18 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta; +package tools.jackson.datatype.hibernate6; import java.util.Map; +import tools.jackson.datatype.hibernate6.data.Customer; import org.hibernate.Hibernate; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.hibernate5.jakarta.data.Customer; +import org.junit.jupiter.api.Test; + +import tools.jackson.databind.DatabindException; +import tools.jackson.databind.ObjectMapper; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.Persistence; -import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; @@ -70,7 +71,7 @@ public void testProductWithValidForeignKey() throws Exception { } // caused by jakarta.persistence.EntityNotFoundException: Unable to find - // com.fasterxml.jackson.datatype.hibernate5.jakarta.data.Product with id X10_1678 + // tools.jackson.datatype.hibernate6.data.Product with id X10_1678 @Test public void testExceptionWithInvalidForeignKey() throws Exception { EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit"); @@ -89,8 +90,8 @@ public void testExceptionWithInvalidForeignKey() throws Exception { // JUnit 3.8 fail("Expected EntityNotFoundException exception"); - } catch (JsonMappingException e) { - assertEquals("Unable to find com.fasterxml.jackson.datatype.hibernate5.jakarta.data.Product with id X10_1678", e.getCause().getMessage()); + } catch (DatabindException e) { + assertEquals("Unable to find tools.jackson.datatype.hibernate6.data.Product with id X10_1678", e.getCause().getMessage()); } finally { emf.close(); } diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/OneToManyTest.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/OneToManyTest.java similarity index 84% rename from hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/OneToManyTest.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/OneToManyTest.java index e660d3ee..a00cf5a1 100644 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/OneToManyTest.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/OneToManyTest.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate7; +package tools.jackson.datatype.hibernate6; import java.util.LinkedHashMap; import java.util.Map; @@ -7,7 +7,8 @@ import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -43,7 +44,7 @@ public void testMapWithOneToMany() throws Exception { } private String mapWithHibernateModule(Object object) throws Exception { - return new ObjectMapper().registerModule(new Hibernate7Module()).writeValueAsString(object); + return JsonMapper.builder().addModule(new Hibernate6Module()).build().writeValueAsString(object); } private String mapWithoutHibernateModule(Object object) throws Exception { diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/Polymorphic81Test.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/Polymorphic81Test.java similarity index 96% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/Polymorphic81Test.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/Polymorphic81Test.java index 71c3d0f5..90287050 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/Polymorphic81Test.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/Polymorphic81Test.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate6; +package tools.jackson.datatype.hibernate6; import java.util.ArrayList; import java.util.List; @@ -8,7 +8,7 @@ import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/ReplacePersistentCollectionTest.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/ReplacePersistentCollectionTest.java similarity index 83% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/ReplacePersistentCollectionTest.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/ReplacePersistentCollectionTest.java index 6ec6eccc..7eb2c9f9 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/ReplacePersistentCollectionTest.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/ReplacePersistentCollectionTest.java @@ -1,19 +1,20 @@ -package com.fasterxml.jackson.datatype.hibernate6; +package tools.jackson.datatype.hibernate6; import java.util.Set; -import com.fasterxml.jackson.datatype.hibernate6.data.Customer; -import com.fasterxml.jackson.datatype.hibernate6.data.Payment; +import tools.jackson.datatype.hibernate6.data.Customer; +import tools.jackson.datatype.hibernate6.data.Payment; import org.hibernate.Hibernate; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping; -import com.fasterxml.jackson.databind.json.JsonMapper; +import tools.jackson.databind.DefaultTyping; +import tools.jackson.databind.DatabindException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.databind.jsontype.DefaultBaseTypeLimitingValidator; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; @@ -57,7 +58,7 @@ public void testNoReplacePersistentCollection() throws Exception { try { /*Customer result =*/ mapper.readValue(json, Customer.class); fail("Should throw exception"); - } catch (JsonMappingException e) { + } catch (DatabindException e) { verifyException(e, "failed to lazily initialize"); } } @@ -91,7 +92,7 @@ public void testReplacePersistentCollection() throws Exception { private ObjectMapper hibernateMapper(Hibernate6Module module) { return JsonMapper.builder() .addModule(module) - .build() - .enableDefaultTyping(DefaultTyping.NON_FINAL); + .activateDefaultTyping(new DefaultBaseTypeLimitingValidator(), DefaultTyping.NON_FINAL) + .build(); } } diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/TestMaps.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/TestMaps.java similarity index 83% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/TestMaps.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/TestMaps.java index fcd950aa..d3c9e156 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/TestMaps.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/TestMaps.java @@ -1,11 +1,11 @@ -package com.fasterxml.jackson.datatype.hibernate6; +package tools.jackson.datatype.hibernate6; import java.util.HashMap; import java.util.Map; import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/TestVersions.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/TestVersions.java similarity index 80% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/TestVersions.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/TestVersions.java index bbbb0b82..eccc64d3 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/TestVersions.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/TestVersions.java @@ -1,9 +1,9 @@ -package com.fasterxml.jackson.datatype.hibernate6; +package tools.jackson.datatype.hibernate6; import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.core.Versioned; +import tools.jackson.core.Version; +import tools.jackson.core.Versioned; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/TransientTest.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/TransientTest.java similarity index 85% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/TransientTest.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/TransientTest.java index e833c33d..91251372 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/TransientTest.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/TransientTest.java @@ -1,10 +1,11 @@ -package com.fasterxml.jackson.datatype.hibernate6; +package tools.jackson.datatype.hibernate6; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import jakarta.persistence.Transient; import org.junit.jupiter.api.Test; +import tools.jackson.databind.json.JsonMapper; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -37,7 +38,7 @@ public void testSimpleTransient() throws Exception // and then with Transient disabled Hibernate6Module mod = hibernateModule(false); mod.disable(Hibernate6Module.Feature.USE_TRANSIENT_ANNOTATION); - mapper = new ObjectMapper().registerModule(mod); + mapper = JsonMapper.builder().addModule(mod).build(); assertEquals(aposToQuotes("{'a':1,'b':2}"), mapper.writeValueAsString(new WithTransient())); } diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/UnwrappedTest.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/UnwrappedTest.java similarity index 80% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/UnwrappedTest.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/UnwrappedTest.java index 79797a87..38497110 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/UnwrappedTest.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/UnwrappedTest.java @@ -1,14 +1,14 @@ -package com.fasterxml.jackson.datatype.hibernate6; +package tools.jackson.datatype.hibernate6; -import com.fasterxml.jackson.datatype.hibernate6.data.Customer; -import com.fasterxml.jackson.datatype.hibernate6.data.Product; +import tools.jackson.datatype.hibernate6.data.Customer; +import tools.jackson.datatype.hibernate6.data.Product; import org.hibernate.Hibernate; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonUnwrapped; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.core.JacksonException; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.ObjectMapper; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; @@ -40,7 +40,7 @@ public T getContent() } @Test - public void testSimpleUnwrapped() throws JsonProcessingException + public void testSimpleUnwrapped() throws JacksonException { EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit"); try { diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/Customer.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/Customer.java similarity index 99% rename from hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/Customer.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/Customer.java index 924196f8..607668d8 100644 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/Customer.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/Customer.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate7.data; +package tools.jackson.datatype.hibernate6.data; import static jakarta.persistence.GenerationType.IDENTITY; diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/Employee.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/Employee.java similarity index 98% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/Employee.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/Employee.java index 12332dcc..b8b10fe0 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/Employee.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/Employee.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate6.data; +package tools.jackson.datatype.hibernate6.data; import static jakarta.persistence.GenerationType.IDENTITY; diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/Office.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/Office.java similarity index 98% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/Office.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/Office.java index acae8ad4..97b38994 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/Office.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/Office.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate6.data; +package tools.jackson.datatype.hibernate6.data; import java.util.HashSet; import java.util.Set; diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/Order.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/Order.java similarity index 98% rename from hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/Order.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/Order.java index b97299e9..54dde7bb 100644 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/Order.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/Order.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate7.data; +package tools.jackson.datatype.hibernate6.data; import static jakarta.persistence.GenerationType.IDENTITY; diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/OrderDetail.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/OrderDetail.java similarity index 98% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/OrderDetail.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/OrderDetail.java index b144e812..e1b03157 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/OrderDetail.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/OrderDetail.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate6.data; +package tools.jackson.datatype.hibernate6.data; import com.fasterxml.jackson.annotation.JsonBackReference; diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/OrderDetailId.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/OrderDetailId.java similarity index 97% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/OrderDetailId.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/OrderDetailId.java index 9664c979..a453769f 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/OrderDetailId.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/OrderDetailId.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate6.data; +package tools.jackson.datatype.hibernate6.data; import jakarta.persistence.Column; import jakarta.persistence.Embeddable; diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/Payment.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/Payment.java similarity index 97% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/Payment.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/Payment.java index c044a9ba..ee165b35 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/Payment.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/Payment.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate6.data; +package tools.jackson.datatype.hibernate6.data; import java.util.Date; diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/PaymentId.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/PaymentId.java similarity index 97% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/PaymentId.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/PaymentId.java index 0bf02c31..5d147311 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/data/PaymentId.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/PaymentId.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate6.data; +package tools.jackson.datatype.hibernate6.data; import jakarta.persistence.Column; import jakarta.persistence.Embeddable; diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/Product.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/Product.java similarity index 98% rename from hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/Product.java rename to hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/Product.java index d56e1a53..fa8492d1 100644 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/data/Product.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/data/Product.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate7.data; +package tools.jackson.datatype.hibernate6.data; import java.util.HashSet; diff --git a/hibernate6/src/test/resources/META-INF/persistence.xml b/hibernate6/src/test/resources/META-INF/persistence.xml index 94b66dbc..5c21540e 100644 --- a/hibernate6/src/test/resources/META-INF/persistence.xml +++ b/hibernate6/src/test/resources/META-INF/persistence.xml @@ -6,15 +6,15 @@ org.hibernate.jpa.HibernatePersistenceProvider - data.com.fasterxml.jackson.datatype.hibernate6.Customer - data.com.fasterxml.jackson.datatype.hibernate6.Employee - data.com.fasterxml.jackson.datatype.hibernate6.Office - data.com.fasterxml.jackson.datatype.hibernate6.Order - data.com.fasterxml.jackson.datatype.hibernate6.OrderDetail - data.com.fasterxml.jackson.datatype.hibernate6.OrderDetailId - data.com.fasterxml.jackson.datatype.hibernate6.Payment - data.com.fasterxml.jackson.datatype.hibernate6.PaymentId - data.com.fasterxml.jackson.datatype.hibernate6.Product + data.tools.jackson.datatype.hibernate6.Customer + data.tools.jackson.datatype.hibernate6.Employee + data.tools.jackson.datatype.hibernate6.Office + data.tools.jackson.datatype.hibernate6.Order + data.tools.jackson.datatype.hibernate6.OrderDetail + data.tools.jackson.datatype.hibernate6.OrderDetailId + data.tools.jackson.datatype.hibernate6.Payment + data.tools.jackson.datatype.hibernate6.PaymentId + data.tools.jackson.datatype.hibernate6.Product diff --git a/hibernate7/pom.xml b/hibernate7/pom.xml index 696fe3a4..f600d076 100644 --- a/hibernate7/pom.xml +++ b/hibernate7/pom.xml @@ -6,9 +6,9 @@ 4.0.0 - com.fasterxml.jackson.datatype + tools.jackson.datatype jackson-datatype-hibernate-parent - 2.21.0-SNAPSHOT + 3.0.0-SNAPSHOT jackson-datatype-hibernate7 Jackson-datatype-hibernate7 @@ -19,7 +19,7 @@ Hibernate (https://hibernate.org/) version 7.x with Jakarta data types. https://github.com/FasterXML/jackson-datatype-hibernate - com/fasterxml/jackson/datatype/hibernate7 + tools/jackson/datatype/hibernate7 ${project.groupId}.hibernate7 7.0.3.Final diff --git a/hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/Hibernate7SerializerModifier.java b/hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/Hibernate7SerializerModifier.java deleted file mode 100644 index 1c1b12f4..00000000 --- a/hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/Hibernate7SerializerModifier.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.fasterxml.jackson.datatype.hibernate7; - -import com.fasterxml.jackson.databind.BeanDescription; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializationConfig; -import com.fasterxml.jackson.databind.ser.BeanSerializerModifier; -import com.fasterxml.jackson.databind.type.CollectionType; -import com.fasterxml.jackson.databind.type.MapType; -import org.hibernate.SessionFactory; - -public class Hibernate7SerializerModifier - extends BeanSerializerModifier -{ - protected final int _features; - - protected final SessionFactory _sessionFactory; - - public Hibernate7SerializerModifier(int features, SessionFactory sessionFactory) { - _features = features; - _sessionFactory = sessionFactory; - } - - @Override - public JsonSerializer modifyCollectionSerializer(SerializationConfig config, - CollectionType valueType, BeanDescription beanDesc, JsonSerializer serializer) { - return new PersistentCollectionSerializer(valueType, serializer, _features, _sessionFactory); - } - - @Override - public JsonSerializer modifyMapSerializer(SerializationConfig config, - MapType valueType, BeanDescription beanDesc, JsonSerializer serializer) { - return new PersistentCollectionSerializer(valueType, serializer, _features, _sessionFactory); - } -} diff --git a/hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/PackageVersion.java.in b/hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/PackageVersion.java.in deleted file mode 100644 index 7860aa14..00000000 --- a/hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/PackageVersion.java.in +++ /dev/null @@ -1,20 +0,0 @@ -package @package@; - -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.core.Versioned; -import com.fasterxml.jackson.core.util.VersionUtil; - -/** - * Automatically generated from PackageVersion.java.in during - * packageVersion-generate execution of maven-replacer-plugin in - * pom.xml. - */ -public final class PackageVersion implements Versioned { - public final static Version VERSION = VersionUtil.parseVersion( - "@projectversion@", "@projectgroupid@", "@projectartifactid@"); - - @Override - public Version version() { - return VERSION; - } -} diff --git a/hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/Hibernate7AnnotationIntrospector.java b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7AnnotationIntrospector.java similarity index 87% rename from hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/Hibernate7AnnotationIntrospector.java rename to hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7AnnotationIntrospector.java index c5a8e766..23f4db9f 100644 --- a/hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/Hibernate7AnnotationIntrospector.java +++ b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7AnnotationIntrospector.java @@ -1,9 +1,10 @@ -package com.fasterxml.jackson.datatype.hibernate7; +package tools.jackson.datatype.hibernate7; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.databind.AnnotationIntrospector; -import com.fasterxml.jackson.databind.introspect.AnnotatedClass; -import com.fasterxml.jackson.databind.introspect.AnnotatedMember; +import tools.jackson.core.Version; +import tools.jackson.databind.AnnotationIntrospector; +import tools.jackson.databind.cfg.MapperConfig; +import tools.jackson.databind.introspect.AnnotatedClass; +import tools.jackson.databind.introspect.AnnotatedMember; import jakarta.persistence.Transient; /** @@ -64,12 +65,12 @@ public Version version() { */ @Override - public boolean hasIgnoreMarker(AnnotatedMember m) { + public boolean hasIgnoreMarker(MapperConfig config, AnnotatedMember m) { return _cfgCheckTransient && m.hasAnnotation(Transient.class); } @Override - public Boolean isIgnorableType(AnnotatedClass ac) + public Boolean isIgnorableType(MapperConfig config, AnnotatedClass ac) { /* 26-Dec-2015, tatu: To fix [datatype-hibernate#72], need to suppress handling * of `FieldHandled`. Not sure if it works without test (alas, none provided), diff --git a/hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/Hibernate7Module.java b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7Module.java similarity index 95% rename from hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/Hibernate7Module.java rename to hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7Module.java index 0e33840d..c6dc9eb3 100644 --- a/hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/Hibernate7Module.java +++ b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7Module.java @@ -1,12 +1,12 @@ -package com.fasterxml.jackson.datatype.hibernate7; +package tools.jackson.datatype.hibernate7; import org.hibernate.SessionFactory; import org.hibernate.type.MappingContext; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.databind.AnnotationIntrospector; +import tools.jackson.core.Version; +import tools.jackson.databind.AnnotationIntrospector; -public class Hibernate7Module extends com.fasterxml.jackson.databind.Module +public class Hibernate7Module extends tools.jackson.databind.JacksonModule { /** * Enumeration that defines all toggleable features this module @@ -180,7 +180,7 @@ public void setupModule(SetupContext context) context.appendAnnotationIntrospector(ai); } context.addSerializers(new Hibernate7Serializers(_mapping, _moduleFeatures)); - context.addBeanSerializerModifier(new Hibernate7SerializerModifier(_moduleFeatures, _sessionFactory)); + context.addSerializerModifier(new Hibernate7SerializerModifier(_moduleFeatures, _sessionFactory)); } /** diff --git a/hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/Hibernate7ProxySerializer.java b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7ProxySerializer.java similarity index 86% rename from hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/Hibernate7ProxySerializer.java rename to hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7ProxySerializer.java index 17ff8c90..5250616a 100644 --- a/hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/Hibernate7ProxySerializer.java +++ b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7ProxySerializer.java @@ -1,7 +1,6 @@ -package com.fasterxml.jackson.datatype.hibernate7; +package tools.jackson.datatype.hibernate7; import java.beans.Introspector; -import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.HashMap; @@ -11,17 +10,17 @@ import org.hibernate.proxy.pojo.BasicLazyInitializer; import org.hibernate.type.MappingContext; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.BeanProperty; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; -import com.fasterxml.jackson.databind.jsontype.TypeSerializer; -import com.fasterxml.jackson.databind.ser.ContextualSerializer; -import com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap; -import com.fasterxml.jackson.databind.util.NameTransformer; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.BeanProperty; +import tools.jackson.databind.JavaType; +import tools.jackson.databind.DatabindException; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; +import tools.jackson.databind.jsontype.TypeSerializer; +import tools.jackson.databind.ser.impl.PropertySerializerMap; +import tools.jackson.databind.type.TypeFactory; +import tools.jackson.databind.util.NameTransformer; import jakarta.persistence.EntityNotFoundException; @@ -35,8 +34,7 @@ * this one) have. */ public class Hibernate7ProxySerializer - extends JsonSerializer - implements ContextualSerializer + extends ValueSerializer { /** * Property that has proxy value to handle @@ -102,12 +100,12 @@ protected Hibernate7ProxySerializer(Hibernate7ProxySerializer base, } @Override - public JsonSerializer createContextual(SerializerProvider prov, BeanProperty property) { + public ValueSerializer createContextual(SerializationContext prov, BeanProperty property) { return new Hibernate7ProxySerializer(this, property, _unwrapper); } @Override - public JsonSerializer unwrappingSerializer(final NameTransformer unwrapper) { + public ValueSerializer unwrappingSerializer(final NameTransformer unwrapper) { return new Hibernate7ProxySerializer(this, _property, unwrapper); } @@ -119,36 +117,34 @@ public boolean isUnwrappingSerializer() /* /********************************************************************** - /* JsonSerializer impl + /* ValueSerializer impl /********************************************************************** */ @Override - public boolean isEmpty(SerializerProvider provider, HibernateProxy value) { + public boolean isEmpty(SerializationContext provider, HibernateProxy value) { return (value == null) || (findProxied(value) == null); } @Override - public void serialize(HibernateProxy value, JsonGenerator g, SerializerProvider provider) - throws IOException + public void serialize(HibernateProxy value, JsonGenerator g, SerializationContext provider) { Object proxiedValue = findProxied(value); // TODO: figure out how to suppress nulls, if necessary? (too late for that here) if (proxiedValue == null) { - provider.defaultSerializeNull(g); + provider.defaultSerializeNullValue(g); return; } findSerializer(provider, proxiedValue).serialize(proxiedValue, g, provider); } @Override - public void serializeWithType(HibernateProxy value, JsonGenerator g, SerializerProvider provider, + public void serializeWithType(HibernateProxy value, JsonGenerator g, SerializationContext provider, TypeSerializer typeSer) - throws IOException { Object proxiedValue = findProxied(value); if (proxiedValue == null) { - provider.defaultSerializeNull(g); + provider.defaultSerializeNullValue(g); return; } /* This isn't exactly right, since type serializer really refers to proxy @@ -161,9 +157,9 @@ public void serializeWithType(HibernateProxy value, JsonGenerator g, SerializerP @Override public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint) - throws JsonMappingException + throws DatabindException { - SerializerProvider prov = visitor.getProvider(); + SerializationContext prov = visitor.getContext(); if ((prov == null) || (_property == null)) { super.acceptJsonFormatVisitor(visitor, typeHint); } else { @@ -179,8 +175,7 @@ public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType t /********************************************************************** */ - protected JsonSerializer findSerializer(SerializerProvider provider, Object value) - throws IOException + protected ValueSerializer findSerializer(SerializationContext provider, Object value) { /* TODO: if Hibernate did use generics, or we wanted to allow use of Jackson * annotations to indicate type, should take that into account. @@ -194,7 +189,11 @@ protected JsonSerializer findSerializer(SerializerProvider provider, Obj * really anyone's guess at this point; proxies can exist at any level? */ PropertySerializerMap.SerializerAndMapResult result = - _dynamicSerializers.findAndAddPrimarySerializer(type, provider, _property); + _dynamicSerializers.findAndAddPrimarySerializer( + //TODO find better way to get JavaType + TypeFactory.createDefaultInstance().unsafeSimpleType(type), + provider, + _property); if (_dynamicSerializers != result.map) { _dynamicSerializers = result.map; } diff --git a/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7SerializerModifier.java b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7SerializerModifier.java new file mode 100644 index 00000000..cd377d33 --- /dev/null +++ b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7SerializerModifier.java @@ -0,0 +1,34 @@ +package tools.jackson.datatype.hibernate7; + +import tools.jackson.databind.BeanDescription; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.SerializationConfig; +import tools.jackson.databind.ser.ValueSerializerModifier; +import tools.jackson.databind.type.CollectionType; +import tools.jackson.databind.type.MapType; +import org.hibernate.SessionFactory; + +public class Hibernate7SerializerModifier + extends ValueSerializerModifier +{ + protected final int _features; + + protected final SessionFactory _sessionFactory; + + public Hibernate7SerializerModifier(int features, SessionFactory sessionFactory) { + _features = features; + _sessionFactory = sessionFactory; + } + + @Override + public ValueSerializer modifyCollectionSerializer(SerializationConfig config, + CollectionType valueType, BeanDescription.Supplier beanDesc, ValueSerializer serializer) { + return new PersistentCollectionSerializer(valueType, serializer, _features, _sessionFactory); + } + + @Override + public ValueSerializer modifyMapSerializer(SerializationConfig config, + MapType valueType, BeanDescription.Supplier beanDesc, ValueSerializer serializer) { + return new PersistentCollectionSerializer(valueType, serializer, _features, _sessionFactory); + } +} diff --git a/hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/Hibernate7Serializers.java b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7Serializers.java similarity index 72% rename from hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/Hibernate7Serializers.java rename to hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7Serializers.java index f6414576..d4e89721 100644 --- a/hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/Hibernate7Serializers.java +++ b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7Serializers.java @@ -1,10 +1,11 @@ -package com.fasterxml.jackson.datatype.hibernate7; +package tools.jackson.datatype.hibernate7; -import com.fasterxml.jackson.databind.BeanDescription; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializationConfig; -import com.fasterxml.jackson.databind.ser.Serializers; +import com.fasterxml.jackson.annotation.JsonFormat; +import tools.jackson.databind.BeanDescription; +import tools.jackson.databind.JavaType; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.SerializationConfig; +import tools.jackson.databind.ser.Serializers; import org.hibernate.proxy.HibernateProxy; import org.hibernate.type.MappingContext; @@ -30,8 +31,8 @@ public Hibernate7Serializers(MappingContext mapping, int features) } @Override - public JsonSerializer findSerializer(SerializationConfig config, - JavaType type, BeanDescription beanDesc) + public ValueSerializer findSerializer(SerializationConfig config, + JavaType type, BeanDescription.Supplier beanDesc, JsonFormat.Value formatOverrides) { Class raw = type.getRawClass(); if (HibernateProxy.class.isAssignableFrom(raw)) { diff --git a/hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/Hibernate7Version.java b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7Version.java similarity index 95% rename from hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/Hibernate7Version.java rename to hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7Version.java index a84c3568..39e835f9 100644 --- a/hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/Hibernate7Version.java +++ b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7Version.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate7; +package tools.jackson.datatype.hibernate7; public class Hibernate7Version { diff --git a/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/PackageVersion.java.in b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/PackageVersion.java.in new file mode 100644 index 00000000..69b6bdd0 --- /dev/null +++ b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/PackageVersion.java.in @@ -0,0 +1,20 @@ +package @package@; + +import tools.jackson.core.Version; +import tools.jackson.core.Versioned; +import tools.jackson.core.util.VersionUtil; + +/** + * Automatically generated from PackageVersion.java.in during + * packageVersion-generate execution of maven-replacer-plugin in + * pom.xml. + */ +public final class PackageVersion implements Versioned { + public final static Version VERSION = VersionUtil.parseVersion( + "@projectversion@", "@projectgroupid@", "@projectartifactid@"); + + @Override + public Version version() { + return VERSION; + } +} diff --git a/hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/PersistentCollectionSerializer.java b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/PersistentCollectionSerializer.java similarity index 83% rename from hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/PersistentCollectionSerializer.java rename to hibernate7/src/main/java/tools/jackson/datatype/hibernate7/PersistentCollectionSerializer.java index 39d605e7..48b93710 100644 --- a/hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/PersistentCollectionSerializer.java +++ b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/PersistentCollectionSerializer.java @@ -1,6 +1,5 @@ -package com.fasterxml.jackson.datatype.hibernate7; +package tools.jackson.datatype.hibernate7; -import java.io.IOException; import java.util.*; import org.hibernate.FlushMode; @@ -14,14 +13,12 @@ import org.hibernate.mapping.Bag; import org.hibernate.resource.transaction.backend.jta.internal.JtaTransactionCoordinatorImpl; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.*; -import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; -import com.fasterxml.jackson.databind.jsontype.TypeSerializer; -import com.fasterxml.jackson.databind.ser.ContainerSerializer; -import com.fasterxml.jackson.databind.ser.ContextualSerializer; -import com.fasterxml.jackson.databind.ser.ResolvableSerializer; -import com.fasterxml.jackson.databind.util.NameTransformer; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.*; +import tools.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; +import tools.jackson.databind.jsontype.TypeSerializer; +import tools.jackson.databind.ser.std.StdContainerSerializer; +import tools.jackson.databind.util.NameTransformer; import jakarta.persistence.ElementCollection; import jakarta.persistence.EntityManager; @@ -37,8 +34,7 @@ * and Map types (unlike in JDK). */ public class PersistentCollectionSerializer - extends ContainerSerializer - implements ContextualSerializer, ResolvableSerializer + extends StdContainerSerializer { private static final long serialVersionUID = 1L; @@ -56,7 +52,7 @@ public class PersistentCollectionSerializer * Serializer that does actual value serialization when value * is available (either already or with forced access). */ - protected final JsonSerializer _serializer; + protected final ValueSerializer _serializer; protected final SessionFactory _sessionFactory; @@ -68,20 +64,20 @@ public class PersistentCollectionSerializer @SuppressWarnings("unchecked") public PersistentCollectionSerializer(JavaType containerType, - JsonSerializer serializer, int features, SessionFactory sessionFactory) { - super(containerType); + ValueSerializer serializer, int features, SessionFactory sessionFactory) { + super(containerType, null); _originalType = containerType; - _serializer = (JsonSerializer) serializer; + _serializer = (ValueSerializer) serializer; _features = features; _sessionFactory = sessionFactory; } @SuppressWarnings("unchecked") - protected PersistentCollectionSerializer(PersistentCollectionSerializer base, JsonSerializer serializer) + protected PersistentCollectionSerializer(PersistentCollectionSerializer base, ValueSerializer serializer) { super(base); _originalType = base._originalType; - _serializer = (JsonSerializer) serializer; + _serializer = (ValueSerializer) serializer; _features = base._features; _sessionFactory = base._sessionFactory; } @@ -91,7 +87,7 @@ public PersistentCollectionSerializer unwrappingSerializer(NameTransformer unwra return _withSerializer(_serializer.unwrappingSerializer(unwrapper)); } - protected PersistentCollectionSerializer _withSerializer(JsonSerializer ser) { + protected PersistentCollectionSerializer _withSerializer(ValueSerializer ser) { if ((ser == _serializer) || (ser == null)) { return this; } @@ -100,9 +96,9 @@ protected PersistentCollectionSerializer _withSerializer(JsonSerializer ser) // from `ContainerSerializer` @Override - protected ContainerSerializer _withValueTypeSerializer(TypeSerializer vts) + protected StdContainerSerializer _withValueTypeSerializer(TypeSerializer vts) { - ContainerSerializer ser0 = _containerSerializer(); + StdContainerSerializer ser0 = _containerSerializer(); if (ser0 != null) { return _withSerializer(ser0.withValueTypeSerializer(vts)); } @@ -119,11 +115,9 @@ protected ContainerSerializer _withValueTypeSerializer(TypeSerializer vts) */ @Override - public void resolve(SerializerProvider provider) throws JsonMappingException + public void resolve(SerializationContext provider) throws DatabindException { - if (_serializer instanceof ResolvableSerializer) { - ((ResolvableSerializer) _serializer).resolve(provider); - } + _serializer.resolve(provider); } /** @@ -131,13 +125,13 @@ public void resolve(SerializerProvider provider) throws JsonMappingException * must know type of property being serialized. */ @Override - public JsonSerializer createContextual(SerializerProvider provider, + public ValueSerializer createContextual(SerializationContext provider, BeanProperty property) - throws JsonMappingException + throws DatabindException { // 18-Oct-2013, tatu: Whether this is for the primary property or secondary is // not quite certain; presume primary one for now. - JsonSerializer ser = provider.handlePrimaryContextualization(_serializer, property); + ValueSerializer ser = provider.handlePrimaryContextualization(_serializer, property); // If we use eager loading, can just return underlying serializer as is if (!usesLazyLoading(property)) { @@ -148,12 +142,12 @@ public JsonSerializer createContextual(SerializerProvider provider, /* /********************************************************************** - /* JsonSerializer simple accessors, metadata + /* ValueSerializer simple accessors, metadata /********************************************************************** */ @Override - public boolean isEmpty(SerializerProvider provider, Object value) + public boolean isEmpty(SerializationContext provider, Object value) { if (value == null) { // is null ever passed? return true; @@ -177,7 +171,7 @@ public boolean usesObjectId() { @Override public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint) - throws JsonMappingException + throws DatabindException { _serializer.acceptJsonFormatVisitor(visitor, typeHint); } @@ -190,7 +184,7 @@ public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType t @Override public JavaType getContentType() { - ContainerSerializer ser = _containerSerializer(); + StdContainerSerializer ser = _containerSerializer(); if (ser != null) { return ser.getContentType(); } @@ -198,8 +192,8 @@ public JavaType getContentType() { } @Override - public JsonSerializer getContentSerializer() { - ContainerSerializer ser = _containerSerializer(); + public ValueSerializer getContentSerializer() { + StdContainerSerializer ser = _containerSerializer(); if (ser != null) { return ser.getContentSerializer(); } @@ -218,25 +212,25 @@ public boolean hasSingleElement(Object value) { return false; } + /* /********************************************************************** - /* JsonSerializer, actual serialization + /* ValueSerializer, actual serialization /********************************************************************** */ @Override - public void serialize(Object value, JsonGenerator g, SerializerProvider provider) - throws IOException + public void serialize(Object value, JsonGenerator g, SerializationContext provider) { if (value instanceof PersistentCollection) { value = findLazyValue((PersistentCollection) value); if (value == null) { - provider.defaultSerializeNull(g); + provider.defaultSerializeNullValue(g); return; } } if (_serializer == null) { // sanity check... - throw JsonMappingException.from(g, "PersistentCollection does not have serializer set"); + throw DatabindException.from(g, "PersistentCollection does not have serializer set"); } // 30-Jul-2016, tatu: wrt [datatype-hibernate#93], should NOT have to do anything here; @@ -245,19 +239,18 @@ public void serialize(Object value, JsonGenerator g, SerializerProvider provider } @Override - public void serializeWithType(Object value, JsonGenerator g, SerializerProvider provider, + public void serializeWithType(Object value, JsonGenerator g, SerializationContext provider, TypeSerializer typeSer) - throws IOException { if (value instanceof PersistentCollection) { value = findLazyValue((PersistentCollection) value); if (value == null) { - provider.defaultSerializeNull(g); + provider.defaultSerializeNullValue(g); return; } } if (_serializer == null) { // sanity check... - throw JsonMappingException.from(g, "PersistentCollection does not have serializer set"); + throw DatabindException.from(g, "PersistentCollection does not have serializer set"); } // 30-Jul-2016, tatu: wrt [datatype-hibernate#93], conversion IS needed here (or, @@ -276,9 +269,9 @@ public void serializeWithType(Object value, JsonGenerator g, SerializerProvider /********************************************************************** */ - protected ContainerSerializer _containerSerializer() { - if (_serializer instanceof ContainerSerializer) { - return (ContainerSerializer) _serializer; + protected StdContainerSerializer _containerSerializer() { + if (_serializer instanceof StdContainerSerializer stdContainerSerializer) { + return stdContainerSerializer; } return null; } diff --git a/hibernate7/src/main/resources/META-INF/services/com.fasterxml.jackson.databind.Module b/hibernate7/src/main/resources/META-INF/services/com.fasterxml.jackson.databind.Module index 7cafd375..1c10bab1 100644 --- a/hibernate7/src/main/resources/META-INF/services/com.fasterxml.jackson.databind.Module +++ b/hibernate7/src/main/resources/META-INF/services/com.fasterxml.jackson.databind.Module @@ -1 +1 @@ -com.fasterxml.jackson.datatype.hibernate7.Hibernate7Module +tools.jackson.datatype.hibernate7.Hibernate7Module diff --git a/hibernate7/src/moditect/module-info.java b/hibernate7/src/moditect/module-info.java index c18a556f..3909144a 100644 --- a/hibernate7/src/moditect/module-info.java +++ b/hibernate7/src/moditect/module-info.java @@ -1,15 +1,15 @@ -module com.fasterxml.jackson.datatype.hibernate7 { - requires transitive com.fasterxml.jackson.core; - requires transitive com.fasterxml.jackson.databind; +module tools.jackson.datatype.hibernate7 { + requires transitive tools.jackson.core; + requires transitive tools.jackson.databind; requires transitive org.hibernate.orm.core; - requires static com.fasterxml.jackson.annotation; + requires static tools.jackson.annotation; requires static jakarta.activation; requires static jakarta.persistence; - exports com.fasterxml.jackson.datatype.hibernate7; - opens com.fasterxml.jackson.datatype.hibernate7; + exports tools.jackson.datatype.hibernate7; + opens tools.jackson.datatype.hibernate7; - provides com.fasterxml.jackson.databind.Module with - com.fasterxml.jackson.datatype.hibernate7.Hibernate7Module; + provides tools.jackson.databind.JacksonModule with + tools.jackson.datatype.hibernate7.Hibernate7Module; } diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/InclusionTest.java b/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/InclusionTest.java deleted file mode 100644 index 242ddb02..00000000 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/InclusionTest.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.fasterxml.jackson.datatype.hibernate7; - -import java.util.*; - -import org.junit.jupiter.api.Test; - -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.databind.ObjectMapper; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -public class InclusionTest extends BaseTest -{ - static class Mock - { - public long id = 13; - public Set mocks = new LinkedHashSet(); - } - - // [hibernate#65] - @Test - public void testInclusion() throws Exception - { - final ObjectMapper mapper = mapperWithModule(false); - mapper.setSerializationInclusion(Include.NON_EMPTY); - String json = mapper.writeValueAsString(new Mock()); - assertEquals("{\"id\":13}", json); - } -} diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/BaseTest.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/BaseTest.java similarity index 86% rename from hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/BaseTest.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/BaseTest.java index 48a0fe9f..48fa1c98 100644 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/BaseTest.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/BaseTest.java @@ -1,9 +1,9 @@ -package com.fasterxml.jackson.datatype.hibernate7; +package tools.jackson.datatype.hibernate7; import java.util.Arrays; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.json.JsonMapper; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; import org.apache.log4j.Logger; import static org.junit.jupiter.api.Assertions.fail; @@ -20,9 +20,14 @@ protected BaseTest() { } } + protected JsonMapper.Builder mapperBuilderWithModule(boolean forceLazyLoading) + { + return JsonMapper.builder().addModule(hibernateModule(forceLazyLoading, false)); + } + protected ObjectMapper mapperWithModule(boolean forceLazyLoading) { - return JsonMapper.builder().addModule(hibernateModule(forceLazyLoading, false)).build(); + return mapperBuilderWithModule(forceLazyLoading).build(); } protected ObjectMapper mapperWithModule(boolean forceLazyLoading, boolean nullMissingEntities) diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/ForceLazyLoadingTest.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/ForceLazyLoadingTest.java similarity index 87% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/ForceLazyLoadingTest.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/ForceLazyLoadingTest.java index fe0a4ea2..e7751e87 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/ForceLazyLoadingTest.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/ForceLazyLoadingTest.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate6; +package tools.jackson.datatype.hibernate7; import java.util.Map; import java.util.Set; @@ -11,10 +11,10 @@ import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.datatype.hibernate6.data.Customer; -import com.fasterxml.jackson.datatype.hibernate6.data.Payment; +import tools.jackson.datatype.hibernate7.data.Customer; +import tools.jackson.datatype.hibernate7.data.Payment; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.*; diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/HibernateTest.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/HibernateTest.java similarity index 92% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/HibernateTest.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/HibernateTest.java index d57b8352..0dd31c24 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/HibernateTest.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/HibernateTest.java @@ -1,9 +1,9 @@ -package com.fasterxml.jackson.datatype.hibernate6; +package tools.jackson.datatype.hibernate7; -import com.fasterxml.jackson.datatype.hibernate6.data.Customer; -import com.fasterxml.jackson.datatype.hibernate6.data.Employee; +import tools.jackson.datatype.hibernate7.data.Customer; +import tools.jackson.datatype.hibernate7.data.Employee; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/InclusionTest.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/InclusionTest.java similarity index 61% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/InclusionTest.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/InclusionTest.java index 14ec7f22..45dee0fa 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/InclusionTest.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/InclusionTest.java @@ -1,11 +1,12 @@ -package com.fasterxml.jackson.datatype.hibernate6; +package tools.jackson.datatype.hibernate7; import java.util.*; import org.junit.jupiter.api.Test; import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -21,8 +22,9 @@ static class Mock @Test public void testInclusion() throws Exception { - final ObjectMapper mapper = mapperWithModule(false); - mapper.setSerializationInclusion(Include.NON_EMPTY); + final JsonMapper.Builder builder = mapperBuilderWithModule(false); + builder.changeDefaultPropertyInclusion(inc -> inc.withValueInclusion(Include.NON_EMPTY)); + ObjectMapper mapper = builder.build(); String json = mapper.writeValueAsString(new Mock()); assertEquals("{\"id\":13}", json); } diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/LazyLoadingTest.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/LazyLoadingTest.java similarity index 81% rename from hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/LazyLoadingTest.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/LazyLoadingTest.java index 387469d1..e91529f3 100644 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/LazyLoadingTest.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/LazyLoadingTest.java @@ -1,17 +1,18 @@ -package com.fasterxml.jackson.datatype.hibernate7; +package tools.jackson.datatype.hibernate7; import java.util.Map; import java.util.Set; -import com.fasterxml.jackson.datatype.hibernate7.data.Customer; -import com.fasterxml.jackson.datatype.hibernate7.data.Payment; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.datatype.hibernate7.data.Customer; +import tools.jackson.datatype.hibernate7.data.Payment; import org.hibernate.Hibernate; import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.hibernate7.Hibernate7Module.Feature; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.datatype.hibernate7.Hibernate7Module.Feature; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; @@ -64,10 +65,13 @@ public void testGetCustomerJson() throws Exception } @Test - public void testSerializeIdentifierFeature() throws JsonProcessingException { + public void testSerializeIdentifierFeature() throws JacksonException { Hibernate7Module module = new Hibernate7Module(); module.enable(Feature.SERIALIZE_IDENTIFIER_FOR_LAZY_NOT_LOADED_OBJECTS); - ObjectMapper objectMapper = new ObjectMapper().registerModule(module); + ObjectMapper objectMapper = + JsonMapper.builder() + .addModule(module) + .build(); EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit"); try { diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/MissingEntitiesAsNullTest.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/MissingEntitiesAsNullTest.java similarity index 90% rename from hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/MissingEntitiesAsNullTest.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/MissingEntitiesAsNullTest.java index 9f7a5fcf..6aa37f18 100644 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/MissingEntitiesAsNullTest.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/MissingEntitiesAsNullTest.java @@ -1,14 +1,14 @@ -package com.fasterxml.jackson.datatype.hibernate7; +package tools.jackson.datatype.hibernate7; import java.util.Map; -import com.fasterxml.jackson.datatype.hibernate7.data.Customer; +import tools.jackson.datatype.hibernate7.data.Customer; import org.hibernate.Hibernate; import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.DatabindException; +import tools.jackson.databind.ObjectMapper; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; @@ -71,7 +71,7 @@ public void testProductWithValidForeignKey() throws Exception { } // caused by jakarta.persistence.EntityNotFoundException: Unable to find - // com.fasterxml.jackson.datatype.hibernate7.data.Product with id X10_1678 + // tools.jackson.datatype.hibernate7.data.Product with id X10_1678 @Test public void testExceptionWithInvalidForeignKey() throws Exception { EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit"); @@ -90,8 +90,8 @@ public void testExceptionWithInvalidForeignKey() throws Exception { // JUnit 3.8 fail("Expected EntityNotFoundException exception"); - } catch (JsonMappingException e) { - assertEquals("No row with the given identifier exists for entity [com.fasterxml.jackson.datatype.hibernate7.data.Product with id 'X10_1678']", + } catch (DatabindException e) { + assertEquals("No row with the given identifier exists for entity [tools.jackson.datatype.hibernate7.data.Product with id 'X10_1678']", e.getCause().getMessage()); } finally { emf.close(); diff --git a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/OneToManyTest.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/OneToManyTest.java similarity index 82% rename from hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/OneToManyTest.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/OneToManyTest.java index e9c71f16..06f8d3bc 100644 --- a/hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6/OneToManyTest.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/OneToManyTest.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate6; +package tools.jackson.datatype.hibernate7; import java.util.LinkedHashMap; import java.util.Map; @@ -7,7 +7,8 @@ import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -43,7 +44,10 @@ public void testMapWithOneToMany() throws Exception { } private String mapWithHibernateModule(Object object) throws Exception { - return new ObjectMapper().registerModule(new Hibernate6Module()).writeValueAsString(object); + return JsonMapper.builder() + .addModule(new Hibernate7Module()) + .build() + .writeValueAsString(object); } private String mapWithoutHibernateModule(Object object) throws Exception { diff --git a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Polymorphic81Test.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/Polymorphic81Test.java similarity index 95% rename from hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Polymorphic81Test.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/Polymorphic81Test.java index 2d9ff09b..b18a7e31 100644 --- a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Polymorphic81Test.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/Polymorphic81Test.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta; +package tools.jackson.datatype.hibernate7; import java.util.ArrayList; import java.util.List; @@ -8,7 +8,7 @@ import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/ReplacePersistentCollectionTest.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/ReplacePersistentCollectionTest.java similarity index 83% rename from hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/ReplacePersistentCollectionTest.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/ReplacePersistentCollectionTest.java index 9d753dbc..1c895046 100644 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/ReplacePersistentCollectionTest.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/ReplacePersistentCollectionTest.java @@ -1,20 +1,20 @@ -package com.fasterxml.jackson.datatype.hibernate7; +package tools.jackson.datatype.hibernate7; import java.util.Set; -import com.fasterxml.jackson.datatype.hibernate7.data.Customer; -import com.fasterxml.jackson.datatype.hibernate7.data.Payment; +import tools.jackson.databind.DefaultTyping; +import tools.jackson.databind.DatabindException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.databind.jsontype.DefaultBaseTypeLimitingValidator; +import tools.jackson.datatype.hibernate7.data.Customer; +import tools.jackson.datatype.hibernate7.data.Payment; import org.hibernate.Hibernate; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping; -import com.fasterxml.jackson.databind.json.JsonMapper; - import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.Persistence; @@ -57,7 +57,7 @@ public void testNoReplacePersistentCollection() throws Exception { try { /*Customer result =*/ mapper.readValue(json, Customer.class); fail("Should throw exception"); - } catch (JsonMappingException e) { + } catch (DatabindException e) { verifyException(e, "failed to lazily initialize"); } } @@ -91,7 +91,7 @@ public void testReplacePersistentCollection() throws Exception { private ObjectMapper hibernateMapper(Hibernate7Module module) { return JsonMapper.builder() .addModule(module) - .build() - .enableDefaultTyping(DefaultTyping.NON_FINAL); + .activateDefaultTyping(new DefaultBaseTypeLimitingValidator(), DefaultTyping.NON_FINAL) + .build(); } } diff --git a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/TestMaps.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/TestMaps.java similarity index 82% rename from hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/TestMaps.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/TestMaps.java index 87450d3d..a79a1771 100644 --- a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/TestMaps.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/TestMaps.java @@ -1,11 +1,11 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta; +package tools.jackson.datatype.hibernate7; import java.util.HashMap; import java.util.Map; import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/TestVersions.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/TestVersions.java similarity index 80% rename from hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/TestVersions.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/TestVersions.java index f35eda40..24935009 100644 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/TestVersions.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/TestVersions.java @@ -1,9 +1,9 @@ -package com.fasterxml.jackson.datatype.hibernate7; +package tools.jackson.datatype.hibernate7; import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.core.Versioned; +import tools.jackson.core.Version; +import tools.jackson.core.Versioned; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/TransientTest.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/TransientTest.java similarity index 85% rename from hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/TransientTest.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/TransientTest.java index 6c86bc2f..a9ebc076 100644 --- a/hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/TransientTest.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/TransientTest.java @@ -1,10 +1,11 @@ -package com.fasterxml.jackson.datatype.hibernate7; +package tools.jackson.datatype.hibernate7; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import jakarta.persistence.Transient; import org.junit.jupiter.api.Test; +import tools.jackson.databind.json.JsonMapper; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -37,7 +38,7 @@ public void testSimpleTransient() throws Exception // and then with Transient disabled Hibernate7Module mod = hibernateModule(false); mod.disable(Hibernate7Module.Feature.USE_TRANSIENT_ANNOTATION); - mapper = new ObjectMapper().registerModule(mod); + mapper = JsonMapper.builder().addModule(mod).build(); assertEquals(aposToQuotes("{'a':1,'b':2}"), mapper.writeValueAsString(new WithTransient())); } diff --git a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/UnwrappedTest.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/UnwrappedTest.java similarity index 79% rename from hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/UnwrappedTest.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/UnwrappedTest.java index 11be91f5..dc2fa0cb 100644 --- a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/UnwrappedTest.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/UnwrappedTest.java @@ -1,19 +1,18 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta; +package tools.jackson.datatype.hibernate7; +import tools.jackson.datatype.hibernate7.data.Customer; +import tools.jackson.datatype.hibernate7.data.Product; import org.hibernate.Hibernate; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonUnwrapped; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.hibernate5.jakarta.data.Customer; -import com.fasterxml.jackson.datatype.hibernate5.jakarta.data.Product; +import tools.jackson.core.JacksonException; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.ObjectMapper; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.Persistence; - import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; @@ -41,7 +40,7 @@ public T getContent() } @Test - public void testSimpleUnwrapped() throws JsonProcessingException + public void testSimpleUnwrapped() throws JacksonException { EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit"); try { diff --git a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/Customer.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/Customer.java similarity index 99% rename from hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/Customer.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/Customer.java index 9acc2e19..318d98b5 100644 --- a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/Customer.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/Customer.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta.data; +package tools.jackson.datatype.hibernate7.data; import static jakarta.persistence.GenerationType.IDENTITY; diff --git a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/Employee.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/Employee.java similarity index 98% rename from hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/Employee.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/Employee.java index 31f8424e..6f58c5c2 100644 --- a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/Employee.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/Employee.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta.data; +package tools.jackson.datatype.hibernate7.data; import static jakarta.persistence.GenerationType.IDENTITY; diff --git a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/Office.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/Office.java similarity index 98% rename from hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/Office.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/Office.java index 88bd4263..b113dbad 100644 --- a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/Office.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/Office.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta.data; +package tools.jackson.datatype.hibernate7.data; import java.util.HashSet; import java.util.Set; diff --git a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/Order.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/Order.java similarity index 98% rename from hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/Order.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/Order.java index 7e8abbd9..fb93d192 100644 --- a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/Order.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/Order.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta.data; +package tools.jackson.datatype.hibernate7.data; import static jakarta.persistence.GenerationType.IDENTITY; diff --git a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/OrderDetail.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/OrderDetail.java similarity index 97% rename from hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/OrderDetail.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/OrderDetail.java index c52c3f48..eba31b06 100644 --- a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/OrderDetail.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/OrderDetail.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta.data; +package tools.jackson.datatype.hibernate7.data; import com.fasterxml.jackson.annotation.JsonBackReference; diff --git a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/OrderDetailId.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/OrderDetailId.java similarity index 96% rename from hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/OrderDetailId.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/OrderDetailId.java index eb80acc5..4d67f6eb 100644 --- a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/OrderDetailId.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/OrderDetailId.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta.data; +package tools.jackson.datatype.hibernate7.data; import jakarta.persistence.Column; import jakarta.persistence.Embeddable; diff --git a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/Payment.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/Payment.java similarity index 97% rename from hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/Payment.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/Payment.java index 3a18abd7..00e9b9fc 100644 --- a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/Payment.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/Payment.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta.data; +package tools.jackson.datatype.hibernate7.data; import java.util.Date; diff --git a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/PaymentId.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/PaymentId.java similarity index 96% rename from hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/PaymentId.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/PaymentId.java index 05a248a6..ef62723d 100644 --- a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/PaymentId.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/PaymentId.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta.data; +package tools.jackson.datatype.hibernate7.data; import jakarta.persistence.Column; import jakarta.persistence.Embeddable; diff --git a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/Product.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/Product.java similarity index 98% rename from hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/Product.java rename to hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/Product.java index f887a014..4290d70d 100644 --- a/hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/data/Product.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/data/Product.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.datatype.hibernate5.jakarta.data; +package tools.jackson.datatype.hibernate7.data; import java.util.HashSet; diff --git a/hibernate7/src/test/resources/META-INF/persistence.xml b/hibernate7/src/test/resources/META-INF/persistence.xml index a19f9593..14d8af2b 100644 --- a/hibernate7/src/test/resources/META-INF/persistence.xml +++ b/hibernate7/src/test/resources/META-INF/persistence.xml @@ -6,15 +6,15 @@ org.hibernate.jpa.HibernatePersistenceProvider - com.fasterxml.jackson.datatype.hibernate7.data.Customer - com.fasterxml.jackson.datatype.hibernate7.data.Employee - com.fasterxml.jackson.datatype.hibernate7.data.Office - com.fasterxml.jackson.datatype.hibernate7.data.Order - com.fasterxml.jackson.datatype.hibernate7.data.OrderDetail - com.fasterxml.jackson.datatype.hibernate7.data.OrderDetailId - com.fasterxml.jackson.datatype.hibernate7.data.Payment - com.fasterxml.jackson.datatype.hibernate7.data.PaymentId - com.fasterxml.jackson.datatype.hibernate7.data.Product + tools.jackson.datatype.hibernate7.data.Customer + tools.jackson.datatype.hibernate7.data.Employee + tools.jackson.datatype.hibernate7.data.Office + tools.jackson.datatype.hibernate7.data.Order + tools.jackson.datatype.hibernate7.data.OrderDetail + tools.jackson.datatype.hibernate7.data.OrderDetailId + tools.jackson.datatype.hibernate7.data.Payment + tools.jackson.datatype.hibernate7.data.PaymentId + tools.jackson.datatype.hibernate7.data.Product diff --git a/pom.xml b/pom.xml index 3b69c7f9..75c3a031 100644 --- a/pom.xml +++ b/pom.xml @@ -1,14 +1,14 @@ 4.0.0 - com.fasterxml.jackson + tools.jackson jackson-base - 2.21.0-SNAPSHOT + 3.0.0-SNAPSHOT - com.fasterxml.jackson.datatype + tools.jackson.datatype jackson-datatype-hibernate-parent Hibernate module parent - 2.21.0-SNAPSHOT + 3.0.0-SNAPSHOT pom Parent pom for shared settings for project sub-modules @@ -16,9 +16,6 @@ hibernate4 hibernate5 - hibernate5-jakarta hibernate6 @@ -58,12 +55,12 @@ test - + - com.h2database h2 2.3.232 @@ -75,10 +72,14 @@ com.fasterxml.jackson.core + jackson-annotations + + + tools.jackson.core jackson-core - com.fasterxml.jackson.core + tools.jackson.core jackson-databind @@ -98,13 +99,6 @@ assertj-core test - - - - com.fasterxml.jackson.core - jackson-annotations - test - @@ -139,7 +133,7 @@ maven-surefire-plugin - com/fasterxml/jackson/**/failing/*.java + tools/jackson/**/failing/*.java