Skip to content

Commit 220ac4c

Browse files
christophstroblmp911de
authored andcommitted
Prepare Spring Data MongoDB 4.x branch.
Upgrade to data-commons 3.0 and Java 17 (still source level 16 due to asm). Remove support for threeten, joda-time. Transition to PersistentEntitiesFactoryBean from data-commons. Update build to MongoDB 4.4 and 5 with Java17. Remove Java8 setup. Fix javadoc tooling error on cdi 1 vs. 2 version mix. Disabled internal package cycle analysis as this requires transition to ArchUnit.
1 parent 212509f commit 220ac4c

File tree

26 files changed

+1014
-313
lines changed

26 files changed

+1014
-313
lines changed

Diff for: Jenkinsfile

+23-127
Original file line numberDiff line numberDiff line change
@@ -14,74 +14,42 @@ pipeline {
1414
stages {
1515
stage("Docker images") {
1616
parallel {
17-
stage('Publish JDK 8 + MongoDB 5.0') {
17+
stage('Publish JDK 17 + MongoDB 4.4') {
1818
when {
19-
changeset "ci/openjdk8-mongodb-5.0/**"
19+
changeset "ci/openjdk17-mongodb-4.4/**"
2020
}
2121
agent { label 'data' }
2222
options { timeout(time: 30, unit: 'MINUTES') }
2323

2424
steps {
2525
script {
26-
def image = docker.build("springci/spring-data-openjdk8-with-mongodb-5.0.0", "ci/openjdk8-mongodb-5.0/")
27-
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
28-
image.push()
29-
}
30-
}
31-
}
32-
}
33-
stage('Publish JDK 8 + MongoDB 4.0') {
34-
when {
35-
changeset "ci/openjdk8-mongodb-4.0/**"
36-
}
37-
agent { label 'data' }
38-
options { timeout(time: 30, unit: 'MINUTES') }
39-
40-
steps {
41-
script {
42-
def image = docker.build("springci/spring-data-openjdk8-with-mongodb-4.0.23", "ci/openjdk8-mongodb-4.0/")
26+
def image = docker.build("springci/spring-data-openjdk17-with-mongodb-4.4.4", "ci/openjdk17-mongodb-4.4/")
4327
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
4428
image.push()
4529
}
4630
}
4731
}
4832
}
49-
stage('Publish JDK 8 + MongoDB 4.4') {
50-
when {
51-
changeset "ci/openjdk8-mongodb-4.4/**"
52-
}
53-
agent { label 'data' }
54-
options { timeout(time: 30, unit: 'MINUTES') }
55-
56-
steps {
57-
script {
58-
def image = docker.build("springci/spring-data-openjdk8-with-mongodb-4.4.4", "ci/openjdk8-mongodb-4.4/")
59-
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
60-
image.push()
61-
}
62-
}
63-
}
64-
}
65-
stage('Publish JDK 16 + MongoDB 4.4') {
66-
when {
67-
changeset "ci/openjdk16-mongodb-4.4/**"
68-
}
69-
agent { label 'data' }
70-
options { timeout(time: 30, unit: 'MINUTES') }
33+
stage('Publish JDK 17 + MongoDB 5.0') {
34+
when {
35+
changeset "ci/openjdk17-mongodb-5.0/**"
36+
}
37+
agent { label 'data' }
38+
options { timeout(time: 30, unit: 'MINUTES') }
7139

72-
steps {
73-
script {
74-
def image = docker.build("springci/spring-data-openjdk16-with-mongodb-4.4.4", "ci/openjdk16-mongodb-4.4/")
75-
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
76-
image.push()
77-
}
78-
}
79-
}
80-
}
40+
steps {
41+
script {
42+
def image = docker.build("springci/spring-data-openjdk17-with-mongodb-5.0.3", "ci/openjdk17-mongodb-5.0/")
43+
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
44+
image.push()
45+
}
46+
}
47+
}
48+
}
8149
}
8250
}
8351

84-
stage("test: baseline (jdk8)") {
52+
stage("test: baseline Mongo 5.0 (jdk17)") {
8553
when {
8654
beforeAgent(true)
8755
anyOf {
@@ -99,7 +67,7 @@ pipeline {
9967
steps {
10068
script {
10169
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
102-
docker.image('springci/spring-data-openjdk8-with-mongodb-4.0.23:latest').inside('-v $HOME:/tmp/jenkins-home') {
70+
docker.image('springci/spring-data-openjdk17-with-mongodb-5.0.3:latest').inside('-v $HOME:/tmp/jenkins-home') {
10371
sh 'mkdir -p /tmp/mongodb/db /tmp/mongodb/log'
10472
sh 'mongod --setParameter transactionLifetimeLimitSeconds=90 --setParameter maxTransactionLockRequestTimeoutMillis=10000 --dbpath /tmp/mongodb/db --replSet rs0 --fork --logpath /tmp/mongodb/log/mongod.log &'
10573
sh 'sleep 10'
@@ -121,7 +89,7 @@ pipeline {
12189
}
12290
}
12391
parallel {
124-
stage("test: mongodb 4.0 (jdk8)") {
92+
stage("test: baseline MongoDB 4.4 (jdk17)") {
12593
agent {
12694
label 'data'
12795
}
@@ -132,7 +100,7 @@ pipeline {
132100
steps {
133101
script {
134102
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
135-
docker.image('springci/spring-data-openjdk8-with-mongodb-4.0.23:latest').inside('-v $HOME:/tmp/jenkins-home') {
103+
docker.image('springci/spring-data-openjdk17-with-mongodb-4.4.4:latest').inside('-v $HOME:/tmp/jenkins-home') {
136104
sh 'mkdir -p /tmp/mongodb/db /tmp/mongodb/log'
137105
sh 'mongod --setParameter transactionLifetimeLimitSeconds=90 --setParameter maxTransactionLockRequestTimeoutMillis=10000 --dbpath /tmp/mongodb/db --replSet rs0 --fork --logpath /tmp/mongodb/log/mongod.log &'
138106
sh 'sleep 10'
@@ -144,78 +112,6 @@ pipeline {
144112
}
145113
}
146114
}
147-
148-
stage("test: mongodb 4.4 (jdk8)") {
149-
agent {
150-
label 'data'
151-
}
152-
options { timeout(time: 30, unit: 'MINUTES') }
153-
environment {
154-
ARTIFACTORY = credentials('02bd1690-b54f-4c9f-819d-a77cb7a9822c')
155-
}
156-
steps {
157-
script {
158-
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
159-
docker.image('springci/spring-data-openjdk8-with-mongodb-4.4.4:latest').inside('-v $HOME:/tmp/jenkins-home') {
160-
sh 'mkdir -p /tmp/mongodb/db /tmp/mongodb/log'
161-
sh 'mongod --setParameter transactionLifetimeLimitSeconds=90 --setParameter maxTransactionLockRequestTimeoutMillis=10000 --dbpath /tmp/mongodb/db --replSet rs0 --fork --logpath /tmp/mongodb/log/mongod.log &'
162-
sh 'sleep 10'
163-
sh 'mongo --eval "rs.initiate({_id: \'rs0\', members:[{_id: 0, host: \'127.0.0.1:27017\'}]});"'
164-
sh 'sleep 15'
165-
sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml clean dependency:list test -Duser.name=jenkins -Dsort -U -B'
166-
}
167-
}
168-
}
169-
}
170-
}
171-
172-
stage("test: mongodb 5.0 (jdk8)") {
173-
agent {
174-
label 'data'
175-
}
176-
options { timeout(time: 30, unit: 'MINUTES') }
177-
environment {
178-
ARTIFACTORY = credentials('02bd1690-b54f-4c9f-819d-a77cb7a9822c')
179-
}
180-
steps {
181-
script {
182-
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
183-
docker.image('springci/spring-data-openjdk8-with-mongodb-5.0.0:latest').inside('-v $HOME:/tmp/jenkins-home') {
184-
sh 'mkdir -p /tmp/mongodb/db /tmp/mongodb/log'
185-
sh 'mongod --setParameter transactionLifetimeLimitSeconds=90 --setParameter maxTransactionLockRequestTimeoutMillis=10000 --dbpath /tmp/mongodb/db --replSet rs0 --fork --logpath /tmp/mongodb/log/mongod.log &'
186-
sh 'sleep 10'
187-
sh 'mongo --eval "rs.initiate({_id: \'rs0\', members:[{_id: 0, host: \'127.0.0.1:27017\'}]});"'
188-
sh 'sleep 15'
189-
sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml clean dependency:list test -Duser.name=jenkins -Dsort -U -B'
190-
}
191-
}
192-
}
193-
}
194-
}
195-
196-
stage("test: baseline (jdk16)") {
197-
agent {
198-
label 'data'
199-
}
200-
options { timeout(time: 30, unit: 'MINUTES') }
201-
environment {
202-
ARTIFACTORY = credentials('02bd1690-b54f-4c9f-819d-a77cb7a9822c')
203-
}
204-
steps {
205-
script {
206-
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
207-
docker.image('springci/spring-data-openjdk16-with-mongodb-4.4.4:latest').inside('-v $HOME:/tmp/jenkins-home') {
208-
sh 'mkdir -p /tmp/mongodb/db /tmp/mongodb/log'
209-
sh 'mongod --setParameter transactionLifetimeLimitSeconds=90 --setParameter maxTransactionLockRequestTimeoutMillis=10000 --dbpath /tmp/mongodb/db --replSet rs0 --fork --logpath /tmp/mongodb/log/mongod.log &'
210-
sh 'sleep 10'
211-
sh 'mongo --eval "rs.initiate({_id: \'rs0\', members:[{_id: 0, host: \'127.0.0.1:27017\'}]});"'
212-
sh 'sleep 15'
213-
sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml -Pjava11 clean dependency:list test -Duser.name=jenkins -Dsort -U -B'
214-
}
215-
}
216-
}
217-
}
218-
}
219115
}
220116
}
221117

@@ -239,7 +135,7 @@ pipeline {
239135
steps {
240136
script {
241137
docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
242-
docker.image('adoptopenjdk/openjdk8:latest').inside('-v $HOME:/tmp/jenkins-home') {
138+
docker.image('openjdk:17-bullseye').inside('-v $HOME:/tmp/jenkins-home') {
243139
sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml -Pci,artifactory ' +
244140
'-Dartifactory.server=https://repo.spring.io ' +
245141
"-Dartifactory.username=${ARTIFACTORY_USR} " +

Diff for: ci/openjdk16-mongodb-4.4/Dockerfile

-18
This file was deleted.

Diff for: ci/openjdk11-mongodb-4.4/Dockerfile renamed to ci/openjdk17-mongodb-4.4/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM adoptopenjdk/openjdk11:latest
1+
FROM openjdk:17-bullseye
22

33
ENV TZ=Etc/UTC
44
ENV DEBIAN_FRONTEND=noninteractive

Diff for: ci/openjdk8-mongodb-5.0/Dockerfile renamed to ci/openjdk17-mongodb-5.0/Dockerfile

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM adoptopenjdk/openjdk8:latest
1+
FROM openjdk:17-bullseye
22

33
ENV TZ=Etc/UTC
44
ENV DEBIAN_FRONTEND=noninteractive
@@ -18,3 +18,4 @@ RUN apt-get update; \
1818
apt-get install -y mongodb-org=5.0.3 mongodb-org-server=5.0.3 mongodb-org-shell=5.0.3 mongodb-org-mongos=5.0.3 mongodb-org-tools=5.0.3; \
1919
apt-get clean; \
2020
rm -rf /var/lib/apt/lists/*;
21+

Diff for: ci/openjdk8-mongodb-4.0/Dockerfile

-18
This file was deleted.

Diff for: ci/openjdk8-mongodb-4.4/Dockerfile

-20
This file was deleted.

Diff for: pom.xml

+4-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>org.springframework.data</groupId>
77
<artifactId>spring-data-mongodb-parent</artifactId>
8-
<version>3.4.0-SNAPSHOT</version>
8+
<version>4.0.0-SNAPSHOT</version>
99
<packaging>pom</packaging>
1010

1111
<name>Spring Data MongoDB</name>
@@ -15,7 +15,7 @@
1515
<parent>
1616
<groupId>org.springframework.data.build</groupId>
1717
<artifactId>spring-data-parent</artifactId>
18-
<version>2.7.0-SNAPSHOT</version>
18+
<version>3.0.0-SNAPSHOT</version>
1919
</parent>
2020

2121
<modules>
@@ -24,9 +24,10 @@
2424
</modules>
2525

2626
<properties>
27+
<source.level>16</source.level>
2728
<project.type>multi</project.type>
2829
<dist.id>spring-data-mongodb</dist.id>
29-
<springdata.commons>2.7.0-SNAPSHOT</springdata.commons>
30+
<springdata.commons>3.0.0-SNAPSHOT</springdata.commons>
3031
<mongo>4.4.1</mongo>
3132
<mongo.reactivestreams>${mongo}</mongo.reactivestreams>
3233
<jmh.version>1.19</jmh.version>

Diff for: spring-data-mongodb-benchmarks/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<parent>
88
<groupId>org.springframework.data</groupId>
99
<artifactId>spring-data-mongodb-parent</artifactId>
10-
<version>3.4.0-SNAPSHOT</version>
10+
<version>4.0.0-SNAPSHOT</version>
1111
<relativePath>../pom.xml</relativePath>
1212
</parent>
1313

Diff for: spring-data-mongodb-distribution/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<parent>
1515
<groupId>org.springframework.data</groupId>
1616
<artifactId>spring-data-mongodb-parent</artifactId>
17-
<version>3.4.0-SNAPSHOT</version>
17+
<version>4.0.0-SNAPSHOT</version>
1818
<relativePath>../pom.xml</relativePath>
1919
</parent>
2020

Diff for: spring-data-mongodb/pom.xml

+2-16
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<parent>
1212
<groupId>org.springframework.data</groupId>
1313
<artifactId>spring-data-mongodb-parent</artifactId>
14-
<version>3.4.0-SNAPSHOT</version>
14+
<version>4.0.0-SNAPSHOT</version>
1515
<relativePath>../pom.xml</relativePath>
1616
</parent>
1717

@@ -156,7 +156,7 @@
156156
<groupId>org.apache.geronimo.specs</groupId>
157157
<artifactId>geronimo-jcdi_2.0_spec</artifactId>
158158
<version>1.0.1</version>
159-
<scope>test</scope>
159+
<scope>optional</scope>
160160
</dependency>
161161

162162
<dependency>
@@ -217,20 +217,6 @@
217217
<scope>test</scope>
218218
</dependency>
219219

220-
<dependency>
221-
<groupId>joda-time</groupId>
222-
<artifactId>joda-time</artifactId>
223-
<version>${jodatime}</version>
224-
<scope>test</scope>
225-
</dependency>
226-
227-
<dependency>
228-
<groupId>org.threeten</groupId>
229-
<artifactId>threetenbp</artifactId>
230-
<version>${threetenbp}</version>
231-
<optional>true</optional>
232-
</dependency>
233-
234220
<dependency>
235221
<groupId>com.fasterxml.jackson.core</groupId>
236222
<artifactId>jackson-databind</artifactId>

Diff for: spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoAuditingRegistrar.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.lang.annotation.Annotation;
1919

2020
import org.springframework.beans.factory.config.BeanDefinition;
21+
import org.springframework.beans.factory.config.RuntimeBeanReference;
2122
import org.springframework.beans.factory.support.AbstractBeanDefinition;
2223
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
2324
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
@@ -27,6 +28,8 @@
2728
import org.springframework.data.auditing.config.AuditingBeanDefinitionRegistrarSupport;
2829
import org.springframework.data.auditing.config.AuditingConfiguration;
2930
import org.springframework.data.config.ParsingUtils;
31+
import org.springframework.data.mapping.context.MappingContext;
32+
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
3033
import org.springframework.data.mongodb.core.mapping.event.AuditingEntityCallback;
3134
import org.springframework.util.Assert;
3235

@@ -81,8 +84,8 @@ protected BeanDefinitionBuilder getAuditHandlerBeanDefinitionBuilder(AuditingCon
8184

8285
BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(IsNewAwareAuditingHandler.class);
8386

84-
BeanDefinitionBuilder definition = BeanDefinitionBuilder.genericBeanDefinition(PersistentEntitiesFactoryBean.class);
85-
definition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_CONSTRUCTOR);
87+
BeanDefinitionBuilder definition = BeanDefinitionBuilder.genericBeanDefinition(org.springframework.data.repository.config.PersistentEntitiesFactoryBean.class);
88+
definition.addConstructorArgValue(new RuntimeBeanReference(MappingContext.class));
8689

8790
builder.addConstructorArgValue(definition.getBeanDefinition());
8891
return configureDefaultAuditHandlerAttributes(configuration, builder);

0 commit comments

Comments
 (0)