diff --git a/Jenkinsfile b/Jenkinsfile
index 81b5fead7..de2b6eba9 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -20,48 +20,10 @@ pipeline {
stages {
stage("Docker images") {
parallel {
- stage('Publish JDK (main) + MongoDB 4.0') {
- when {
- anyOf {
- changeset "ci/openjdk8-mongodb-4.0/**"
- changeset "ci/pipeline.properties"
- }
- }
- agent { label 'data' }
- options { timeout(time: 30, unit: 'MINUTES') }
-
- steps {
- script {
- def image = docker.build("springci/spring-data-with-mongodb-4.0:${p['java.main.tag']}", "--build-arg BASE=${p['docker.java.main.image']} --build-arg MONGODB=${p['docker.mongodb.4.0.version']} ci/openjdk8-mongodb-4.0/")
- docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
- image.push()
- }
- }
- }
- }
- stage('Publish JDK (main) + MongoDB 4.4') {
- when {
- anyOf {
- changeset "ci/openjdk8-mongodb-4.4/**"
- changeset "ci/pipeline.properties"
- }
- }
- agent { label 'data' }
- options { timeout(time: 30, unit: 'MINUTES') }
-
- steps {
- script {
- def image = docker.build("springci/spring-data-with-mongodb-4.4:${p['java.main.tag']}", "--build-arg BASE=${p['docker.java.main.image']} --build-arg MONGODB=${p['docker.mongodb.4.4.version']} ci/openjdk8-mongodb-4.4/")
- docker.withRegistry('', 'hub.docker.com-springbuildmaster') {
- image.push()
- }
- }
- }
- }
stage('Publish JDK (main) + MongoDB 5.0') {
when {
anyOf {
- changeset "ci/openjdk8-mongodb-5.0/**"
+ changeset "ci/openjdk17-mongodb-5.0/**"
changeset "ci/pipeline.properties"
}
}
@@ -77,7 +39,7 @@ pipeline {
}
}
}
- stage('Publish JDK (LTS) + MongoDB 4.4') {
+ stage('Publish JDK (main) + MongoDB 4.4') {
when {
anyOf {
changeset "ci/openjdk17-mongodb-4.4/**"
diff --git a/ci/openjdk11-mongodb-4.4/Dockerfile b/ci/openjdk11-mongodb-4.4/Dockerfile
deleted file mode 100644
index abacb005e..000000000
--- a/ci/openjdk11-mongodb-4.4/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-ARG BASE
-FROM ${BASE}
-# Any ARG statements before FROM are cleared.
-ARG MONGODB
-
-ENV TZ=Etc/UTC
-ENV DEBIAN_FRONTEND=noninteractive
-
-RUN set -eux; \
- sed -i -e 's/archive.ubuntu.com/mirror.one.com/g' /etc/apt/sources.list; \
- sed -i -e 's/security.ubuntu.com/mirror.one.com/g' /etc/apt/sources.list; \
- sed -i -e 's/http/https/g' /etc/apt/sources.list ; \
- apt-get update && apt-get install -y apt-transport-https apt-utils gnupg2 ; \
- apt-key adv --keyserver hkps://keyserver.ubuntu.com:443 --recv 656408E390CFB1F5 ; \
- echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.4.list; \
- echo ${TZ} > /etc/timezone;
-
-RUN apt-get update ; \
- apt-get install -y mongodb-org=${MONGODB} mongodb-org-server=${MONGODB} mongodb-org-shell=${MONGODB} mongodb-org-mongos=${MONGODB} mongodb-org-tools=${MONGODB} ; \
- apt-get clean; \
- rm -rf /var/lib/apt/lists/*;
diff --git a/ci/openjdk8-mongodb-5.0/Dockerfile b/ci/openjdk17-mongodb-5.0/Dockerfile
similarity index 100%
rename from ci/openjdk8-mongodb-5.0/Dockerfile
rename to ci/openjdk17-mongodb-5.0/Dockerfile
diff --git a/ci/openjdk8-mongodb-4.0/Dockerfile b/ci/openjdk8-mongodb-4.0/Dockerfile
deleted file mode 100644
index 99586b796..000000000
--- a/ci/openjdk8-mongodb-4.0/Dockerfile
+++ /dev/null
@@ -1,21 +0,0 @@
-ARG BASE
-FROM ${BASE}
-# Any ARG statements before FROM are cleared.
-ARG MONGODB
-
-ENV TZ=Etc/UTC
-ENV DEBIAN_FRONTEND=noninteractive
-
-RUN RUN set -eux; \
- sed -i -e 's/archive.ubuntu.com/mirror.one.com/g' /etc/apt/sources.list; \
- sed -i -e 's/security.ubuntu.com/mirror.one.com/g' /etc/apt/sources.list; \
- sed -i -e 's/http/https/g' /etc/apt/sources.list ; \
- apt-get update && apt-get install -y apt-transport-https apt-utils gnupg2 ; \
- apt-key adv --keyserver hkps://keyserver.ubuntu.com:443 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 ; \
- echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.0.list; \
- echo ${TZ} > /etc/timezone;
-
-RUN apt-get update ; \
- apt-get install -y mongodb-org=${MONGODB} mongodb-org-server=${MONGODB} mongodb-org-shell=${MONGODB} mongodb-org-mongos=${MONGODB} mongodb-org-tools=${MONGODB} ; \
- apt-get clean; \
- rm -rf /var/lib/apt/lists/*;
diff --git a/ci/openjdk8-mongodb-4.4/Dockerfile b/ci/openjdk8-mongodb-4.4/Dockerfile
deleted file mode 100644
index 87e212dbf..000000000
--- a/ci/openjdk8-mongodb-4.4/Dockerfile
+++ /dev/null
@@ -1,23 +0,0 @@
-ARG BASE
-FROM ${BASE}
-# Any ARG statements before FROM are cleared.
-ARG MONGODB
-
-ENV TZ=Etc/UTC
-ENV DEBIAN_FRONTEND=noninteractive
-
-RUN set -eux; \
- sed -i -e 's/archive.ubuntu.com/mirror.one.com/g' /etc/apt/sources.list; \
- sed -i -e 's/security.ubuntu.com/mirror.one.com/g' /etc/apt/sources.list; \
- sed -i -e 's/http/https/g' /etc/apt/sources.list ; \
- apt-get update && apt-get install -y apt-transport-https apt-utils gnupg2 ; \
- apt-key adv --keyserver hkps://keyserver.ubuntu.com:443 --recv 656408E390CFB1F5 ; \
- echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.4.list; \
- echo ${TZ} > /etc/timezone;
-
-RUN apt-get update ; \
- ln -T /bin/true /usr/bin/systemctl ; \
- apt-get install -y mongodb-org=${MONGODB} mongodb-org-server=${MONGODB} mongodb-org-shell=${MONGODB} mongodb-org-mongos=${MONGODB} mongodb-org-tools=${MONGODB} ; \
- rm /usr/bin/systemctl ; \
- apt-get clean ; \
- rm -rf /var/lib/apt/lists/* ;
diff --git a/ci/pipeline.properties b/ci/pipeline.properties
index 5d91102d2..550af0512 100644
--- a/ci/pipeline.properties
+++ b/ci/pipeline.properties
@@ -1,6 +1,6 @@
# Java versions
-java.main.tag=8u312-b07-jdk
-java.next.tag=11.0.13_8-jdk
+java.main.tag=17.0.1_12-jdk
+java.next.tag=17.0.1_12-jdk
java.lts.tag=17.0.1_12-jdk
# Docker container images - standard
diff --git a/pom.xml b/pom.xml
index 63af8ca47..798ed1398 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.data
spring-data-mongodb-parent
- 3.4.0-SNAPSHOT
+ 4.0.0-SNAPSHOT
pom
Spring Data MongoDB
@@ -15,7 +15,7 @@
org.springframework.data.build
spring-data-parent
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
@@ -24,9 +24,10 @@
+ 16
multi
spring-data-mongodb
- 2.7.0-SNAPSHOT
+ 3.0.0-SNAPSHOT
4.4.1
${mongo}
1.19
diff --git a/spring-data-mongodb-benchmarks/pom.xml b/spring-data-mongodb-benchmarks/pom.xml
index e2704a675..c28a240d2 100644
--- a/spring-data-mongodb-benchmarks/pom.xml
+++ b/spring-data-mongodb-benchmarks/pom.xml
@@ -7,7 +7,7 @@
org.springframework.data
spring-data-mongodb-parent
- 3.4.0-SNAPSHOT
+ 4.0.0-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml
index b75f8bf62..f6a77ea6f 100644
--- a/spring-data-mongodb-distribution/pom.xml
+++ b/spring-data-mongodb-distribution/pom.xml
@@ -14,7 +14,7 @@
org.springframework.data
spring-data-mongodb-parent
- 3.4.0-SNAPSHOT
+ 4.0.0-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml
index ca96626cc..6d73c29f8 100644
--- a/spring-data-mongodb/pom.xml
+++ b/spring-data-mongodb/pom.xml
@@ -11,7 +11,7 @@
org.springframework.data
spring-data-mongodb-parent
- 3.4.0-SNAPSHOT
+ 4.0.0-SNAPSHOT
../pom.xml
@@ -156,7 +156,7 @@
org.apache.geronimo.specs
geronimo-jcdi_2.0_spec
1.0.1
- test
+ optional
@@ -217,20 +217,6 @@
test
-
- joda-time
- joda-time
- ${jodatime}
- test
-
-
-
- org.threeten
- threetenbp
- ${threetenbp}
- true
-
-
com.fasterxml.jackson.core
jackson-databind
diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoAuditingRegistrar.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoAuditingRegistrar.java
index ff7301589..331128366 100644
--- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoAuditingRegistrar.java
+++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MongoAuditingRegistrar.java
@@ -18,6 +18,7 @@ package org.springframework.data.mongodb.config;
import java.lang.annotation.Annotation;
import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.config.RuntimeBeanReference;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
@@ -27,6 +28,8 @@ import org.springframework.data.auditing.IsNewAwareAuditingHandler;
import org.springframework.data.auditing.config.AuditingBeanDefinitionRegistrarSupport;
import org.springframework.data.auditing.config.AuditingConfiguration;
import org.springframework.data.config.ParsingUtils;
+import org.springframework.data.mapping.context.MappingContext;
+import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
import org.springframework.data.mongodb.core.mapping.event.AuditingEntityCallback;
import org.springframework.util.Assert;
@@ -81,8 +84,8 @@ class MongoAuditingRegistrar extends AuditingBeanDefinitionRegistrarSupport {
BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(IsNewAwareAuditingHandler.class);
- BeanDefinitionBuilder definition = BeanDefinitionBuilder.genericBeanDefinition(PersistentEntitiesFactoryBean.class);
- definition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_CONSTRUCTOR);
+ BeanDefinitionBuilder definition = BeanDefinitionBuilder.genericBeanDefinition(org.springframework.data.repository.config.PersistentEntitiesFactoryBean.class);
+ definition.addConstructorArgValue(new RuntimeBeanReference(MappingContext.class));
builder.addConstructorArgValue(definition.getBeanDefinition());
return configureDefaultAuditHandlerAttributes(configuration, builder);
diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoCustomConversions.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoCustomConversions.java
index 9f1925f6e..e04c9cb0f 100644
--- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoCustomConversions.java
+++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MongoCustomConversions.java
@@ -36,7 +36,6 @@ import org.springframework.core.convert.TypeDescriptor;
import org.springframework.core.convert.converter.Converter;
import org.springframework.core.convert.converter.ConverterFactory;
import org.springframework.core.convert.converter.GenericConverter;
-import org.springframework.data.convert.JodaTimeConverters;
import org.springframework.data.convert.WritingConverter;
import org.springframework.data.mapping.model.SimpleTypeHolder;
import org.springframework.data.mongodb.core.mapping.MongoSimpleTypes;
@@ -65,7 +64,6 @@ public class MongoCustomConversions extends org.springframework.data.convert.Cus
converters.add(CustomToStringConverter.INSTANCE);
converters.addAll(MongoConverters.getConvertersToRegister());
- converters.addAll(JodaTimeConverters.getConvertersToRegister());
converters.addAll(GeoConverters.getConvertersToRegister());
STORE_CONVERTERS = Collections.unmodifiableList(converters);
diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/UnwrappedMongoPersistentProperty.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/UnwrappedMongoPersistentProperty.java
index 7ad3e0074..8b3c90618 100644
--- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/UnwrappedMongoPersistentProperty.java
+++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/UnwrappedMongoPersistentProperty.java
@@ -149,11 +149,6 @@ class UnwrappedMongoPersistentProperty implements MongoPersistentProperty {
return delegate.getTypeInformation();
}
- @Override
- public Iterable extends TypeInformation>> getPersistentEntityTypes() {
- return delegate.getPersistentEntityTypes();
- }
-
@Override
public Iterable extends TypeInformation>> getPersistentEntityTypeInformation() {
return delegate.getPersistentEntityTypeInformation();
diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ConvertingParameterAccessor.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ConvertingParameterAccessor.java
index a880a1c05..1d3fa92eb 100644
--- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ConvertingParameterAccessor.java
+++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/ConvertingParameterAccessor.java
@@ -94,15 +94,6 @@ public class ConvertingParameterAccessor implements MongoParameterAccessor {
return delegate.getSort();
}
- /*
- * (non-Javadoc)
- * @see org.springframework.data.repository.query.ParameterAccessor#getDynamicProjection()
- */
- @Override
- public Optional> getDynamicProjection() {
- return delegate.getDynamicProjection();
- }
-
/*
* (non-Javadoc)
* @see org.springframework.data.repository.query.ParameterAccessor#findDynamicProjection()
diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryExecution.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryExecution.java
index 237b87897..41ade14ac 100644
--- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryExecution.java
+++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryExecution.java
@@ -33,7 +33,7 @@ import org.springframework.data.mongodb.core.ExecutableFindOperation.Terminating
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.query.NearQuery;
import org.springframework.data.mongodb.core.query.Query;
-import org.springframework.data.repository.support.PageableExecutionUtils;
+import org.springframework.data.support.PageableExecutionUtils;
import org.springframework.data.util.TypeInformation;
import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
diff --git a/spring-data-mongodb/src/main/resources/META-INF/spring.schemas b/spring-data-mongodb/src/main/resources/META-INF/spring.schemas
index c7f3f0ab7..57920f744 100644
--- a/spring-data-mongodb/src/main/resources/META-INF/spring.schemas
+++ b/spring-data-mongodb/src/main/resources/META-INF/spring.schemas
@@ -12,7 +12,8 @@ http\://www.springframework.org/schema/data/mongo/spring-mongo-2.0.xsd=org/sprin
http\://www.springframework.org/schema/data/mongo/spring-mongo-2.2.xsd=org/springframework/data/mongodb/config/spring-mongo-2.0.xsd
http\://www.springframework.org/schema/data/mongo/spring-mongo-3.0.xsd=org/springframework/data/mongodb/config/spring-mongo-3.0.xsd
http\://www.springframework.org/schema/data/mongo/spring-mongo-3.3.xsd=org/springframework/data/mongodb/config/spring-mongo-3.3.xsd
-http\://www.springframework.org/schema/data/mongo/spring-mongo.xsd=org/springframework/data/mongodb/config/spring-mongo-3.3.xsd
+http\://www.springframework.org/schema/data/mongo/spring-mongo-4.0.xsd=org/springframework/data/mongodb/config/spring-mongo-4.0.xsd
+http\://www.springframework.org/schema/data/mongo/spring-mongo.xsd=org/springframework/data/mongodb/config/spring-mongo-4.0.xsd
https\://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd=org/springframework/data/mongodb/config/spring-mongo-1.0.xsd
https\://www.springframework.org/schema/data/mongo/spring-mongo-1.1.xsd=org/springframework/data/mongodb/config/spring-mongo-1.1.xsd
https\://www.springframework.org/schema/data/mongo/spring-mongo-1.2.xsd=org/springframework/data/mongodb/config/spring-mongo-1.2.xsd
@@ -27,4 +28,5 @@ https\://www.springframework.org/schema/data/mongo/spring-mongo-2.0.xsd=org/spri
https\://www.springframework.org/schema/data/mongo/spring-mongo-2.2.xsd=org/springframework/data/mongodb/config/spring-mongo-2.2.xsd
https\://www.springframework.org/schema/data/mongo/spring-mongo-3.0.xsd=org/springframework/data/mongodb/config/spring-mongo-3.0.xsd
https\://www.springframework.org/schema/data/mongo/spring-mongo-3.3.xsd=org/springframework/data/mongodb/config/spring-mongo-3.3.xsd
-https\://www.springframework.org/schema/data/mongo/spring-mongo.xsd=org/springframework/data/mongodb/config/spring-mongo-3.3.xsd
+https\://www.springframework.org/schema/data/mongo/spring-mongo-4.0.xsd=org/springframework/data/mongodb/config/spring-mongo-4.0.xsd
+https\://www.springframework.org/schema/data/mongo/spring-mongo.xsd=org/springframework/data/mongodb/config/spring-mongo-4.0.xsd
diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-4.0.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-4.0.xsd
new file mode 100644
index 000000000..db6b6b946
--- /dev/null
+++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-4.0.xsd
@@ -0,0 +1,907 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The WriteConcern that will be the default value used when asking the MongoDatabaseFactory for a DB object
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The reference to a MongoTemplate. Will default to 'mongoTemplate'.
+
+
+
+
+
+
+ Enables creation of indexes for queries that get derived from the method name
+ and thus reference domain class properties. Defaults to false.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The reference to a MongoDatabaseFactory.
+
+
+
+
+
+
+
+
+
+
+
+ The reference to a MongoTypeMapper to be used by this MappingMongoConverter.
+
+
+
+
+
+
+ The reference to a MappingContext. Will default to 'mappingContext'.
+
+
+
+
+
+
+ Disables JSR-303 validation on MongoDB documents before they are saved. By default it is set to false.
+
+
+
+
+
+
+
+
+
+ Enables abbreviating the field names for domain class properties to the
+ first character of their camel case names, e.g. fooBar -> fb. Defaults to false.
+
+
+
+
+
+
+
+
+
+ The reference to a FieldNamingStrategy.
+
+
+
+
+
+
+ Enable/Disable index creation for annotated properties/entities.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A reference to a custom converter.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The reference to a MongoDatabaseFactory.
+
+
+
+
+
+
+
+
+
+
+
+ The WriteConcern that will be the default value used when asking the MongoDatabaseFactory for a DB object
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The reference to a MongoDatabaseFactory.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/DependencyTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/DependencyTests.java
index 9294c8355..f58df47d3 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/DependencyTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/DependencyTests.java
@@ -20,6 +20,7 @@ import static org.hamcrest.MatcherAssert.*;
import de.schauderhaft.degraph.configuration.NamedPattern;
+import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
/**
@@ -28,6 +29,7 @@ import org.junit.jupiter.api.Test;
* @author Jens Schauder
* @author Oliver Gierke
*/
+@Disabled("Needs to be tansitioned to ArchUnit")
class DependencyTests {
@Test
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AuditingIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AuditingIntegrationTests.java
index 92b295a70..3cba74421 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AuditingIntegrationTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AuditingIntegrationTests.java
@@ -17,7 +17,8 @@ package org.springframework.data.mongodb.config;
import static org.assertj.core.api.Assertions.*;
-import org.joda.time.DateTime;
+import java.util.Date;
+
import org.junit.jupiter.api.Test;
import org.springframework.context.support.AbstractApplicationContext;
@@ -66,11 +67,11 @@ public class AuditingIntegrationTests {
class Entity {
@Id Long id;
- @CreatedDate DateTime created;
- DateTime modified;
+ @CreatedDate Date created;
+ Date modified;
@LastModifiedDate
- public DateTime getModified() {
+ public Date getModified() {
return modified;
}
}
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java
index 33ae0ef99..a50c6e625 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java
@@ -33,6 +33,8 @@ import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.Duration;
import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
@@ -40,7 +42,6 @@ import java.util.stream.Collectors;
import java.util.stream.IntStream;
import org.bson.types.ObjectId;
-import org.joda.time.DateTime;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -62,6 +63,7 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.mapping.MappingException;
+import org.springframework.data.mapping.context.PersistentEntities;
import org.springframework.data.mongodb.InvalidMongoDbApiUsageException;
import org.springframework.data.mongodb.MongoDatabaseFactory;
import org.springframework.data.mongodb.core.convert.LazyLoadingProxy;
@@ -148,7 +150,9 @@ public class MongoTemplateTests {
});
cfg.configureAuditing(it -> {
- it.auditingHandler(IsNewAwareAuditingHandler::new);
+ it.auditingHandler(ctx -> {
+ return new IsNewAwareAuditingHandler(PersistentEntities.of(ctx));
+ });
});
});
@@ -1341,11 +1345,11 @@ public class MongoTemplateTests {
@Test
public void returnsEntityWhenQueryingForDateTime() {
- DateTime dateTime = new DateTime(2011, 3, 3, 12, 0, 0, 0);
+ LocalDateTime dateTime = LocalDateTime.of(2011, 3, 3, 12, 0, 0, 0);
TestClass testClass = new TestClass(dateTime);
mappingTemplate.save(testClass);
- List testClassList = mappingTemplate.find(new Query(Criteria.where("myDate").is(dateTime.toDate())),
+ List testClassList = mappingTemplate.find(new Query(Criteria.where("myDate").is(dateTime)),
TestClass.class);
assertThat(testClassList.size()).isEqualTo(1);
assertThat(testClassList.get(0).myDate).isEqualTo(testClass.myDate);
@@ -4007,10 +4011,10 @@ public class MongoTemplateTests {
static class TestClass {
- DateTime myDate;
+ LocalDateTime myDate;
@PersistenceConstructor
- TestClass(DateTime myDate) {
+ TestClass(LocalDateTime myDate) {
this.myDate = myDate;
}
}
@@ -4021,21 +4025,24 @@ public class MongoTemplateTests {
String name;
}
- static enum DateTimeToDateConverter implements Converter {
+ static enum DateTimeToDateConverter implements Converter {
INSTANCE;
- public Date convert(DateTime source) {
- return source == null ? null : source.toDate();
+ public Date convert(LocalDateTime source) {
+ return source == null ? null : java.util.Date
+ .from(source.atZone(ZoneId.systemDefault())
+ .toInstant());
}
}
- static enum DateToDateTimeConverter implements Converter {
+ static enum DateToDateTimeConverter implements Converter {
INSTANCE;
- public DateTime convert(Date source) {
- return source == null ? null : new DateTime(source.getTime());
+ public LocalDateTime convert(Date source) {
+ return source == null ? null : LocalDateTime.ofInstant(
+ source.toInstant(), ZoneId.systemDefault());
}
}
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/Venue.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/Venue.java
index 0ab13b393..8afe835e1 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/Venue.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/Venue.java
@@ -16,8 +16,8 @@
package org.springframework.data.mongodb.core;
import java.util.Arrays;
+import java.util.Date;
-import org.joda.time.LocalDate;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.PersistenceConstructor;
import org.springframework.data.mongodb.core.mapping.Document;
@@ -28,7 +28,7 @@ public class Venue {
@Id private String id;
private String name;
private double[] location;
- private LocalDate openingDate;
+ private Date openingDate;
@PersistenceConstructor
Venue(String name, double[] location) {
@@ -51,11 +51,11 @@ public class Venue {
return location;
}
- public LocalDate getOpeningDate() {
+ public Date getOpeningDate() {
return openingDate;
}
- public void setOpeningDate(LocalDate openingDate) {
+ public void setOpeningDate(Date openingDate) {
this.openingDate = openingDate;
}
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationTests.java
index 991523108..d65cdf63f 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationTests.java
@@ -26,6 +26,14 @@ import lombok.Builder;
import java.io.BufferedInputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.time.temporal.ChronoField;
+import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -37,9 +45,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.assertj.core.data.Offset;
import org.bson.Document;
-import org.joda.time.DateTime;
-import org.joda.time.DateTimeZone;
-import org.joda.time.LocalDateTime;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -58,6 +63,7 @@ import org.springframework.data.mongodb.core.TestEntities;
import org.springframework.data.mongodb.core.Venue;
import org.springframework.data.mongodb.core.aggregation.AggregationTests.CarDescriptor.Entry;
import org.springframework.data.mongodb.core.aggregation.BucketAutoOperation.Granularities;
+import org.springframework.data.mongodb.core.aggregation.DateOperators.TemporalUnits;
import org.springframework.data.mongodb.core.aggregation.VariableOperators.Let.ExpressionVariable;
import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
import org.springframework.data.mongodb.core.index.GeoSpatialIndexType;
@@ -1146,11 +1152,11 @@ public class AggregationTests {
mongoTemplate.dropCollection(User.class);
- LocalDateTime now = new LocalDateTime();
+ Instant now = Instant.now();
- User user1 = new User("u1", new PushMessage("1", "aaa", now.toDate()));
- User user2 = new User("u2", new PushMessage("2", "bbb", now.minusDays(2).toDate()));
- User user3 = new User("u3", new PushMessage("3", "ccc", now.minusDays(1).toDate()));
+ User user1 = new User("u1", new PushMessage("1", "aaa", now));
+ User user2 = new User("u2", new PushMessage("2", "bbb", now.minus(2, ChronoUnit.DAYS)));
+ User user3 = new User("u3", new PushMessage("3", "ccc", now.minus(1, ChronoUnit.DAYS)));
mongoTemplate.save(user1);
mongoTemplate.save(user2);
@@ -1159,7 +1165,7 @@ public class AggregationTests {
Aggregation agg = newAggregation( //
project("id", "msgs"), //
unwind("msgs"), //
- match(where("msgs.createDate").gt(now.minusDays(1).toDate())), //
+ match(where("msgs.createDate").gt(Date.from(now.minus(1, ChronoUnit.DAYS)))), //
group("id").push("msgs").as("msgs") //
);
@@ -1375,14 +1381,9 @@ public class AggregationTests {
mongoTemplate.dropCollection(ObjectWithDate.class);
- DateTime dateTime = new DateTime() //
- .withZone(DateTimeZone.UTC) //
- .withYear(2014) //
- .withMonthOfYear(2) //
- .withDayOfMonth(7) //
- .withTime(3, 4, 5, 6).toDateTimeISO();
+ ZonedDateTime dateTime = ZonedDateTime.of(LocalDateTime.of(LocalDate.of(2014, 2, 7), LocalTime.of(3, 4, 5, 6)), ZoneId.of("UTC"));
- ObjectWithDate owd = new ObjectWithDate(dateTime.toDate());
+ ObjectWithDate owd = new ObjectWithDate(Date.from(dateTime.toInstant()));
mongoTemplate.insert(owd);
ProjectionOperation dateProjection = Aggregation.project() //
@@ -1406,12 +1407,12 @@ public class AggregationTests {
assertThat(result.getMappedResults()).hasSize(1);
Document document = result.getMappedResults().get(0);
- assertThat(document.get("hour")).isEqualTo((Object) dateTime.getHourOfDay());
- assertThat(document.get("min")).isEqualTo((Object) dateTime.getMinuteOfHour());
- assertThat(document.get("second")).isEqualTo((Object) dateTime.getSecondOfMinute());
- assertThat(document.get("millis")).isEqualTo((Object) dateTime.getMillisOfSecond());
+ assertThat(document.get("hour")).isEqualTo((Object) dateTime.getHour());
+ assertThat(document.get("min")).isEqualTo((Object) dateTime.getMinute());
+ assertThat(document.get("second")).isEqualTo((Object) dateTime.getSecond());
+ assertThat(document.get("millis")).isEqualTo((Object) dateTime.get(ChronoField.MILLI_OF_SECOND));
assertThat(document.get("year")).isEqualTo((Object) dateTime.getYear());
- assertThat(document.get("month")).isEqualTo((Object) dateTime.getMonthOfYear());
+ assertThat(document.get("month")).isEqualTo((Object) dateTime.getMonthValue());
// dateTime.getWeekOfWeekyear()) returns 6 since for MongoDB the week starts on sunday and not on monday.
assertThat(document.get("week")).isEqualTo((Object) 5);
assertThat(document.get("dayOfYear")).isEqualTo((Object) dateTime.getDayOfYear());
@@ -2083,6 +2084,10 @@ public class AggregationTests {
public PushMessage() {}
+ PushMessage(String id, String content, Instant createDate) {
+ this(id, content, Date.from(createDate));
+ }
+
PushMessage(String id, String content, Date createDate) {
this.id = id;
this.content = content;
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java
index 4cc02aad3..75837d15e 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java
@@ -31,11 +31,11 @@ import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.*;
+import org.assertj.core.api.DateAssert;
import org.bson.types.Binary;
import org.bson.types.Code;
import org.bson.types.Decimal128;
import org.bson.types.ObjectId;
-import org.joda.time.LocalDate;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@@ -144,34 +144,6 @@ class MappingMongoConverterUnitTests {
assertThat(document.get("s").toString()).isEqualTo("Broadway");
}
- @Test
- void convertsJodaTimeTypesCorrectly() {
-
- converter = new MappingMongoConverter(resolver, mappingContext);
- converter.afterPropertiesSet();
-
- Person person = new Person();
- person.birthDate = new LocalDate();
-
- org.bson.Document document = new org.bson.Document();
- converter.write(person, document);
-
- assertThat(document.get("birthDate")).isInstanceOf(Date.class);
-
- Person result = converter.read(Person.class, document);
- assertThat(result.birthDate).isNotNull();
- }
-
- @Test
- void convertsCustomTypeOnConvertToMongoType() {
-
- converter = new MappingMongoConverter(resolver, mappingContext);
- converter.afterPropertiesSet();
-
- LocalDate date = new LocalDate();
- converter.convertToMongoType(date);
- }
-
@Test // DATAMONGO-130
void writesMapTypeCorrectly() {
@@ -197,7 +169,7 @@ class MappingMongoConverterUnitTests {
void usesDocumentsStoredTypeIfSubtypeOfRequest() {
org.bson.Document document = new org.bson.Document();
- document.put("birthDate", new LocalDate());
+ document.put("birthDate", new Date());
document.put(DefaultMongoTypeMapper.DEFAULT_TYPE_KEY, Person.class.getName());
assertThat(converter.read(Contact.class, document)).isInstanceOf(Person.class);
@@ -207,7 +179,7 @@ class MappingMongoConverterUnitTests {
void ignoresDocumentsStoredTypeIfCompletelyDifferentTypeRequested() {
org.bson.Document document = new org.bson.Document();
- document.put("birthDate", new LocalDate());
+ document.put("birthDate", new Date());
document.put(DefaultMongoTypeMapper.DEFAULT_TYPE_KEY, Person.class.getName());
assertThat(converter.read(BirthDateContainer.class, document)).isInstanceOf(BirthDateContainer.class);
@@ -2759,7 +2731,7 @@ class MappingMongoConverterUnitTests {
@Id String id;
- LocalDate birthDate;
+ Date birthDate;
@Field("foo") String firstname;
String lastname;
@@ -2842,7 +2814,7 @@ class MappingMongoConverterUnitTests {
}
static class BirthDateContainer {
- LocalDate birthDate;
+ Date birthDate;
}
static class BigDecimalContainer {
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/AbstractGeoSpatialTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/AbstractGeoSpatialTests.java
index aa674804f..a5582e330 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/AbstractGeoSpatialTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/geo/AbstractGeoSpatialTests.java
@@ -20,10 +20,10 @@ import static org.springframework.data.mongodb.core.query.Criteria.*;
import static org.springframework.data.mongodb.core.query.Query.*;
import java.util.Collections;
+import java.util.Date;
import java.util.List;
import java.util.Set;
-import org.joda.time.LocalDate;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -191,7 +191,7 @@ public abstract class AbstractGeoSpatialTests {
@Test // DATAMONGO-1360
public void mapsQueryContainedInNearQuery() {
- Query query = query(where("openingDate").lt(LocalDate.now()));
+ Query query = query(where("openingDate").lt(new Date()));
template.geoNear(NearQuery.near(1.5, 1.7).spherical(true).query(query), Venue.class);
}
}
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/UpdateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/UpdateTests.java
index 927aa2832..4902c5c23 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/UpdateTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/UpdateTests.java
@@ -22,7 +22,6 @@ import java.util.Date;
import java.util.Map;
import org.bson.Document;
-import org.joda.time.DateTime;
import org.junit.jupiter.api.Test;
import org.springframework.data.mongodb.core.DocumentTestUtils;
import org.springframework.data.mongodb.core.query.Update.Position;
@@ -348,7 +347,7 @@ public class UpdateTests {
@Test // DATAMONGO-1002
public void toStringWorksForUpdateWithComplexObject() {
- Update update = new Update().addToSet("key", new DateTime());
+ Update update = new Update().addToSet("key", new Date());
assertThat(update.toString()).isNotNull();
}
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/StubParameterAccessor.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/StubParameterAccessor.java
index f43e3a107..4f4ac04c6 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/StubParameterAccessor.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/StubParameterAccessor.java
@@ -155,15 +155,6 @@ class StubParameterAccessor implements MongoParameterAccessor {
return this.values;
}
- /*
- * (non-Javadoc)
- * @see org.springframework.data.repository.query.ParameterAccessor#getDynamicProjection()
- */
- @Override
- public Optional> getDynamicProjection() {
- return Optional.empty();
- }
-
/*
* (non-Javadoc)
* @see org.springframework.data.repository.query.ParameterAccessor#findDynamicProjection()