From 073a604f4ffad4c0ba3c6f9cfbc197063d21591c Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Fri, 17 Oct 2025 23:06:19 +0100 Subject: [PATCH 01/17] Correct Hibernate 7.x dependency version details Updated Hibernate 7.x dependency version information in README. jackson 3 support wip wip wip wip wip wip wip workaround compilation issues Update Hibernate7ProxySerializer.java fix a broken test fix InclusionTest hibernate6 hibernate5 jakarta module hibernate4 3.1 Fix one one of 3 hib3 test failures --- README.md | 48 +++---- hibernate4/pom.xml | 10 +- .../HibernateSerializerModifier.java | 42 ------ .../datatype/hibernate4/Hibernate4Module.java | 12 +- .../HibernateAnnotationIntrospector.java | 17 +-- .../hibernate4/HibernateProxySerializer.java | 59 ++++---- .../HibernateSerializerModifier.java | 42 ++++++ .../hibernate4/HibernateSerializers.java | 19 +-- .../hibernate4/PackageVersion.java.in | 6 +- .../PersistentCollectionSerializer.java | 98 ++++++-------- .../com.fasterxml.jackson.databind.Module | 2 +- .../jackson/datatype/hibernate4/BaseTest.java | 14 +- .../hibernate4/ForceLazyLoadingTest.java | 8 +- .../datatype/hibernate4/HibernateTest.java | 8 +- .../datatype/hibernate4/InclusionTest.java | 10 +- .../hibernate4/InfiniteRecursion70Test.java | 6 +- .../datatype/hibernate4/LazyLoadingTest.java | 17 +-- .../hibernate4/MissingEntitiesAsNullTest.java | 14 +- .../datatype/hibernate4}/OneToManyTest.java | 7 +- .../hibernate4/Polymorphic81Test.java | 4 +- .../ReplacePersistentCollectionTest.java | 24 ++-- .../datatype/hibernate4}/TestMaps.java | 4 +- .../datatype/hibernate4/TestVersions.java | 6 +- .../datatype/hibernate4/TransientTest.java | 7 +- .../datatype/hibernate4}/UnwrappedTest.java | 14 +- .../datatype/hibernate4/data/Contrato.java | 8 +- .../datatype/hibernate4/data/Customer.java | 2 +- .../datatype/hibernate4/data/Employee.java | 2 +- .../datatype/hibernate4}/data/Office.java | 2 +- .../datatype/hibernate4}/data/Order.java | 2 +- .../hibernate4}/data/OrderDetail.java | 2 +- .../hibernate4}/data/OrderDetailId.java | 2 +- .../datatype/hibernate4}/data/Payment.java | 2 +- .../datatype/hibernate4}/data/PaymentId.java | 2 +- .../datatype/hibernate4}/data/Product.java | 2 +- .../test/resources/META-INF/persistence.xml | 24 ++-- hibernate5-jakarta/pom.xml | 10 +- .../Hibernate5JSerializerModifier.java | 42 ------ .../Hibernate5JAnnotationIntrospector.java | 19 +-- .../jakarta/Hibernate5JProxySerializer.java | 58 ++++---- .../Hibernate5JSerializerModifier.java | 42 ++++++ .../jakarta/Hibernate5JSerializers.java | 17 +-- .../jakarta/Hibernate5JakartaModule.java | 12 +- .../jakarta/Hibernate5JakartaVersion.java | 2 +- .../hibernate5/jakarta/PackageVersion.java.in | 6 +- .../PersistentCollectionSerializer.java | 86 ++++++------ .../com.fasterxml.jackson.databind.Module | 2 +- .../src/moditect/module-info.java | 16 +-- .../datatype/hibernate5/jakarta/BaseTest.java | 16 ++- .../jakarta/ForceLazyLoadingTest.java | 8 +- .../hibernate5/jakarta/HibernateTest.java | 8 +- .../hibernate5/jakarta/InclusionTest.java | 31 +++++ .../jakarta}/MissingEntitiesAsNullTest.java | 17 ++- .../hibernate5/jakarta/OneToManyTest.java | 7 +- .../jakarta}/Polymorphic81Test.java | 4 +- .../ReplacePersistentCollectionTest.java | 21 +-- .../hibernate5/jakarta}/TestMaps.java | 4 +- .../hibernate5/jakarta/TestVersions.java | 6 +- .../hibernate5/jakarta/TransientTest.java | 7 +- .../hibernate5/jakarta}/UnwrappedTest.java | 15 +- .../hibernate5/jakarta}/data/Customer.java | 2 +- .../hibernate5/jakarta}/data/Employee.java | 2 +- .../hibernate5/jakarta}/data/Office.java | 2 +- .../hibernate5/jakarta}/data/Order.java | 2 +- .../hibernate5/jakarta}/data/OrderDetail.java | 2 +- .../jakarta}/data/OrderDetailId.java | 2 +- .../hibernate5/jakarta}/data/Payment.java | 2 +- .../hibernate5/jakarta}/data/PaymentId.java | 2 +- .../hibernate5/jakarta}/data/Product.java | 2 +- .../test/resources/META-INF/persistence.xml | 18 +-- hibernate5/pom.xml | 10 +- .../HibernateSerializerModifier.java | 42 ------ .../datatype/hibernate5/Hibernate5Module.java | 14 +- .../hibernate5/Hibernate5Version.java | 2 +- .../HibernateAnnotationIntrospector.java | 17 +-- .../hibernate5/HibernateProxySerializer.java | 59 ++++---- .../HibernateSerializerModifier.java | 42 ++++++ .../hibernate5/HibernateSerializers.java | 17 +-- .../hibernate5}/PackageVersion.java.in | 6 +- .../PersistentCollectionSerializer.java | 86 ++++++------ .../com.fasterxml.jackson.databind.Module | 2 +- .../jackson/datatype/hibernate5/BaseTest.java | 14 +- .../hibernate5/ForceLazyLoadingTest.java | 8 +- .../datatype/hibernate5/HibernateTest.java | 8 +- .../datatype/hibernate5}/InclusionTest.java | 10 +- .../datatype/hibernate5/LazyLoadingTest.java | 17 +-- .../hibernate5/MissingEntitiesAsNullTest.java | 14 +- .../datatype/hibernate5}/OneToManyTest.java | 7 +- .../hibernate5/Polymorphic81Test.java | 4 +- .../ReplacePersistentCollectionTest.java | 21 +-- .../datatype/hibernate5}/TestMaps.java | 4 +- .../datatype/hibernate5/TestVersions.java | 6 +- .../datatype/hibernate5/TransientTest.java | 7 +- .../datatype/hibernate5}/UnwrappedTest.java | 15 +- .../datatype/hibernate5/data/Customer.java | 2 +- .../datatype/hibernate5/data/Employee.java | 2 +- .../datatype/hibernate5}/data/Office.java | 20 +-- .../datatype/hibernate5}/data/Order.java | 2 +- .../hibernate5}/data/OrderDetail.java | 2 +- .../hibernate5}/data/OrderDetailId.java | 6 +- .../datatype/hibernate5}/data/Payment.java | 2 +- .../datatype/hibernate5}/data/PaymentId.java | 6 +- .../datatype/hibernate5}/data/Product.java | 20 +-- .../test/resources/META-INF/persistence.xml | 24 ++-- hibernate5_2-test/pom.xml | 128 ------------------ hibernate6/pom.xml | 10 +- .../Hibernate6SerializerModifier.java | 42 ------ .../Hibernate6AnnotationIntrospector.java | 15 +- .../datatype/hibernate6/Hibernate6Module.java | 10 +- .../hibernate6/Hibernate6ProxySerializer.java | 59 ++++---- .../Hibernate6SerializerModifier.java | 42 ++++++ .../hibernate6/Hibernate6Serializers.java | 17 +-- .../hibernate6/Hibernate6Version.java | 2 +- .../hibernate6}/PackageVersion.java.in | 6 +- .../PersistentCollectionSerializer.java | 83 ++++++------ .../com.fasterxml.jackson.databind.Module | 2 +- hibernate6/src/moditect/module-info.java | 14 +- .../jackson/datatype/hibernate6/BaseTest.java | 15 +- .../hibernate6}/ForceLazyLoadingTest.java | 8 +- .../datatype/hibernate6}/HibernateTest.java | 8 +- .../datatype/hibernate6}/InclusionTest.java | 10 +- .../datatype/hibernate6/LazyLoadingTest.java | 20 +-- .../MissingEntitiesAsNullTest.java | 17 +-- .../datatype/hibernate6}/OneToManyTest.java | 7 +- .../hibernate6/Polymorphic81Test.java | 4 +- .../ReplacePersistentCollectionTest.java | 21 +-- .../jackson/datatype/hibernate6/TestMaps.java | 4 +- .../datatype/hibernate6/TestVersions.java | 6 +- .../datatype/hibernate6/TransientTest.java | 7 +- .../datatype/hibernate6/UnwrappedTest.java | 14 +- .../datatype/hibernate6}/data/Customer.java | 2 +- .../datatype/hibernate6/data/Employee.java | 2 +- .../datatype/hibernate6/data/Office.java | 2 +- .../datatype/hibernate6}/data/Order.java | 2 +- .../datatype/hibernate6/data/OrderDetail.java | 2 +- .../hibernate6/data/OrderDetailId.java | 2 +- .../datatype/hibernate6/data/Payment.java | 2 +- .../datatype/hibernate6/data/PaymentId.java | 2 +- .../datatype/hibernate6}/data/Product.java | 2 +- .../test/resources/META-INF/persistence.xml | 18 +-- hibernate7/pom.xml | 6 +- .../Hibernate7SerializerModifier.java | 34 ----- .../hibernate7/PackageVersion.java.in | 20 --- .../Hibernate7AnnotationIntrospector.java | 15 +- .../datatype/hibernate7/Hibernate7Module.java | 10 +- .../hibernate7/Hibernate7ProxySerializer.java | 59 ++++---- .../Hibernate7SerializerModifier.java | 34 +++++ .../hibernate7/Hibernate7Serializers.java | 17 +-- .../hibernate7/Hibernate7Version.java | 2 +- .../hibernate7/PackageVersion.java.in | 20 +++ .../PersistentCollectionSerializer.java | 85 ++++++------ .../com.fasterxml.jackson.databind.Module | 2 +- hibernate7/src/moditect/module-info.java | 16 +-- .../datatype/hibernate7/InclusionTest.java | 29 ---- .../jackson/datatype/hibernate7/BaseTest.java | 13 +- .../hibernate7}/ForceLazyLoadingTest.java | 8 +- .../datatype/hibernate7}/HibernateTest.java | 8 +- .../datatype/hibernate7}/InclusionTest.java | 10 +- .../datatype/hibernate7/LazyLoadingTest.java | 20 +-- .../hibernate7/MissingEntitiesAsNullTest.java | 14 +- .../datatype/hibernate7}/OneToManyTest.java | 10 +- .../hibernate7}/Polymorphic81Test.java | 4 +- .../ReplacePersistentCollectionTest.java | 22 +-- .../datatype/hibernate7}/TestMaps.java | 4 +- .../datatype/hibernate7/TestVersions.java | 6 +- .../datatype/hibernate7/TransientTest.java | 7 +- .../datatype/hibernate7}/UnwrappedTest.java | 15 +- .../datatype/hibernate7}/data/Customer.java | 2 +- .../datatype/hibernate7}/data/Employee.java | 2 +- .../datatype/hibernate7}/data/Office.java | 2 +- .../datatype/hibernate7}/data/Order.java | 2 +- .../hibernate7}/data/OrderDetail.java | 2 +- .../hibernate7}/data/OrderDetailId.java | 2 +- .../datatype/hibernate7}/data/Payment.java | 2 +- .../datatype/hibernate7}/data/PaymentId.java | 2 +- .../datatype/hibernate7}/data/Product.java | 2 +- .../test/resources/META-INF/persistence.xml | 18 +-- pom.xml | 36 ++--- 178 files changed, 1301 insertions(+), 1426 deletions(-) delete mode 100644 hibernate4/src/main/java/com/fasterxml/jackson/datatype/hibernate4/HibernateSerializerModifier.java rename hibernate4/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate4/Hibernate4Module.java (94%) rename hibernate4/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate4/HibernateAnnotationIntrospector.java (80%) rename hibernate4/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate4/HibernateProxySerializer.java (87%) create mode 100644 hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateSerializerModifier.java rename hibernate4/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate4/HibernateSerializers.java (68%) rename hibernate4/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate4/PackageVersion.java.in (75%) rename hibernate4/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate4/PersistentCollectionSerializer.java (77%) rename hibernate4/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate4/BaseTest.java (74%) rename hibernate4/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate4/ForceLazyLoadingTest.java (87%) rename hibernate4/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate4/HibernateTest.java (92%) rename hibernate4/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate4/InclusionTest.java (61%) rename hibernate4/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate4/InfiniteRecursion70Test.java (90%) rename hibernate4/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate4/LazyLoadingTest.java (82%) rename hibernate4/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate4/MissingEntitiesAsNullTest.java (89%) rename {hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5 => hibernate4/src/test/java/tools/jackson/datatype/hibernate4}/OneToManyTest.java (84%) rename hibernate4/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate4/Polymorphic81Test.java (95%) rename hibernate4/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate4/ReplacePersistentCollectionTest.java (84%) rename {hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5 => hibernate4/src/test/java/tools/jackson/datatype/hibernate4}/TestMaps.java (82%) rename hibernate4/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate4/TestVersions.java (80%) rename hibernate4/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate4/TransientTest.java (91%) rename {hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5 => hibernate4/src/test/java/tools/jackson/datatype/hibernate4}/UnwrappedTest.java (80%) rename hibernate4/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate4/data/Contrato.java (85%) rename hibernate4/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate4/data/Customer.java (99%) rename hibernate4/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate4/data/Employee.java (98%) rename {hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5 => hibernate4/src/test/java/tools/jackson/datatype/hibernate4}/data/Office.java (98%) rename {hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5 => hibernate4/src/test/java/tools/jackson/datatype/hibernate4}/data/Order.java (98%) rename {hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5 => hibernate4/src/test/java/tools/jackson/datatype/hibernate4}/data/OrderDetail.java (98%) rename {hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5 => hibernate4/src/test/java/tools/jackson/datatype/hibernate4}/data/OrderDetailId.java (97%) rename {hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5 => hibernate4/src/test/java/tools/jackson/datatype/hibernate4}/data/Payment.java (97%) rename {hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5 => hibernate4/src/test/java/tools/jackson/datatype/hibernate4}/data/PaymentId.java (97%) rename {hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5 => hibernate4/src/test/java/tools/jackson/datatype/hibernate4}/data/Product.java (98%) delete mode 100644 hibernate5-jakarta/src/main/java/com/fasterxml/jackson/datatype/hibernate5/jakarta/Hibernate5JSerializerModifier.java rename hibernate5-jakarta/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/jakarta/Hibernate5JAnnotationIntrospector.java (83%) rename hibernate5-jakarta/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/jakarta/Hibernate5JProxySerializer.java (88%) create mode 100644 hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JSerializerModifier.java rename hibernate5-jakarta/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/jakarta/Hibernate5JSerializers.java (72%) rename hibernate5-jakarta/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/jakarta/Hibernate5JakartaModule.java (94%) rename hibernate5-jakarta/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/jakarta/Hibernate5JakartaVersion.java (95%) rename hibernate5-jakarta/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/jakarta/PackageVersion.java.in (75%) rename hibernate5-jakarta/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/jakarta/PersistentCollectionSerializer.java (82%) rename hibernate5-jakarta/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/jakarta/BaseTest.java (75%) rename hibernate5-jakarta/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/jakarta/ForceLazyLoadingTest.java (86%) rename hibernate5-jakarta/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/jakarta/HibernateTest.java (92%) create mode 100644 hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/InclusionTest.java rename {hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6 => hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta}/MissingEntitiesAsNullTest.java (89%) rename hibernate5-jakarta/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/jakarta/OneToManyTest.java (84%) rename {hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7 => hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta}/Polymorphic81Test.java (96%) rename hibernate5-jakarta/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/jakarta/ReplacePersistentCollectionTest.java (82%) rename {hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7 => hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta}/TestMaps.java (83%) rename hibernate5-jakarta/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/jakarta/TestVersions.java (80%) rename hibernate5-jakarta/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/jakarta/TransientTest.java (85%) rename {hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7 => hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta}/UnwrappedTest.java (80%) rename {hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6 => hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta}/data/Customer.java (99%) rename {hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7 => hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta}/data/Employee.java (98%) rename {hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7 => hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta}/data/Office.java (98%) rename {hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6 => hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta}/data/Order.java (98%) rename {hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7 => hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta}/data/OrderDetail.java (98%) rename {hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7 => hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta}/data/OrderDetailId.java (97%) rename {hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7 => hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta}/data/Payment.java (97%) rename {hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7 => hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta}/data/PaymentId.java (97%) rename {hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6 => hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta}/data/Product.java (98%) delete mode 100644 hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5/HibernateSerializerModifier.java rename hibernate5/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/Hibernate5Module.java (94%) rename hibernate5/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/Hibernate5Version.java (95%) rename hibernate5/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/HibernateAnnotationIntrospector.java (85%) rename hibernate5/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/HibernateProxySerializer.java (89%) create mode 100644 hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateSerializerModifier.java rename hibernate5/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/HibernateSerializers.java (72%) rename {hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6 => hibernate5/src/main/java/tools/jackson/datatype/hibernate5}/PackageVersion.java.in (75%) rename hibernate5/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/PersistentCollectionSerializer.java (82%) rename hibernate5/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/BaseTest.java (78%) rename hibernate5/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/ForceLazyLoadingTest.java (87%) rename hibernate5/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/HibernateTest.java (92%) rename {hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta => hibernate5/src/test/java/tools/jackson/datatype/hibernate5}/InclusionTest.java (61%) rename hibernate5/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/LazyLoadingTest.java (83%) rename hibernate5/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/MissingEntitiesAsNullTest.java (89%) rename {hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4 => hibernate5/src/test/java/tools/jackson/datatype/hibernate5}/OneToManyTest.java (84%) rename hibernate5/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/Polymorphic81Test.java (95%) rename hibernate5/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/ReplacePersistentCollectionTest.java (82%) rename {hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4 => hibernate5/src/test/java/tools/jackson/datatype/hibernate5}/TestMaps.java (82%) rename hibernate5/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/TestVersions.java (80%) rename hibernate5/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/TransientTest.java (85%) rename {hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4 => hibernate5/src/test/java/tools/jackson/datatype/hibernate5}/UnwrappedTest.java (79%) rename hibernate5/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/data/Customer.java (99%) rename hibernate5/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate5/data/Employee.java (98%) rename {hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4 => hibernate5/src/test/java/tools/jackson/datatype/hibernate5}/data/Office.java (98%) rename {hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4 => hibernate5/src/test/java/tools/jackson/datatype/hibernate5}/data/Order.java (98%) rename {hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4 => hibernate5/src/test/java/tools/jackson/datatype/hibernate5}/data/OrderDetail.java (98%) rename {hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4 => hibernate5/src/test/java/tools/jackson/datatype/hibernate5}/data/OrderDetailId.java (97%) rename {hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4 => hibernate5/src/test/java/tools/jackson/datatype/hibernate5}/data/Payment.java (97%) rename {hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4 => hibernate5/src/test/java/tools/jackson/datatype/hibernate5}/data/PaymentId.java (97%) rename {hibernate4/src/test/java/com/fasterxml/jackson/datatype/hibernate4 => hibernate5/src/test/java/tools/jackson/datatype/hibernate5}/data/Product.java (98%) delete mode 100644 hibernate5_2-test/pom.xml delete mode 100644 hibernate6/src/main/java/com/fasterxml/jackson/datatype/hibernate6/Hibernate6SerializerModifier.java rename hibernate6/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate6/Hibernate6AnnotationIntrospector.java (87%) rename hibernate6/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate6/Hibernate6Module.java (95%) rename hibernate6/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate6/Hibernate6ProxySerializer.java (87%) create mode 100644 hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6SerializerModifier.java rename hibernate6/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate6/Hibernate6Serializers.java (72%) rename hibernate6/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate6/Hibernate6Version.java (95%) rename {hibernate5/src/main/java/com/fasterxml/jackson/datatype/hibernate5 => hibernate6/src/main/java/tools/jackson/datatype/hibernate6}/PackageVersion.java.in (75%) rename hibernate6/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate6/PersistentCollectionSerializer.java (83%) rename hibernate6/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate6/BaseTest.java (83%) rename {hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7 => hibernate6/src/test/java/tools/jackson/datatype/hibernate6}/ForceLazyLoadingTest.java (87%) rename {hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7 => hibernate6/src/test/java/tools/jackson/datatype/hibernate6}/HibernateTest.java (92%) rename {hibernate5/src/test/java/com/fasterxml/jackson/datatype/hibernate5 => hibernate6/src/test/java/tools/jackson/datatype/hibernate6}/InclusionTest.java (61%) rename hibernate6/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate6/LazyLoadingTest.java (81%) rename {hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta => hibernate6/src/test/java/tools/jackson/datatype/hibernate6}/MissingEntitiesAsNullTest.java (88%) rename {hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7 => hibernate6/src/test/java/tools/jackson/datatype/hibernate6}/OneToManyTest.java (84%) rename hibernate6/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate6/Polymorphic81Test.java (96%) rename hibernate6/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate6/ReplacePersistentCollectionTest.java (83%) rename hibernate6/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate6/TestMaps.java (83%) rename hibernate6/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate6/TestVersions.java (80%) rename hibernate6/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate6/TransientTest.java (85%) rename hibernate6/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate6/UnwrappedTest.java (80%) rename {hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7 => hibernate6/src/test/java/tools/jackson/datatype/hibernate6}/data/Customer.java (99%) rename hibernate6/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate6/data/Employee.java (98%) rename hibernate6/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate6/data/Office.java (98%) rename {hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7 => hibernate6/src/test/java/tools/jackson/datatype/hibernate6}/data/Order.java (98%) rename hibernate6/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate6/data/OrderDetail.java (98%) rename hibernate6/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate6/data/OrderDetailId.java (97%) rename hibernate6/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate6/data/Payment.java (97%) rename hibernate6/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate6/data/PaymentId.java (97%) rename {hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7 => hibernate6/src/test/java/tools/jackson/datatype/hibernate6}/data/Product.java (98%) delete mode 100644 hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/Hibernate7SerializerModifier.java delete mode 100644 hibernate7/src/main/java/com/fasterxml/jackson/datatype/hibernate7/PackageVersion.java.in rename hibernate7/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate7/Hibernate7AnnotationIntrospector.java (87%) rename hibernate7/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate7/Hibernate7Module.java (95%) rename hibernate7/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate7/Hibernate7ProxySerializer.java (86%) create mode 100644 hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7SerializerModifier.java rename hibernate7/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate7/Hibernate7Serializers.java (72%) rename hibernate7/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate7/Hibernate7Version.java (95%) create mode 100644 hibernate7/src/main/java/tools/jackson/datatype/hibernate7/PackageVersion.java.in rename hibernate7/src/main/java/{com/fasterxml => tools}/jackson/datatype/hibernate7/PersistentCollectionSerializer.java (83%) delete mode 100644 hibernate7/src/test/java/com/fasterxml/jackson/datatype/hibernate7/InclusionTest.java rename hibernate7/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate7/BaseTest.java (86%) rename {hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6 => hibernate7/src/test/java/tools/jackson/datatype/hibernate7}/ForceLazyLoadingTest.java (87%) rename {hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6 => hibernate7/src/test/java/tools/jackson/datatype/hibernate7}/HibernateTest.java (92%) rename {hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6 => hibernate7/src/test/java/tools/jackson/datatype/hibernate7}/InclusionTest.java (61%) rename hibernate7/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate7/LazyLoadingTest.java (81%) rename hibernate7/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate7/MissingEntitiesAsNullTest.java (90%) rename {hibernate6/src/test/java/com/fasterxml/jackson/datatype/hibernate6 => hibernate7/src/test/java/tools/jackson/datatype/hibernate7}/OneToManyTest.java (82%) rename {hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta => hibernate7/src/test/java/tools/jackson/datatype/hibernate7}/Polymorphic81Test.java (95%) rename hibernate7/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate7/ReplacePersistentCollectionTest.java (83%) rename {hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta => hibernate7/src/test/java/tools/jackson/datatype/hibernate7}/TestMaps.java (82%) rename hibernate7/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate7/TestVersions.java (80%) rename hibernate7/src/test/java/{com/fasterxml => tools}/jackson/datatype/hibernate7/TransientTest.java (85%) rename {hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta => hibernate7/src/test/java/tools/jackson/datatype/hibernate7}/UnwrappedTest.java (79%) rename {hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta => hibernate7/src/test/java/tools/jackson/datatype/hibernate7}/data/Customer.java (99%) rename {hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta => hibernate7/src/test/java/tools/jackson/datatype/hibernate7}/data/Employee.java (98%) rename {hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta => hibernate7/src/test/java/tools/jackson/datatype/hibernate7}/data/Office.java (98%) rename {hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta => hibernate7/src/test/java/tools/jackson/datatype/hibernate7}/data/Order.java (98%) rename {hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta => hibernate7/src/test/java/tools/jackson/datatype/hibernate7}/data/OrderDetail.java (97%) rename {hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta => hibernate7/src/test/java/tools/jackson/datatype/hibernate7}/data/OrderDetailId.java (96%) rename {hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta => hibernate7/src/test/java/tools/jackson/datatype/hibernate7}/data/Payment.java (97%) rename {hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta => hibernate7/src/test/java/tools/jackson/datatype/hibernate7}/data/PaymentId.java (96%) rename {hibernate5-jakarta/src/test/java/com/fasterxml/jackson/datatype/hibernate5/jakarta => hibernate7/src/test/java/tools/jackson/datatype/hibernate7}/data/Product.java (98%) 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..b2d83441 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.1.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 85% 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..638f9f24 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; @@ -13,8 +13,11 @@ import javax.persistence.Table; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; -@Entity @Table(name="Contrato", catalog="classicmodels") +@Entity +@Table(name="Contrato", catalog="classicmodels") +@JsonPropertyOrder({"id", "numeroContrato", "parcelas", "liquidacoes"}) public class Contrato { @Id public Long id; @@ -46,6 +49,7 @@ public void setLiquidacoes(List liquidacoes) { } @Entity @Table(name="Liquidacao", catalog="classicmodels") +@JsonPropertyOrder({"id", "valorTotal", "contrato", "parcela"}) class Liquidacao { @Id public Long id; 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..a7541383 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.1.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..4972f394 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.1.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..42fcba12 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.1.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..1f201846 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.1.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..302cbc46 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.1.0-SNAPSHOT - com.fasterxml.jackson.datatype + tools.jackson.datatype jackson-datatype-hibernate-parent Hibernate module parent - 2.21.0-SNAPSHOT + 3.1.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 From 2437d8e7effd85dd2a445c0bcc32d5b376b2c5e5 Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Thu, 23 Oct 2025 21:04:55 -0700 Subject: [PATCH 02/17] Minor warnings clean up --- .../HibernateSerializerModifier.java | 2 ++ .../PersistentCollectionSerializer.java | 8 ----- .../datatype/hibernate4/LazyLoadingTest.java | 32 +++++++++---------- 3 files changed, 18 insertions(+), 24 deletions(-) diff --git a/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateSerializerModifier.java b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateSerializerModifier.java index a846454d..85341680 100644 --- a/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateSerializerModifier.java +++ b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateSerializerModifier.java @@ -11,6 +11,8 @@ public class HibernateSerializerModifier extends ValueSerializerModifier { + private static final long serialVersionUID = 3L; + protected final int _features; protected final SessionFactory _sessionFactory; diff --git a/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/PersistentCollectionSerializer.java b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/PersistentCollectionSerializer.java index ec48f53b..79dbc1d4 100644 --- a/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/PersistentCollectionSerializer.java +++ b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/PersistentCollectionSerializer.java @@ -1,6 +1,5 @@ package tools.jackson.datatype.hibernate4; -import java.io.IOException; import java.util.*; import javax.persistence.*; @@ -31,12 +30,8 @@ public class PersistentCollectionSerializer extends StdContainerSerializer { - private static final long serialVersionUID = 1L; // since 2.7 - /** * Type for which underlying serializer was created. - * - * @since 2.7 */ protected final JavaType _originalType; @@ -69,9 +64,6 @@ public PersistentCollectionSerializer(JavaType containerType, _sessionFactory = sessionFactory; } - /** - * @since 2.7 - */ @SuppressWarnings("unchecked") protected PersistentCollectionSerializer(PersistentCollectionSerializer base, ValueSerializer serializer) { diff --git a/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java index dd584bd5..f5fb13d8 100644 --- a/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java @@ -62,22 +62,22 @@ public void testGetCustomerJson() throws Exception @Test public void testSerializeIdentifierFeature() throws JacksonException { - Hibernate4Module module = new Hibernate4Module(); - module.enable(Feature.SERIALIZE_IDENTIFIER_FOR_LAZY_NOT_LOADED_OBJECTS); - ObjectMapper objectMapper = JsonMapper.builder().addModule(module).build(); + Hibernate4Module module = new Hibernate4Module(); + module.enable(Feature.SERIALIZE_IDENTIFIER_FOR_LAZY_NOT_LOADED_OBJECTS); + ObjectMapper objectMapper = JsonMapper.builder().addModule(module).build(); - EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit"); - try { - EntityManager em = emf.createEntityManager(); - Customer customerRef = em.getReference(Customer.class, 103); - em.close(); - assertFalse(Hibernate.isInitialized(customerRef)); - - String json = objectMapper.writeValueAsString(customerRef); - assertFalse(Hibernate.isInitialized(customerRef)); - assertEquals("{\"customerNumber\":103}", json); - } finally { - emf.close(); - } + EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit"); + try { + EntityManager em = emf.createEntityManager(); + Customer customerRef = em.getReference(Customer.class, 103); + em.close(); + assertFalse(Hibernate.isInitialized(customerRef)); + + String json = objectMapper.writeValueAsString(customerRef); + assertFalse(Hibernate.isInitialized(customerRef)); + assertEquals("{\"customerNumber\":103}", json); + } finally { + emf.close(); + } } } From c0a9f463e7d9032138606a13ad866be951126af6 Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Thu, 23 Oct 2025 21:09:35 -0700 Subject: [PATCH 03/17] One more test fix --- .../datatype/hibernate4/LazyLoadingTest.java | 8 ++--- .../datatype/hibernate4/TransientTest.java | 5 ++- .../datatype/hibernate5/TransientTest.java | 32 +++++++++++++++++++ 3 files changed, 40 insertions(+), 5 deletions(-) diff --git a/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java index f5fb13d8..08d8ce50 100644 --- a/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java @@ -71,11 +71,11 @@ public void testSerializeIdentifierFeature() throws JacksonException { EntityManager em = emf.createEntityManager(); Customer customerRef = em.getReference(Customer.class, 103); em.close(); - assertFalse(Hibernate.isInitialized(customerRef)); + assertFalse(Hibernate.isInitialized(customerRef)); - String json = objectMapper.writeValueAsString(customerRef); - assertFalse(Hibernate.isInitialized(customerRef)); - assertEquals("{\"customerNumber\":103}", json); + String json = objectMapper.writeValueAsString(customerRef); + assertFalse(Hibernate.isInitialized(customerRef)); + assertEquals("{\"customerNumber\":103}", json); } finally { emf.close(); } diff --git a/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/TransientTest.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/TransientTest.java index 8e117d5c..4265f541 100644 --- a/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/TransientTest.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/TransientTest.java @@ -7,6 +7,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonView; +import tools.jackson.databind.MapperFeature; import tools.jackson.databind.ObjectMapper; import tools.jackson.databind.json.JsonMapper; @@ -64,7 +65,9 @@ public void testSimpleTransient() throws Exception @Test public void testTransientWithView() throws Exception { - ObjectMapper mapper = mapperWithModule(false); + ObjectMapper mapper = mapperBuilderWithModule(false) + .enable(MapperFeature.DEFAULT_VIEW_INCLUSION) + .build(); assertEquals(aposToQuotes("{'aaa':'xxx'}"), mapper.writerWithView(PublicView.class) .writeValueAsString(new WithTransientAndView())); diff --git a/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/TransientTest.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/TransientTest.java index 561c0ca2..9f472102 100644 --- a/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/TransientTest.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/TransientTest.java @@ -5,6 +5,9 @@ import org.junit.jupiter.api.Test; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fasterxml.jackson.annotation.JsonView; + +import tools.jackson.databind.MapperFeature; import tools.jackson.databind.ObjectMapper; import tools.jackson.databind.json.JsonMapper; @@ -23,6 +26,21 @@ static class WithTransient { public int b = 2; } + public static interface PublicView {} + public static interface PrivateView {} + + @JsonPropertyOrder({"aaa", "bbb", "ccc", "ddd"}) + static class WithTransientAndView { + public String aaa = "xxx"; + @Transient + public String bbb = "xxx"; + @Transient + @JsonView(PublicView.class) + public String ccc = "xxx"; + @JsonView(PrivateView.class) + public String ddd = "xxx"; + } + /* /********************************************************************** /* Test methods @@ -43,4 +61,18 @@ public void testSimpleTransient() throws Exception assertEquals(aposToQuotes("{'a':1,'b':2}"), mapper.writeValueAsString(new WithTransient())); } + + @Test + public void testTransientWithView() throws Exception + { + ObjectMapper mapper = mapperBuilderWithModule(false) + .enable(MapperFeature.DEFAULT_VIEW_INCLUSION) + .build(); + assertEquals(aposToQuotes("{'aaa':'xxx'}"), + mapper.writerWithView(PublicView.class) + .writeValueAsString(new WithTransientAndView())); + assertEquals(aposToQuotes("{'aaa':'xxx','ddd':'xxx'}"), + mapper.writerWithView(PrivateView.class) + .writeValueAsString(new WithTransientAndView())); + } } From b54b7964cd2a8942825dc76c894a0316802afb5b Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Thu, 30 Oct 2025 16:37:47 +0000 Subject: [PATCH 04/17] disable LazyLoadingTest --- .../jackson/datatype/hibernate4/LazyLoadingTest.java | 2 ++ .../jackson/datatype/hibernate5/LazyLoadingTest.java | 2 ++ .../jackson/datatype/hibernate6/LazyLoadingTest.java | 9 +++++---- .../jackson/datatype/hibernate7/LazyLoadingTest.java | 9 +++++---- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java index 08d8ce50..ef6fd687 100644 --- a/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java @@ -14,6 +14,7 @@ import tools.jackson.datatype.hibernate4.data.Payment; import org.hibernate.Hibernate; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; @@ -21,6 +22,7 @@ public class LazyLoadingTest extends BaseTest { // [Issue#15] + @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/191 @Test public void testGetCustomerJson() throws Exception { diff --git a/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/LazyLoadingTest.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/LazyLoadingTest.java index 838c7ef6..0ad0b11b 100644 --- a/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/LazyLoadingTest.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/LazyLoadingTest.java @@ -14,6 +14,7 @@ import tools.jackson.datatype.hibernate5.data.Payment; import org.hibernate.Hibernate; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; @@ -21,6 +22,7 @@ public class LazyLoadingTest extends BaseTest { // For [#15] + @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/191 @Test public void testGetCustomerJson() throws Exception { diff --git a/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/LazyLoadingTest.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/LazyLoadingTest.java index 0a275daf..2fe8a289 100644 --- a/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/LazyLoadingTest.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/LazyLoadingTest.java @@ -3,17 +3,17 @@ import java.util.Map; import java.util.Set; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; import tools.jackson.databind.json.JsonMapper; +import tools.jackson.datatype.hibernate6.Hibernate6Module.Feature; import tools.jackson.datatype.hibernate6.data.Customer; import tools.jackson.datatype.hibernate6.data.Payment; import org.hibernate.Hibernate; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -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; import jakarta.persistence.Persistence; @@ -23,6 +23,7 @@ public class LazyLoadingTest extends BaseTest { // For [#15] + @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/191 @Test public void testGetCustomerJson() throws Exception { diff --git a/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/LazyLoadingTest.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/LazyLoadingTest.java index e91529f3..5efa2a8e 100644 --- a/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/LazyLoadingTest.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/LazyLoadingTest.java @@ -3,17 +3,17 @@ import java.util.Map; import java.util.Set; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; import tools.jackson.databind.json.JsonMapper; +import tools.jackson.datatype.hibernate7.Hibernate7Module.Feature; import tools.jackson.datatype.hibernate7.data.Customer; import tools.jackson.datatype.hibernate7.data.Payment; import org.hibernate.Hibernate; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -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; import jakarta.persistence.Persistence; @@ -23,6 +23,7 @@ public class LazyLoadingTest extends BaseTest { // For [#15] + @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/191 @Test public void testGetCustomerJson() throws Exception { From dd1bf0fb5373bdc60b2c5e130a99050cc6d5ce88 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Thu, 30 Oct 2025 16:44:55 +0000 Subject: [PATCH 05/17] wrong test --- .../tools/jackson/datatype/hibernate4/LazyLoadingTest.java | 4 ++-- .../tools/jackson/datatype/hibernate5/LazyLoadingTest.java | 4 ++-- .../tools/jackson/datatype/hibernate6/LazyLoadingTest.java | 4 ++-- .../tools/jackson/datatype/hibernate7/LazyLoadingTest.java | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java index ef6fd687..218c7598 100644 --- a/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java @@ -22,7 +22,6 @@ public class LazyLoadingTest extends BaseTest { // [Issue#15] - @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/191 @Test public void testGetCustomerJson() throws Exception { @@ -61,7 +60,8 @@ public void testGetCustomerJson() throws Exception emf.close(); } } - + + @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/191 @Test public void testSerializeIdentifierFeature() throws JacksonException { Hibernate4Module module = new Hibernate4Module(); diff --git a/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/LazyLoadingTest.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/LazyLoadingTest.java index 0ad0b11b..b7eb16d8 100644 --- a/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/LazyLoadingTest.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/LazyLoadingTest.java @@ -22,7 +22,6 @@ public class LazyLoadingTest extends BaseTest { // For [#15] - @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/191 @Test public void testGetCustomerJson() throws Exception { @@ -64,7 +63,8 @@ public void testGetCustomerJson() throws Exception emf.close(); } } - + + @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/191 @Test public void testSerializeIdentifierFeature() throws JacksonException { Hibernate5Module module = new Hibernate5Module(); diff --git a/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/LazyLoadingTest.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/LazyLoadingTest.java index 2fe8a289..ae7db67e 100644 --- a/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/LazyLoadingTest.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/LazyLoadingTest.java @@ -23,7 +23,6 @@ public class LazyLoadingTest extends BaseTest { // For [#15] - @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/191 @Test public void testGetCustomerJson() throws Exception { @@ -64,7 +63,8 @@ public void testGetCustomerJson() throws Exception emf.close(); } } - + + @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/191 @Test public void testSerializeIdentifierFeature() throws JacksonException { Hibernate6Module module = new Hibernate6Module(); diff --git a/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/LazyLoadingTest.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/LazyLoadingTest.java index 5efa2a8e..706bd9b0 100644 --- a/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/LazyLoadingTest.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/LazyLoadingTest.java @@ -23,7 +23,6 @@ public class LazyLoadingTest extends BaseTest { // For [#15] - @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/191 @Test public void testGetCustomerJson() throws Exception { @@ -64,7 +63,8 @@ public void testGetCustomerJson() throws Exception emf.close(); } } - + + @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/191 @Test public void testSerializeIdentifierFeature() throws JacksonException { Hibernate7Module module = new Hibernate7Module(); From 26a284a418dc7491057152edd13e72180567bb88 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Thu, 30 Oct 2025 16:51:44 +0000 Subject: [PATCH 06/17] more test issues --- .../hibernate5/jakarta/ReplacePersistentCollectionTest.java | 1 + .../datatype/hibernate5/ReplacePersistentCollectionTest.java | 1 + 2 files changed, 2 insertions(+) diff --git a/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/ReplacePersistentCollectionTest.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/ReplacePersistentCollectionTest.java index 1f824a39..70638ee7 100644 --- a/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/ReplacePersistentCollectionTest.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/ReplacePersistentCollectionTest.java @@ -39,6 +39,7 @@ public void tearDown() throws Exception { } // [Issue#93], backwards compatible case + @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/192 @Test public void testNoReplacePersistentCollection() throws Exception { final ObjectMapper mapper = hibernateMapper(new Hibernate5JakartaModule() diff --git a/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/ReplacePersistentCollectionTest.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/ReplacePersistentCollectionTest.java index add3443f..d8f90024 100644 --- a/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/ReplacePersistentCollectionTest.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/ReplacePersistentCollectionTest.java @@ -38,6 +38,7 @@ public void tearDown() throws Exception { } // [Issue#93], backwards compatible case + @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/192 @Test public void testNoReplacePersistentCollection() throws Exception { final ObjectMapper mapper = hibernateMapper(new Hibernate5Module() From 94fb7cd51982b74ea1e8f82fbd34d85c91a68f86 Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Mon, 3 Nov 2025 20:18:39 -0800 Subject: [PATCH 07/17] Fix LazyLoadingTest for h4 (same fix probably applies to all) --- .../datatype/hibernate4/HibernateProxySerializer.java | 3 +-- .../tools/jackson/datatype/hibernate4/LazyLoadingTest.java | 5 ++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateProxySerializer.java b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateProxySerializer.java index d7443839..f393c7df 100644 --- a/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateProxySerializer.java +++ b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateProxySerializer.java @@ -16,7 +16,6 @@ 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; @@ -233,7 +232,7 @@ protected ValueSerializer findSerializer(SerializationContext provider, PropertySerializerMap.SerializerAndMapResult result = _dynamicSerializers.findAndAddPrimarySerializer( //TODO find better way to get JavaType - TypeFactory.createDefaultInstance().unsafeSimpleType(type), + provider.constructType(type), provider, _property); if (_dynamicSerializers != result.map) { diff --git a/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java index 218c7598..f687372d 100644 --- a/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/LazyLoadingTest.java @@ -6,6 +6,8 @@ import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; +import org.junit.jupiter.api.Test; + import tools.jackson.core.JacksonException; import tools.jackson.databind.ObjectMapper; import tools.jackson.databind.json.JsonMapper; @@ -14,8 +16,6 @@ import tools.jackson.datatype.hibernate4.data.Payment; import org.hibernate.Hibernate; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; @@ -61,7 +61,6 @@ public void testGetCustomerJson() throws Exception } } - @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/191 @Test public void testSerializeIdentifierFeature() throws JacksonException { Hibernate4Module module = new Hibernate4Module(); From e187ee25e082b3e1f6894233298e70917f958ff9 Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Mon, 3 Nov 2025 21:10:57 -0800 Subject: [PATCH 08/17] Fix h5 LazyLoadingTest --- .../datatype/hibernate4/HibernateProxySerializer.java | 7 +------ .../datatype/hibernate5/HibernateProxySerializer.java | 10 ++-------- .../jackson/datatype/hibernate5/LazyLoadingTest.java | 5 ++--- 3 files changed, 5 insertions(+), 17 deletions(-) diff --git a/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateProxySerializer.java b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateProxySerializer.java index f393c7df..1ac2db11 100644 --- a/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateProxySerializer.java +++ b/hibernate4/src/main/java/tools/jackson/datatype/hibernate4/HibernateProxySerializer.java @@ -8,11 +8,7 @@ import javax.persistence.EntityNotFoundException; 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.*; import tools.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper; import tools.jackson.databind.jsontype.TypeSerializer; import tools.jackson.databind.ser.impl.PropertySerializerMap; @@ -231,7 +227,6 @@ protected ValueSerializer findSerializer(SerializationContext provider, */ PropertySerializerMap.SerializerAndMapResult result = _dynamicSerializers.findAndAddPrimarySerializer( - //TODO find better way to get JavaType provider.constructType(type), provider, _property); diff --git a/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateProxySerializer.java b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateProxySerializer.java index 7f66264c..d8ae8f6f 100644 --- a/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateProxySerializer.java +++ b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateProxySerializer.java @@ -8,15 +8,10 @@ import javax.persistence.EntityNotFoundException; 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.*; 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; @@ -233,8 +228,7 @@ protected ValueSerializer findSerializer(SerializationContext provider, */ PropertySerializerMap.SerializerAndMapResult result = _dynamicSerializers.findAndAddPrimarySerializer( - //TODO find better way to get JavaType - TypeFactory.createDefaultInstance().unsafeSimpleType(type), + provider.constructType(type), provider, _property); if (_dynamicSerializers != result.map) { diff --git a/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/LazyLoadingTest.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/LazyLoadingTest.java index b7eb16d8..68847eaf 100644 --- a/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/LazyLoadingTest.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/LazyLoadingTest.java @@ -2,6 +2,8 @@ import java.util.*; +import org.junit.jupiter.api.Test; + import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; @@ -14,8 +16,6 @@ import tools.jackson.datatype.hibernate5.data.Payment; import org.hibernate.Hibernate; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; @@ -64,7 +64,6 @@ public void testGetCustomerJson() throws Exception } } - @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/191 @Test public void testSerializeIdentifierFeature() throws JacksonException { Hibernate5Module module = new Hibernate5Module(); From 86b665598b9094ddb0dc6fd09718c7310352f4b7 Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Mon, 3 Nov 2025 21:14:37 -0800 Subject: [PATCH 09/17] Fix h6/LazyLoadingTest --- .../hibernate6/Hibernate6ProxySerializer.java | 4 +--- .../jackson/datatype/hibernate6/LazyLoadingTest.java | 12 +++++------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6ProxySerializer.java b/hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6ProxySerializer.java index 065e08c7..e966a47a 100644 --- a/hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6ProxySerializer.java +++ b/hibernate6/src/main/java/tools/jackson/datatype/hibernate6/Hibernate6ProxySerializer.java @@ -21,7 +21,6 @@ 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; @@ -192,8 +191,7 @@ protected ValueSerializer findSerializer(SerializationContext provider, */ PropertySerializerMap.SerializerAndMapResult result = _dynamicSerializers.findAndAddPrimarySerializer( - //TODO find better way to get JavaType - TypeFactory.createDefaultInstance().unsafeSimpleType(type), + provider.constructType(type), provider, _property); if (_dynamicSerializers != result.map) { diff --git a/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/LazyLoadingTest.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/LazyLoadingTest.java index ae7db67e..f096ea2c 100644 --- a/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/LazyLoadingTest.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/LazyLoadingTest.java @@ -3,6 +3,8 @@ import java.util.Map; import java.util.Set; +import org.junit.jupiter.api.Test; + import tools.jackson.core.JacksonException; import tools.jackson.databind.ObjectMapper; import tools.jackson.databind.json.JsonMapper; @@ -11,9 +13,6 @@ import tools.jackson.datatype.hibernate6.data.Payment; import org.hibernate.Hibernate; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; - import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.Persistence; @@ -64,12 +63,11 @@ public void testGetCustomerJson() throws Exception } } - @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/191 @Test public void testSerializeIdentifierFeature() throws JacksonException { - Hibernate6Module module = new Hibernate6Module(); - module.enable(Feature.SERIALIZE_IDENTIFIER_FOR_LAZY_NOT_LOADED_OBJECTS); - ObjectMapper objectMapper = + Hibernate6Module module = new Hibernate6Module(); + module.enable(Feature.SERIALIZE_IDENTIFIER_FOR_LAZY_NOT_LOADED_OBJECTS); + ObjectMapper objectMapper = JsonMapper.builder() .addModule(module) .build(); From 86c6de43fdf9cb9c867e2b741cac47571b677725 Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Mon, 3 Nov 2025 21:19:23 -0800 Subject: [PATCH 10/17] and last LazyLoadingTest fix --- .../datatype/hibernate7/Hibernate7ProxySerializer.java | 10 ++-------- .../jackson/datatype/hibernate7/LazyLoadingTest.java | 8 +++----- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7ProxySerializer.java b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7ProxySerializer.java index 5250616a..d05a16c8 100644 --- a/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7ProxySerializer.java +++ b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7ProxySerializer.java @@ -11,15 +11,10 @@ import org.hibernate.type.MappingContext; 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.*; 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; @@ -190,8 +185,7 @@ protected ValueSerializer findSerializer(SerializationContext provider, */ PropertySerializerMap.SerializerAndMapResult result = _dynamicSerializers.findAndAddPrimarySerializer( - //TODO find better way to get JavaType - TypeFactory.createDefaultInstance().unsafeSimpleType(type), + provider.constructType(type), provider, _property); if (_dynamicSerializers != result.map) { diff --git a/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/LazyLoadingTest.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/LazyLoadingTest.java index 706bd9b0..3bf758ac 100644 --- a/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/LazyLoadingTest.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/LazyLoadingTest.java @@ -3,6 +3,8 @@ import java.util.Map; import java.util.Set; +import org.junit.jupiter.api.Test; + import tools.jackson.core.JacksonException; import tools.jackson.databind.ObjectMapper; import tools.jackson.databind.json.JsonMapper; @@ -11,9 +13,6 @@ import tools.jackson.datatype.hibernate7.data.Payment; import org.hibernate.Hibernate; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; - import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.Persistence; @@ -64,10 +63,9 @@ public void testGetCustomerJson() throws Exception } } - @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/191 @Test public void testSerializeIdentifierFeature() throws JacksonException { - Hibernate7Module module = new Hibernate7Module(); + Hibernate7Module module = new Hibernate7Module(); module.enable(Feature.SERIALIZE_IDENTIFIER_FOR_LAZY_NOT_LOADED_OBJECTS); ObjectMapper objectMapper = JsonMapper.builder() From e9af9cecad5d12067268cb01045afe076b28ad1c Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Tue, 4 Nov 2025 07:04:53 -0800 Subject: [PATCH 11/17] Fixed one more proxy serializer --- .../hibernate5/jakarta/Hibernate5JProxySerializer.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JProxySerializer.java b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JProxySerializer.java index 02393e09..53fe6f26 100644 --- a/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JProxySerializer.java +++ b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JProxySerializer.java @@ -1,7 +1,6 @@ package tools.jackson.datatype.hibernate5.jakarta; import java.beans.Introspector; -import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.HashMap; @@ -22,7 +21,6 @@ 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; @@ -193,8 +191,7 @@ protected ValueSerializer findSerializer(SerializationContext provider, */ PropertySerializerMap.SerializerAndMapResult result = _dynamicSerializers.findAndAddPrimarySerializer( - //TODO find better way to get JavaType - TypeFactory.createDefaultInstance().unsafeSimpleType(type), + provider.constructType(type), provider, _property); if (_dynamicSerializers != result.map) { From 78c77e7a661c80740063592c45d73ec34cdf81b9 Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Tue, 4 Nov 2025 07:09:39 -0800 Subject: [PATCH 12/17] Warnings removal --- .../hibernate5/jakarta/Hibernate5JAnnotationIntrospector.java | 1 - .../hibernate5/jakarta/Hibernate5JSerializerModifier.java | 2 ++ .../hibernate5/jakarta/PersistentCollectionSerializer.java | 2 -- .../datatype/hibernate5/HibernateSerializerModifier.java | 2 ++ .../datatype/hibernate5/PersistentCollectionSerializer.java | 2 -- 5 files changed, 4 insertions(+), 5 deletions(-) diff --git a/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JAnnotationIntrospector.java b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JAnnotationIntrospector.java index 49e4c43a..c6dae0f6 100644 --- a/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JAnnotationIntrospector.java +++ b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/Hibernate5JAnnotationIntrospector.java @@ -5,7 +5,6 @@ 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; 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 index 93901359..2c347f66 100644 --- 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 @@ -11,6 +11,8 @@ public class Hibernate5JSerializerModifier extends ValueSerializerModifier { + private static final long serialVersionUID = 3L; + protected final int _features; protected final SessionFactory _sessionFactory; diff --git a/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/PersistentCollectionSerializer.java b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/PersistentCollectionSerializer.java index d8fdb5a9..d423260d 100644 --- a/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/PersistentCollectionSerializer.java +++ b/hibernate5-jakarta/src/main/java/tools/jackson/datatype/hibernate5/jakarta/PersistentCollectionSerializer.java @@ -37,8 +37,6 @@ public class PersistentCollectionSerializer extends StdContainerSerializer { - private static final long serialVersionUID = 1L; - /** * Type for which underlying serializer was created. */ diff --git a/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateSerializerModifier.java b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateSerializerModifier.java index 762b9722..89670b01 100644 --- a/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateSerializerModifier.java +++ b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/HibernateSerializerModifier.java @@ -11,6 +11,8 @@ public class HibernateSerializerModifier extends ValueSerializerModifier { + private static final long serialVersionUID = 3L; + protected final int _features; protected final SessionFactory _sessionFactory; diff --git a/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/PersistentCollectionSerializer.java b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/PersistentCollectionSerializer.java index 9e21bfdc..f1b70fc8 100644 --- a/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/PersistentCollectionSerializer.java +++ b/hibernate5/src/main/java/tools/jackson/datatype/hibernate5/PersistentCollectionSerializer.java @@ -31,8 +31,6 @@ public class PersistentCollectionSerializer extends StdContainerSerializer { - private static final long serialVersionUID = 1L; // since 2.7 - /** * Type for which underlying serializer was created. * From 6d7adf913274f96603f41e6ea4e5d4b9dc3a3366 Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Tue, 4 Nov 2025 10:14:08 -0800 Subject: [PATCH 13/17] Formatting fixes --- .../ReplacePersistentCollectionTest.java | 156 +++++++++--------- .../ReplacePersistentCollectionTest.java | 10 +- 2 files changed, 83 insertions(+), 83 deletions(-) diff --git a/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/ReplacePersistentCollectionTest.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/ReplacePersistentCollectionTest.java index bae4ee7e..612ddc24 100644 --- a/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/ReplacePersistentCollectionTest.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/ReplacePersistentCollectionTest.java @@ -19,104 +19,104 @@ import static org.junit.jupiter.api.Assertions.*; -public class ReplacePersistentCollectionTest { - - private EntityManagerFactory emf; - - private EntityManager em; - - @BeforeEach - public void setUp() throws Exception { - emf = Persistence.createEntityManagerFactory("persistenceUnit"); - em = emf.createEntityManager(); - } - - @AfterEach - public void tearDown() throws Exception { - em.close(); - emf.close(); - } - - // [Issue#93], backwards compatible case - @Test - public void testNoReplacePersistentCollection() throws Exception { - final ObjectMapper mapper = hibernateMapper(new Hibernate4Module() - .configure(Hibernate4Module.Feature.FORCE_LAZY_LOADING, true) - ); - - Customer customer = em.find(Customer.class, 103); - assertFalse(Hibernate.isInitialized(customer.getPayments())); - String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(customer); - assertTrue(json.contains("org.hibernate.collection")); - // should force loading... - Set payments = customer.getPayments(); - /* +public class ReplacePersistentCollectionTest +{ + private EntityManagerFactory emf; + + private EntityManager em; + + @BeforeEach + public void setUp() throws Exception { + emf = Persistence.createEntityManagerFactory("persistenceUnit"); + em = emf.createEntityManager(); + } + + @AfterEach + public void tearDown() throws Exception { + em.close(); + emf.close(); + } + + // [Issue#93], backwards compatible case + @Test + public void testNoReplacePersistentCollection() throws Exception { + final ObjectMapper mapper = hibernateMapper(new Hibernate4Module() + .configure(Hibernate4Module.Feature.FORCE_LAZY_LOADING, true) + ); + + Customer customer = em.find(Customer.class, 103); + assertFalse(Hibernate.isInitialized(customer.getPayments())); + String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(customer); + assertTrue(json.contains("org.hibernate.collection")); + // should force loading... + Set payments = customer.getPayments(); + /* System.out.println("--- JSON ---"); System.out.println(json); System.out.println("--- /JSON ---"); - */ - - assertTrue(Hibernate.isInitialized(payments)); - // TODO: verify - assertNotNull(json); - - boolean exceptionThrown = false; - try { - /*Map stuff =*/ mapper.readValue(json, Map.class); - } catch (DatabindException e) { - exceptionThrown = true; - } - assertTrue(exceptionThrown); - } - - // [Issue#93], backwards compatible case - @Test - public void testReplacePersistentCollection() throws Exception { - final ObjectMapper mapper = hibernateMapper(new Hibernate4Module() - .configure(Hibernate4Module.Feature.FORCE_LAZY_LOADING, true) - .configure(Hibernate4Module.Feature.REPLACE_PERSISTENT_COLLECTIONS, true)); - - Customer customer = em.find(Customer.class, 103); - assertFalse(Hibernate.isInitialized(customer.getPayments())); - String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(customer); - assertFalse(json.contains("org.hibernate.collection")); - // should force loading... - Set payments = customer.getPayments(); + */ + + assertTrue(Hibernate.isInitialized(payments)); + // TODO: verify + assertNotNull(json); + + boolean exceptionThrown = false; + try { + /*Map stuff =*/ mapper.readValue(json, Map.class); + } catch (DatabindException e) { + exceptionThrown = true; + } + assertTrue(exceptionThrown); + } + + // [Issue#93], backwards compatible case + @Test + public void testReplacePersistentCollection() throws Exception { + final ObjectMapper mapper = hibernateMapper(new Hibernate4Module() + .configure(Hibernate4Module.Feature.FORCE_LAZY_LOADING, true) + .configure(Hibernate4Module.Feature.REPLACE_PERSISTENT_COLLECTIONS, true)); + + Customer customer = em.find(Customer.class, 103); + assertFalse(Hibernate.isInitialized(customer.getPayments())); + String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(customer); + assertFalse(json.contains("org.hibernate.collection")); + // should force loading... + Set payments = customer.getPayments(); /* System.out.println("--- JSON ---"); System.out.println(json); System.out.println("--- /JSON ---"); */ - assertTrue(Hibernate.isInitialized(payments)); - // TODO: verify - assertNotNull(json); + assertTrue(Hibernate.isInitialized(payments)); + // TODO: verify + assertNotNull(json); /* * Currently this cannot be verified due to Issue#94 default typing fails on 2.7.0 - 2.8.2-SNAPSHOT, * commented out until that is fixed. */ - boolean issue94failed = false; - try { - /* Map stuff =*/ mapper.readValue(json, Map.class); - } catch (DatabindException e) { - issue94failed = true; - } + boolean issue94failed = false; + try { + /* Map stuff =*/ mapper.readValue(json, Map.class); + } catch (DatabindException e) { + issue94failed = true; + } - assertTrue(issue94failed, "If this fails, means #94 is fixed. Replace to the below commented lines"); + assertTrue(issue94failed, "If this fails, means #94 is fixed. Replace to the below commented lines"); // Map stuff = mapper.readValue(json, Map.class); // // assertTrue(stuff.containsKey("payments")); // assertTrue(stuff.containsKey("orders")); // assertNull(stuff.get("orderes")); - } - - private ObjectMapper hibernateMapper(Hibernate4Module module) { - return JsonMapper.builder() - .addModule(module) - .activateDefaultTyping(new DefaultBaseTypeLimitingValidator(), DefaultTyping.NON_FINAL) - .build(); - } + } + + private ObjectMapper hibernateMapper(Hibernate4Module module) { + return JsonMapper.builder() + .addModule(module) + .activateDefaultTyping(new DefaultBaseTypeLimitingValidator(), DefaultTyping.NON_FINAL) + .build(); + } } diff --git a/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/ReplacePersistentCollectionTest.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/ReplacePersistentCollectionTest.java index d8f90024..1b476442 100644 --- a/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/ReplacePersistentCollectionTest.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/ReplacePersistentCollectionTest.java @@ -33,17 +33,17 @@ public void setUp() throws Exception { @AfterEach public void tearDown() throws Exception { - em.close(); - emf.close(); + em.close(); + emf.close(); } // [Issue#93], backwards compatible case @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/192 @Test public void testNoReplacePersistentCollection() throws Exception { - final ObjectMapper mapper = hibernateMapper(new Hibernate5Module() - .configure(Hibernate5Module.Feature.FORCE_LAZY_LOADING, true) - ); + final ObjectMapper mapper = hibernateMapper(new Hibernate5Module() + .configure(Hibernate5Module.Feature.FORCE_LAZY_LOADING, true) + ); Customer customer = em.find(Customer.class, 103); assertFalse(Hibernate.isInitialized(customer.getPayments())); From cb3dc4849357b841b08a615715327137ada123bf Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Tue, 4 Nov 2025 10:15:17 -0800 Subject: [PATCH 14/17] formatting fix --- .../ReplacePersistentCollectionTest.java | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/ReplacePersistentCollectionTest.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/ReplacePersistentCollectionTest.java index 70638ee7..85c1d403 100644 --- a/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/ReplacePersistentCollectionTest.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/ReplacePersistentCollectionTest.java @@ -42,9 +42,9 @@ public void tearDown() throws Exception { @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/192 @Test public void testNoReplacePersistentCollection() throws Exception { - final ObjectMapper mapper = hibernateMapper(new Hibernate5JakartaModule() - .configure(Hibernate5JakartaModule.Feature.FORCE_LAZY_LOADING, true) - ); + final ObjectMapper mapper = hibernateMapper(new Hibernate5JakartaModule() + .configure(Hibernate5JakartaModule.Feature.FORCE_LAZY_LOADING, true) + ); Customer customer = em.find(Customer.class, 103); assertFalse(Hibernate.isInitialized(customer.getPayments())); @@ -65,21 +65,21 @@ public void testNoReplacePersistentCollection() throws Exception { // [Issue#93], backwards compatible case @Test public void testReplacePersistentCollection() throws Exception { - final ObjectMapper mapper = hibernateMapper(new Hibernate5JakartaModule() - .configure(Hibernate5JakartaModule.Feature.FORCE_LAZY_LOADING, true) - .configure(Hibernate5JakartaModule.Feature.REPLACE_PERSISTENT_COLLECTIONS, true) - ); - - Customer customer = em.find(Customer.class, 103); - assertFalse(Hibernate.isInitialized(customer.getPayments())); - String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(customer); - assertFalse(json.contains("org.hibernate.collection")); - // should force loading... - Set payments = customer.getPayments(); - - assertTrue(Hibernate.isInitialized(payments)); - Customer stuff = mapper.readValue(json, Customer.class); - assertNotNull(stuff); + final ObjectMapper mapper = hibernateMapper(new Hibernate5JakartaModule() + .configure(Hibernate5JakartaModule.Feature.FORCE_LAZY_LOADING, true) + .configure(Hibernate5JakartaModule.Feature.REPLACE_PERSISTENT_COLLECTIONS, true) + ); + + Customer customer = em.find(Customer.class, 103); + assertFalse(Hibernate.isInitialized(customer.getPayments())); + String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(customer); + assertFalse(json.contains("org.hibernate.collection")); + // should force loading... + Set payments = customer.getPayments(); + + assertTrue(Hibernate.isInitialized(payments)); + Customer stuff = mapper.readValue(json, Customer.class); + assertNotNull(stuff); // Map stuff = mapper.readValue(json, Map.class); // From df0e7cb694cf0fe71afcedaf55c66239bbf73cc2 Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Tue, 4 Nov 2025 10:22:36 -0800 Subject: [PATCH 15/17] Move failing tests (wrt #192) under `tofix` for now --- .../hibernate4/ReplacePersistentCollectionTest.java | 3 ++- .../{ => tofix}/ReplacePersistentCollectionTest.java | 11 +++++++---- .../{ => tofix}/ReplacePersistentCollectionTest.java | 11 +++++++---- 3 files changed, 16 insertions(+), 9 deletions(-) rename hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/{ => tofix}/ReplacePersistentCollectionTest.java (90%) rename hibernate5/src/test/java/tools/jackson/datatype/hibernate5/{ => tofix}/ReplacePersistentCollectionTest.java (90%) diff --git a/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/ReplacePersistentCollectionTest.java b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/ReplacePersistentCollectionTest.java index 612ddc24..872bdd0f 100644 --- a/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/ReplacePersistentCollectionTest.java +++ b/hibernate4/src/test/java/tools/jackson/datatype/hibernate4/ReplacePersistentCollectionTest.java @@ -116,7 +116,8 @@ public void testReplacePersistentCollection() throws Exception { private ObjectMapper hibernateMapper(Hibernate4Module module) { return JsonMapper.builder() .addModule(module) - .activateDefaultTyping(new DefaultBaseTypeLimitingValidator(), DefaultTyping.NON_FINAL) + .activateDefaultTyping(new DefaultBaseTypeLimitingValidator(), + DefaultTyping.NON_FINAL) .build(); } } diff --git a/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/ReplacePersistentCollectionTest.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/tofix/ReplacePersistentCollectionTest.java similarity index 90% rename from hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/ReplacePersistentCollectionTest.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/tofix/ReplacePersistentCollectionTest.java index 85c1d403..c32d9518 100644 --- a/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/ReplacePersistentCollectionTest.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/tofix/ReplacePersistentCollectionTest.java @@ -1,4 +1,4 @@ -package tools.jackson.datatype.hibernate5.jakarta; +package tools.jackson.datatype.hibernate5.jakarta.tofix; import java.util.Set; @@ -9,6 +9,8 @@ import tools.jackson.databind.ObjectMapper; import tools.jackson.databind.json.JsonMapper; import tools.jackson.databind.jsontype.DefaultBaseTypeLimitingValidator; +import tools.jackson.datatype.hibernate5.jakarta.BaseTest; +import tools.jackson.datatype.hibernate5.jakarta.Hibernate5JakartaModule; import tools.jackson.datatype.hibernate5.jakarta.data.Customer; import tools.jackson.datatype.hibernate5.jakarta.data.Payment; @@ -38,7 +40,7 @@ public void tearDown() throws Exception { emf.close(); } - // [Issue#93], backwards compatible case + // [datatypes-hibernate#93], backwards compatible case @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/192 @Test public void testNoReplacePersistentCollection() throws Exception { @@ -62,7 +64,7 @@ public void testNoReplacePersistentCollection() throws Exception { } } - // [Issue#93], backwards compatible case + // [datatypes-hibernate#93], backwards compatible case @Test public void testReplacePersistentCollection() throws Exception { final ObjectMapper mapper = hibernateMapper(new Hibernate5JakartaModule() @@ -91,7 +93,8 @@ public void testReplacePersistentCollection() throws Exception { private ObjectMapper hibernateMapper(Hibernate5JakartaModule module) { return JsonMapper.builder() .addModule(module) - .activateDefaultTyping(new DefaultBaseTypeLimitingValidator(), DefaultTyping.NON_FINAL) + .activateDefaultTyping(new DefaultBaseTypeLimitingValidator(), + DefaultTyping.NON_FINAL) .build(); } } diff --git a/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/ReplacePersistentCollectionTest.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/tofix/ReplacePersistentCollectionTest.java similarity index 90% rename from hibernate5/src/test/java/tools/jackson/datatype/hibernate5/ReplacePersistentCollectionTest.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/tofix/ReplacePersistentCollectionTest.java index 1b476442..fc81cc1b 100644 --- a/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/ReplacePersistentCollectionTest.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/tofix/ReplacePersistentCollectionTest.java @@ -1,4 +1,4 @@ -package tools.jackson.datatype.hibernate5; +package tools.jackson.datatype.hibernate5.tofix; import java.util.*; @@ -7,6 +7,8 @@ import tools.jackson.databind.ObjectMapper; import tools.jackson.databind.json.JsonMapper; import tools.jackson.databind.jsontype.DefaultBaseTypeLimitingValidator; +import tools.jackson.datatype.hibernate5.BaseTest; +import tools.jackson.datatype.hibernate5.Hibernate5Module; import tools.jackson.datatype.hibernate5.data.Customer; import tools.jackson.datatype.hibernate5.data.Payment; import org.hibernate.Hibernate; @@ -37,7 +39,7 @@ public void tearDown() throws Exception { emf.close(); } - // [Issue#93], backwards compatible case + // [datatypes-hibernate#93], backwards compatible case @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/192 @Test public void testNoReplacePersistentCollection() throws Exception { @@ -61,7 +63,7 @@ public void testNoReplacePersistentCollection() throws Exception { } } - // [Issue#93], backwards compatible case + // [datatypes-hibernate#93], backwards compatible case @Test public void testReplacePersistentCollection() throws Exception { final ObjectMapper mapper = hibernateMapper(new Hibernate5Module() @@ -93,7 +95,8 @@ public void testReplacePersistentCollection() throws Exception { private ObjectMapper hibernateMapper(Hibernate5Module module) { return JsonMapper.builder() .addModule(module) - .activateDefaultTyping(new DefaultBaseTypeLimitingValidator(), DefaultTyping.NON_FINAL) + .activateDefaultTyping(new DefaultBaseTypeLimitingValidator(), + DefaultTyping.NON_FINAL) .build(); } } From 223ecbe3f30e3220a2cbb0b7ac47329bcb6b7a5b Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Tue, 4 Nov 2025 10:40:17 -0800 Subject: [PATCH 16/17] Fix #192 --- .../ReplacePersistentCollectionTest.java | 12 +++--- .../testutil/NoCheckSubTypeValidator.java | 34 +++++++++++++++ .../ReplacePersistentCollectionTest.java | 15 +++---- .../testutil/NoCheckSubTypeValidator.java | 34 +++++++++++++++ .../ReplacePersistentCollectionTest.java | 43 ++++++++++--------- .../Hibernate7SerializerModifier.java | 2 + .../PersistentCollectionSerializer.java | 2 - .../ReplacePersistentCollectionTest.java | 40 ++++++++--------- 8 files changed, 124 insertions(+), 58 deletions(-) rename hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/{tofix => }/ReplacePersistentCollectionTest.java (92%) create mode 100644 hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/testutil/NoCheckSubTypeValidator.java rename hibernate5/src/test/java/tools/jackson/datatype/hibernate5/{tofix => }/ReplacePersistentCollectionTest.java (89%) create mode 100644 hibernate5/src/test/java/tools/jackson/datatype/hibernate5/testutil/NoCheckSubTypeValidator.java diff --git a/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/tofix/ReplacePersistentCollectionTest.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/ReplacePersistentCollectionTest.java similarity index 92% rename from hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/tofix/ReplacePersistentCollectionTest.java rename to hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/ReplacePersistentCollectionTest.java index c32d9518..7da87359 100644 --- a/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/tofix/ReplacePersistentCollectionTest.java +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/ReplacePersistentCollectionTest.java @@ -1,24 +1,23 @@ -package tools.jackson.datatype.hibernate5.jakarta.tofix; +package tools.jackson.datatype.hibernate5.jakarta; import java.util.Set; -import org.hibernate.Hibernate; +import org.junit.jupiter.api.*; 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.BaseTest; import tools.jackson.datatype.hibernate5.jakarta.Hibernate5JakartaModule; import tools.jackson.datatype.hibernate5.jakarta.data.Customer; import tools.jackson.datatype.hibernate5.jakarta.data.Payment; - +import tools.jackson.datatype.hibernate5.jakarta.testutil.NoCheckSubTypeValidator; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; import jakarta.persistence.Persistence; -import org.junit.jupiter.api.*; +import org.hibernate.Hibernate; import static org.junit.jupiter.api.Assertions.*; @@ -41,7 +40,6 @@ public void tearDown() throws Exception { } // [datatypes-hibernate#93], backwards compatible case - @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/192 @Test public void testNoReplacePersistentCollection() throws Exception { final ObjectMapper mapper = hibernateMapper(new Hibernate5JakartaModule() @@ -93,7 +91,7 @@ public void testReplacePersistentCollection() throws Exception { private ObjectMapper hibernateMapper(Hibernate5JakartaModule module) { return JsonMapper.builder() .addModule(module) - .activateDefaultTyping(new DefaultBaseTypeLimitingValidator(), + .activateDefaultTyping(new NoCheckSubTypeValidator(), DefaultTyping.NON_FINAL) .build(); } diff --git a/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/testutil/NoCheckSubTypeValidator.java b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/testutil/NoCheckSubTypeValidator.java new file mode 100644 index 00000000..c6ee21b5 --- /dev/null +++ b/hibernate5-jakarta/src/test/java/tools/jackson/datatype/hibernate5/jakarta/testutil/NoCheckSubTypeValidator.java @@ -0,0 +1,34 @@ +package tools.jackson.datatype.hibernate5.jakarta.testutil; + +import tools.jackson.databind.DatabindContext; +import tools.jackson.databind.JavaType; +import tools.jackson.databind.jsontype.PolymorphicTypeValidator; + +/** + * Test-only {@link PolymorphicTypeValidator} used by tests that should not block + * use of any subtypes. + */ +public final class NoCheckSubTypeValidator + extends PolymorphicTypeValidator.Base +{ + private static final long serialVersionUID = 3L; + + public final static NoCheckSubTypeValidator instance = new NoCheckSubTypeValidator(); + + @Override + public Validity validateBaseType(DatabindContext ctxt, JavaType baseType) { + return Validity.INDETERMINATE; + } + + @Override + public Validity validateSubClassName(DatabindContext ctxt, + JavaType baseType, String subClassName) { + return Validity.ALLOWED; + } + + @Override + public Validity validateSubType(DatabindContext ctxt, JavaType baseType, + JavaType subType) { + return Validity.ALLOWED; + } +} \ No newline at end of file diff --git a/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/tofix/ReplacePersistentCollectionTest.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/ReplacePersistentCollectionTest.java similarity index 89% rename from hibernate5/src/test/java/tools/jackson/datatype/hibernate5/tofix/ReplacePersistentCollectionTest.java rename to hibernate5/src/test/java/tools/jackson/datatype/hibernate5/ReplacePersistentCollectionTest.java index fc81cc1b..8c8adeef 100644 --- a/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/tofix/ReplacePersistentCollectionTest.java +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/ReplacePersistentCollectionTest.java @@ -1,19 +1,19 @@ -package tools.jackson.datatype.hibernate5.tofix; +package tools.jackson.datatype.hibernate5; import java.util.*; +import org.junit.jupiter.api.*; + 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.BaseTest; -import tools.jackson.datatype.hibernate5.Hibernate5Module; + import tools.jackson.datatype.hibernate5.data.Customer; import tools.jackson.datatype.hibernate5.data.Payment; -import org.hibernate.Hibernate; +import tools.jackson.datatype.hibernate5.testutil.NoCheckSubTypeValidator; -import org.junit.jupiter.api.*; +import org.hibernate.Hibernate; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; @@ -40,7 +40,6 @@ public void tearDown() throws Exception { } // [datatypes-hibernate#93], backwards compatible case - @Disabled // https://github.com/FasterXML/jackson-datatype-hibernate/issues/192 @Test public void testNoReplacePersistentCollection() throws Exception { final ObjectMapper mapper = hibernateMapper(new Hibernate5Module() @@ -95,7 +94,7 @@ public void testReplacePersistentCollection() throws Exception { private ObjectMapper hibernateMapper(Hibernate5Module module) { return JsonMapper.builder() .addModule(module) - .activateDefaultTyping(new DefaultBaseTypeLimitingValidator(), + .activateDefaultTyping(new NoCheckSubTypeValidator(), DefaultTyping.NON_FINAL) .build(); } diff --git a/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/testutil/NoCheckSubTypeValidator.java b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/testutil/NoCheckSubTypeValidator.java new file mode 100644 index 00000000..5710f5db --- /dev/null +++ b/hibernate5/src/test/java/tools/jackson/datatype/hibernate5/testutil/NoCheckSubTypeValidator.java @@ -0,0 +1,34 @@ +package tools.jackson.datatype.hibernate5.testutil; + +import tools.jackson.databind.DatabindContext; +import tools.jackson.databind.JavaType; +import tools.jackson.databind.jsontype.PolymorphicTypeValidator; + +/** + * Test-only {@link PolymorphicTypeValidator} used by tests that should not block + * use of any subtypes. + */ +public final class NoCheckSubTypeValidator + extends PolymorphicTypeValidator.Base +{ + private static final long serialVersionUID = 3L; + + public final static NoCheckSubTypeValidator instance = new NoCheckSubTypeValidator(); + + @Override + public Validity validateBaseType(DatabindContext ctxt, JavaType baseType) { + return Validity.INDETERMINATE; + } + + @Override + public Validity validateSubClassName(DatabindContext ctxt, + JavaType baseType, String subClassName) { + return Validity.ALLOWED; + } + + @Override + public Validity validateSubType(DatabindContext ctxt, JavaType baseType, + JavaType subType) { + return Validity.ALLOWED; + } +} \ No newline at end of file diff --git a/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/ReplacePersistentCollectionTest.java b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/ReplacePersistentCollectionTest.java index 7eb2c9f9..a969cb38 100644 --- a/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/ReplacePersistentCollectionTest.java +++ b/hibernate6/src/test/java/tools/jackson/datatype/hibernate6/ReplacePersistentCollectionTest.java @@ -40,12 +40,12 @@ public void tearDown() throws Exception { emf.close(); } - // [Issue#93], backwards compatible case + // [datatypes-hibernate#93], backwards compatible case @Test public void testNoReplacePersistentCollection() throws Exception { - final ObjectMapper mapper = hibernateMapper(new Hibernate6Module() - .configure(Hibernate6Module.Feature.FORCE_LAZY_LOADING, true) - ); + final ObjectMapper mapper = hibernateMapper(new Hibernate6Module() + .configure(Hibernate6Module.Feature.FORCE_LAZY_LOADING, true) + ); Customer customer = em.find(Customer.class, 103); assertFalse(Hibernate.isInitialized(customer.getPayments())); @@ -63,24 +63,24 @@ public void testNoReplacePersistentCollection() throws Exception { } } - // [Issue#93], backwards compatible case + // [datatypes-hibernate#93], backwards compatible case @Test public void testReplacePersistentCollection() throws Exception { - final ObjectMapper mapper = hibernateMapper(new Hibernate6Module() - .configure(Hibernate6Module.Feature.FORCE_LAZY_LOADING, true) - .configure(Hibernate6Module.Feature.REPLACE_PERSISTENT_COLLECTIONS, true) - ); - - Customer customer = em.find(Customer.class, 103); - assertFalse(Hibernate.isInitialized(customer.getPayments())); - String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(customer); - assertFalse(json.contains("org.hibernate.collection")); - // should force loading... - Set payments = customer.getPayments(); - - assertTrue(Hibernate.isInitialized(payments)); - Customer stuff = mapper.readValue(json, Customer.class); - assertNotNull(stuff); + final ObjectMapper mapper = hibernateMapper(new Hibernate6Module() + .configure(Hibernate6Module.Feature.FORCE_LAZY_LOADING, true) + .configure(Hibernate6Module.Feature.REPLACE_PERSISTENT_COLLECTIONS, true) + ); + + Customer customer = em.find(Customer.class, 103); + assertFalse(Hibernate.isInitialized(customer.getPayments())); + String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(customer); + assertFalse(json.contains("org.hibernate.collection")); + // should force loading... + Set payments = customer.getPayments(); + + assertTrue(Hibernate.isInitialized(payments)); + Customer stuff = mapper.readValue(json, Customer.class); + assertNotNull(stuff); // Map stuff = mapper.readValue(json, Map.class); // @@ -92,7 +92,8 @@ public void testReplacePersistentCollection() throws Exception { private ObjectMapper hibernateMapper(Hibernate6Module module) { return JsonMapper.builder() .addModule(module) - .activateDefaultTyping(new DefaultBaseTypeLimitingValidator(), DefaultTyping.NON_FINAL) + .activateDefaultTyping(new DefaultBaseTypeLimitingValidator(), + DefaultTyping.NON_FINAL) .build(); } } diff --git a/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7SerializerModifier.java b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7SerializerModifier.java index cd377d33..83284e06 100644 --- a/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7SerializerModifier.java +++ b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/Hibernate7SerializerModifier.java @@ -11,6 +11,8 @@ public class Hibernate7SerializerModifier extends ValueSerializerModifier { + private static final long serialVersionUID = 3L; + protected final int _features; protected final SessionFactory _sessionFactory; diff --git a/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/PersistentCollectionSerializer.java b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/PersistentCollectionSerializer.java index 48b93710..f1b0a45e 100644 --- a/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/PersistentCollectionSerializer.java +++ b/hibernate7/src/main/java/tools/jackson/datatype/hibernate7/PersistentCollectionSerializer.java @@ -36,8 +36,6 @@ public class PersistentCollectionSerializer extends StdContainerSerializer { - private static final long serialVersionUID = 1L; - /** * Type for which underlying serializer was created. */ diff --git a/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/ReplacePersistentCollectionTest.java b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/ReplacePersistentCollectionTest.java index 1c895046..ce7c50a1 100644 --- a/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/ReplacePersistentCollectionTest.java +++ b/hibernate7/src/test/java/tools/jackson/datatype/hibernate7/ReplacePersistentCollectionTest.java @@ -39,12 +39,12 @@ public void tearDown() throws Exception { emf.close(); } - // [Issue#93], backwards compatible case + // [datatypes-hibernate#93], backwards compatible case @Test public void testNoReplacePersistentCollection() throws Exception { - final ObjectMapper mapper = hibernateMapper(new Hibernate7Module() - .configure(Hibernate7Module.Feature.FORCE_LAZY_LOADING, true) - ); + final ObjectMapper mapper = hibernateMapper(new Hibernate7Module() + .configure(Hibernate7Module.Feature.FORCE_LAZY_LOADING, true) + ); Customer customer = em.find(Customer.class, 103); assertFalse(Hibernate.isInitialized(customer.getPayments())); @@ -62,24 +62,24 @@ public void testNoReplacePersistentCollection() throws Exception { } } - // [Issue#93], backwards compatible case + // [datatypes-hibernate#93], backwards compatible case @Test public void testReplacePersistentCollection() throws Exception { - final ObjectMapper mapper = hibernateMapper(new Hibernate7Module() - .configure(Hibernate7Module.Feature.FORCE_LAZY_LOADING, true) - .configure(Hibernate7Module.Feature.REPLACE_PERSISTENT_COLLECTIONS, true) - ); - - Customer customer = em.find(Customer.class, 103); - assertFalse(Hibernate.isInitialized(customer.getPayments())); - String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(customer); - assertFalse(json.contains("org.hibernate.collection")); - // should force loading... - Set payments = customer.getPayments(); - - assertTrue(Hibernate.isInitialized(payments)); - Customer stuff = mapper.readValue(json, Customer.class); - assertNotNull(stuff); + final ObjectMapper mapper = hibernateMapper(new Hibernate7Module() + .configure(Hibernate7Module.Feature.FORCE_LAZY_LOADING, true) + .configure(Hibernate7Module.Feature.REPLACE_PERSISTENT_COLLECTIONS, true) + ); + + Customer customer = em.find(Customer.class, 103); + assertFalse(Hibernate.isInitialized(customer.getPayments())); + String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(customer); + assertFalse(json.contains("org.hibernate.collection")); + // should force loading... + Set payments = customer.getPayments(); + + assertTrue(Hibernate.isInitialized(payments)); + Customer stuff = mapper.readValue(json, Customer.class); + assertNotNull(stuff); // Map stuff = mapper.readValue(json, Map.class); // From 42b782cb9f0fb132d0bacf2c5af1ad87ad8458ed Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Tue, 4 Nov 2025 10:43:29 -0800 Subject: [PATCH 17/17] Change version to 3.0.0-SNAPSHOT for retroactive publish --- hibernate4/pom.xml | 2 +- hibernate5-jakarta/pom.xml | 2 +- hibernate5/pom.xml | 2 +- hibernate6/pom.xml | 2 +- hibernate7/pom.xml | 2 +- pom.xml | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/hibernate4/pom.xml b/hibernate4/pom.xml index b2d83441..11ba1a9e 100644 --- a/hibernate4/pom.xml +++ b/hibernate4/pom.xml @@ -8,7 +8,7 @@ tools.jackson.datatype jackson-datatype-hibernate-parent - 3.1.0-SNAPSHOT + 3.0.0-SNAPSHOT jackson-datatype-hibernate4 Jackson-datatype-Hibernate4 diff --git a/hibernate5-jakarta/pom.xml b/hibernate5-jakarta/pom.xml index a7541383..daee0f7d 100644 --- a/hibernate5-jakarta/pom.xml +++ b/hibernate5-jakarta/pom.xml @@ -8,7 +8,7 @@ tools.jackson.datatype jackson-datatype-hibernate-parent - 3.1.0-SNAPSHOT + 3.0.0-SNAPSHOT jackson-datatype-hibernate5-jakarta Jackson-datatype-Hibernate5-jakarta diff --git a/hibernate5/pom.xml b/hibernate5/pom.xml index 4972f394..0c692d26 100644 --- a/hibernate5/pom.xml +++ b/hibernate5/pom.xml @@ -8,7 +8,7 @@ tools.jackson.datatype jackson-datatype-hibernate-parent - 3.1.0-SNAPSHOT + 3.0.0-SNAPSHOT jackson-datatype-hibernate5 Jackson-datatype-Hibernate5 diff --git a/hibernate6/pom.xml b/hibernate6/pom.xml index 42fcba12..3bbe4e0c 100644 --- a/hibernate6/pom.xml +++ b/hibernate6/pom.xml @@ -8,7 +8,7 @@ tools.jackson.datatype jackson-datatype-hibernate-parent - 3.1.0-SNAPSHOT + 3.0.0-SNAPSHOT jackson-datatype-hibernate6 Jackson-datatype-hibernate6 diff --git a/hibernate7/pom.xml b/hibernate7/pom.xml index 1f201846..f600d076 100644 --- a/hibernate7/pom.xml +++ b/hibernate7/pom.xml @@ -8,7 +8,7 @@ tools.jackson.datatype jackson-datatype-hibernate-parent - 3.1.0-SNAPSHOT + 3.0.0-SNAPSHOT jackson-datatype-hibernate7 Jackson-datatype-hibernate7 diff --git a/pom.xml b/pom.xml index 302cbc46..75c3a031 100644 --- a/pom.xml +++ b/pom.xml @@ -3,12 +3,12 @@ tools.jackson jackson-base - 3.1.0-SNAPSHOT + 3.0.0-SNAPSHOT tools.jackson.datatype jackson-datatype-hibernate-parent Hibernate module parent - 3.1.0-SNAPSHOT + 3.0.0-SNAPSHOT pom Parent pom for shared settings for project sub-modules