Further steps towards JakartaEE.

Remove temporary version placeholders and obsolete version declarations for modules we do not test against anymore.

Tweaked the JPA integration and the Jackson Hibernate 5 one in particular to work with the new Jakarta variants. Re-enabled JPA tests. Removed support for Jackson Hibernate 4 integration and JodaTime.
This commit is contained in:
Oliver Drotbohm
2021-10-08 12:30:19 +02:00
parent b4218de3ad
commit 0efd1502d0
7 changed files with 14 additions and 76 deletions

16
pom.xml
View File

@@ -28,22 +28,14 @@
<project.type>multi</project.type>
<dist.id>spring-data-rest</dist.id>
<!-- Temporarily here -->
<spring>6.0.0-SNAPSHOT</spring>
<spring-hateoas>2.0.0-SNAPSHOT</spring-hateoas>
<validation>3.0.0</validation>
<springdata.commons>3.0.0-SNAPSHOT</springdata.commons>
<springdata.jpa>2.6.0-SNAPSHOT</springdata.jpa>
<springdata.mongodb>3.3.0-SNAPSHOT</springdata.mongodb>
<springdata.geode>2.6.0-SNAPSHOT</springdata.geode>
<springdata.solr>4.4.0-SNAPSHOT</springdata.solr>
<springdata.cassandra>3.3.0-SNAPSHOT</springdata.cassandra>
<springdata.keyvalue>2.6.0-SNAPSHOT</springdata.keyvalue>
<springdata.jpa>3.0.0-SNAPSHOT</springdata.jpa>
<springdata.mongodb>4.0.0-SNAPSHOT</springdata.mongodb>
<springdata.geode>3.0.0-SNAPSHOT</springdata.geode>
<springdata.keyvalue>3.0.0-SNAPSHOT</springdata.keyvalue>
<servlet.version>5.0.0</servlet.version>
<hibernate.version>5.5.7.Final</hibernate.version>
<bundlor.enabled>false</bundlor.enabled>
</properties>
<developers>

View File

@@ -16,7 +16,7 @@
<modules>
<module>spring-data-rest-tests-core</module>
<module>spring-data-rest-tests-geode</module>
<!--<module>spring-data-rest-tests-jpa</module>-->
<module>spring-data-rest-tests-jpa</module>
<module>spring-data-rest-tests-mongodb</module>
<!--<module>spring-data-rest-tests-security</module>-->
<module>spring-data-rest-tests-shop</module>

View File

@@ -51,7 +51,8 @@
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-hibernate5</artifactId>
<artifactId>jackson-datatype-hibernate5-jakarta</artifactId>
<version>${jackson}</version>
</dependency>
</dependencies>

View File

@@ -73,13 +73,7 @@
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-hibernate4</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-hibernate5</artifactId>
<artifactId>jackson-datatype-hibernate5-jakarta</artifactId>
<optional>true</optional>
</dependency>
@@ -90,14 +84,6 @@
<optional>true</optional>
</dependency>
<!-- Jackson JodaTime -->
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
<optional>true</optional>
</dependency>
<!-- Querydsl -->
<dependency>

View File

@@ -230,7 +230,6 @@ public class PersistentEntityResource extends EntityModel<Object> {
private static class NoLinksResources<T> extends CollectionModel<T> {
@SuppressWarnings("deprecation")
public NoLinksResources(Iterable<T> content) {
super(content);
}

View File

@@ -157,7 +157,7 @@ import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebConfiguration
implements BeanClassLoaderAware {
private static final boolean IS_JPA_AVAILABLE = ClassUtils.isPresent("javax.persistence.EntityManager",
private static final boolean IS_JPA_AVAILABLE = ClassUtils.isPresent("jakarta.persistence.EntityManager",
RepositoryRestMvcConfiguration.class.getClassLoader());
private final ApplicationContext applicationContext;

View File

@@ -19,10 +19,7 @@ import org.hibernate.Version;
import org.springframework.util.ClassUtils;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.hibernate4.Hibernate4Module;
import com.fasterxml.jackson.datatype.hibernate5.Hibernate5Module;
import com.fasterxml.jackson.datatype.joda.JodaModule;
import com.fasterxml.jackson.datatype.hibernate5.jakarta.Hibernate5JakartaModule;
/**
* Helper class to register datatype modules based on their presence in the classpath.
@@ -34,69 +31,32 @@ public class Jackson2DatatypeHelper {
private static final boolean IS_HIBERNATE_AVAILABLE = ClassUtils.isPresent("org.hibernate.Version",
Jackson2DatatypeHelper.class.getClassLoader());
private static final boolean IS_HIBERNATE4_MODULE_AVAILABLE = ClassUtils.isPresent(
"com.fasterxml.jackson.datatype.hibernate4.Hibernate4Module", Jackson2DatatypeHelper.class.getClassLoader());
private static final boolean IS_HIBERNATE5_MODULE_AVAILABLE = ClassUtils.isPresent(
"com.fasterxml.jackson.datatype.hibernate5.Hibernate5Module", Jackson2DatatypeHelper.class.getClassLoader());
private static final boolean IS_JODA_MODULE_AVAILABLE = ClassUtils
.isPresent("com.fasterxml.jackson.datatype.joda.JodaModule", Jackson2DatatypeHelper.class.getClassLoader());
"com.fasterxml.jackson.datatype.hibernate5.jakarta.Hibernate5JakartaModule",
Jackson2DatatypeHelper.class.getClassLoader());
public static void configureObjectMapper(ObjectMapper mapper) {
// Hibernate types
if (IS_HIBERNATE_AVAILABLE && HibernateVersions.isHibernate4() && IS_HIBERNATE4_MODULE_AVAILABLE) {
new Hibernate4ModuleRegistrar().registerModule(mapper);
}
if (IS_HIBERNATE_AVAILABLE && HibernateVersions.isHibernate5() && IS_HIBERNATE5_MODULE_AVAILABLE) {
new Hibernate5ModuleRegistrar().registerModule(mapper);
}
// JODA time
if (IS_JODA_MODULE_AVAILABLE) {
JodaModuleRegistrar.registerModule(mapper);
}
}
private static class HibernateVersions {
public static boolean isHibernate4() {
return Version.getVersionString().startsWith("4");
}
public static boolean isHibernate5() {
return Version.getVersionString().startsWith("5");
}
}
private static class Hibernate4ModuleRegistrar {
public void registerModule(ObjectMapper mapper) {
Hibernate4Module module = new Hibernate4Module();
module.enable(Hibernate4Module.Feature.FORCE_LAZY_LOADING);
mapper.registerModule(module);
}
}
private static class Hibernate5ModuleRegistrar {
public void registerModule(ObjectMapper mapper) {
Hibernate5Module module = new Hibernate5Module();
module.enable(Hibernate5Module.Feature.FORCE_LAZY_LOADING);
Hibernate5JakartaModule module = new Hibernate5JakartaModule();
module.enable(Hibernate5JakartaModule.Feature.FORCE_LAZY_LOADING);
mapper.registerModule(module);
}
}
private static class JodaModuleRegistrar {
public static void registerModule(ObjectMapper mapper) {
mapper.registerModule(new JodaModule());
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
}
}
}