Compare commits

...

11 Commits
main ... 5.2.1

Author SHA1 Message Date
Mark Paluch
76187a4934
Release version 5.2.1 (2023.1.1).
See #2771
2023-12-15 14:11:53 +01:00
Mark Paluch
b693494e17
Prepare 5.2.1 (2023.1.1).
See #2771
2023-12-15 14:11:23 +01:00
Mark Paluch
b324935d22
Update CI properties.
See #2771
2023-12-14 08:49:56 +01:00
Mark Paluch
920f7c029f
Upgrade to Maven Wrapper 3.9.6.
See #2799
2023-12-14 08:34:15 +01:00
Peter-Josef Meisch
051777ee25
Removed junk characters from code.
(cherry picked from commit 415d5e0385fa00709fcc599b0087a77c80a79270)
2023-11-30 20:44:26 +01:00
Peter-Josef Meisch
0fb98eda39
Fix type of returned sort values.
Original Pull Request #2786
Closes #2777

(cherry picked from commit 3833975a1ad76ef9c90b1260b090ff1eb9af523c)
2023-11-30 20:44:25 +01:00
Mark Paluch
df76b43cb4
Introduce property for Jenkins user and Artifactory server details.
Closes #2781
2023-11-27 14:23:49 +01:00
Runbing
b681197d0f
Fixed the URL for the Spring Data Commons documentation.
I fixed broken links in the Spring Data Elasticsearch documentation for Spring Data Commons.

Closes #2776
2023-11-20 11:31:58 +01:00
Mark Paluch
8a1323c11a
Update CI trigger versions.
See #2737
2023-11-17 14:53:43 +01:00
Mark Paluch
033d71ccb6
After release cleanups.
See #2737
2023-11-17 14:33:56 +01:00
Mark Paluch
0ae2a52de8
Prepare next development iteration.
See #2737
2023-11-17 14:33:54 +01:00
10 changed files with 60 additions and 56 deletions

View File

@ -1,3 +1,3 @@
#Wed Oct 04 16:58:13 PDT 2023 #Thu Dec 14 08:34:15 CET 2023
wrapperUrl=https\://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar wrapperUrl=https\://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
distributionUrl=https\://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.5/apache-maven-3.9.5-bin.zip distributionUrl=https\://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.6/apache-maven-3.9.6-bin.zip

28
Jenkinsfile vendored
View File

@ -9,7 +9,7 @@ pipeline {
triggers { triggers {
pollSCM 'H/10 * * * *' pollSCM 'H/10 * * * *'
upstream(upstreamProjects: "spring-data-commons/main", threshold: hudson.model.Result.SUCCESS) upstream(upstreamProjects: "spring-data-commons/3.2.x", threshold: hudson.model.Result.SUCCESS)
} }
options { options {
@ -40,8 +40,8 @@ pipeline {
steps { steps {
script { script {
docker.image(p['docker.java.main.image']).inside(p['docker.java.inside.docker']) { docker.image(p['docker.java.main.image']).inside(p['docker.java.inside.docker']) {
sh 'PROFILE=none ci/verify.sh' sh "PROFILE=none JENKINS_USER_NAME=${p['jenkins.user.name']} ci/verify.sh"
sh "ci/clean.sh" sh "JENKINS_USER_NAME=${p['jenkins.user.name']} ci/clean.sh"
} }
} }
} }
@ -69,8 +69,8 @@ pipeline {
steps { steps {
script { script {
docker.image(p['docker.java.next.image']).inside(p['docker.java.inside.docker']) { docker.image(p['docker.java.next.image']).inside(p['docker.java.inside.docker']) {
sh 'PROFILE=none ci/verify.sh' sh "PROFILE=none JENKINS_USER_NAME=${p['jenkins.user.name']} ci/verify.sh"
sh "ci/clean.sh" sh "JENKINS_USER_NAME=${p['jenkins.user.name']} ci/clean.sh"
} }
} }
} }
@ -90,28 +90,26 @@ pipeline {
label 'data' label 'data'
} }
options { timeout(time: 20, unit: 'MINUTES') } options { timeout(time: 20, unit: 'MINUTES') }
environment { environment {
ARTIFACTORY = credentials("${p['artifactory.credentials']}") ARTIFACTORY = credentials("${p['artifactory.credentials']}")
DEVELOCITY_CACHE = credentials("${p['develocity.cache.credentials']}") DEVELOCITY_CACHE = credentials("${p['develocity.cache.credentials']}")
DEVELOCITY_ACCESS_KEY = credentials("${p['develocity.access-key']}") DEVELOCITY_ACCESS_KEY = credentials("${p['develocity.access-key']}")
} }
steps { steps {
script { script {
docker.image(p['docker.java.main.image']).inside(p['docker.java.inside.basic']) { docker.image(p['docker.java.main.image']).inside(p['docker.java.inside.basic']) {
sh 'MAVEN_OPTS="-Duser.name=spring-builds+jenkins -Duser.home=/tmp/jenkins-home" ' + sh 'MAVEN_OPTS="-Duser.name=' + "${p['jenkins.user.name']}" + ' -Duser.home=/tmp/jenkins-home" ' +
'DEVELOCITY_CACHE_USERNAME=${DEVELOCITY_CACHE_USR} ' + "DEVELOCITY_CACHE_USERNAME=${DEVELOCITY_CACHE_USR} " +
'DEVELOCITY_CACHE_PASSWORD=${DEVELOCITY_CACHE_PSW} ' + "DEVELOCITY_CACHE_PASSWORD=${DEVELOCITY_CACHE_PSW} " +
'GRADLE_ENTERPRISE_ACCESS_KEY=${DEVELOCITY_ACCESS_KEY} ' + "GRADLE_ENTERPRISE_ACCESS_KEY=${DEVELOCITY_ACCESS_KEY} " +
'./mvnw -s settings.xml -Pci,artifactory -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-elasticsearch-non-root ' + "./mvnw -s settings.xml -Pci,artifactory -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-elasticsearch-non-root " +
'-Dartifactory.server=https://repo.spring.io ' + "-Dartifactory.server=${p['artifactory.url']} " +
"-Dartifactory.username=${ARTIFACTORY_USR} " + "-Dartifactory.username=${ARTIFACTORY_USR} " +
"-Dartifactory.password=${ARTIFACTORY_PSW} " + "-Dartifactory.password=${ARTIFACTORY_PSW} " +
"-Dartifactory.staging-repository=libs-snapshot-local " + "-Dartifactory.staging-repository=${p['artifactory.repository.snapshot']} " +
"-Dartifactory.build-name=spring-data-elasticsearch " + "-Dartifactory.build-name=spring-data-elasticsearch " +
"-Dartifactory.build-number=${BUILD_NUMBER} " + "-Dartifactory.build-number=${BUILD_NUMBER} " +
'-Dmaven.test.skip=true clean deploy -U -B' "-Dmaven.test.skip=true clean deploy -U -B"
} }
} }
} }

View File

@ -4,9 +4,10 @@ set -euo pipefail
export DEVELOCITY_CACHE_USERNAME=${DEVELOCITY_CACHE_USR} export DEVELOCITY_CACHE_USERNAME=${DEVELOCITY_CACHE_USR}
export DEVELOCITY_CACHE_PASSWORD=${DEVELOCITY_CACHE_PSW} export DEVELOCITY_CACHE_PASSWORD=${DEVELOCITY_CACHE_PSW}
export JENKINS_USER=${JENKINS_USER_NAME}
# The environment variable to configure access key is still GRADLE_ENTERPRISE_ACCESS_KEY # The environment variable to configure access key is still GRADLE_ENTERPRISE_ACCESS_KEY
export GRADLE_ENTERPRISE_ACCESS_KEY=${DEVELOCITY_ACCESS_KEY} export GRADLE_ENTERPRISE_ACCESS_KEY=${DEVELOCITY_ACCESS_KEY}
MAVEN_OPTS="-Duser.name=spring-builds+jenkins -Duser.home=/tmp/jenkins-home" \ MAVEN_OPTS="-Duser.name=${JENKINS_USER} -Duser.home=/tmp/jenkins-home" \
./mvnw -s settings.xml clean -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-elasticsearch ./mvnw -s settings.xml clean -Dscan=false -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-elasticsearch

View File

@ -1,6 +1,6 @@
# Java versions # Java versions
java.main.tag=17.0.8_7-jdk-focal java.main.tag=17.0.9_9-jdk-focal
java.next.tag=21_35-jdk-jammy java.next.tag=21.0.1_12-jdk-jammy
# Docker container images - standard # Docker container images - standard
docker.java.main.image=harbor-repo.vmware.com/dockerhub-proxy-cache/library/eclipse-temurin:${java.main.tag} docker.java.main.image=harbor-repo.vmware.com/dockerhub-proxy-cache/library/eclipse-temurin:${java.main.tag}
@ -26,5 +26,8 @@ docker.java.inside.docker=-u root -v /var/run/docker.sock:/var/run/docker.sock -
docker.registry= docker.registry=
docker.credentials=hub.docker.com-springbuildmaster docker.credentials=hub.docker.com-springbuildmaster
artifactory.credentials=02bd1690-b54f-4c9f-819d-a77cb7a9822c artifactory.credentials=02bd1690-b54f-4c9f-819d-a77cb7a9822c
artifactory.url=https://repo.spring.io
artifactory.repository.snapshot=libs-snapshot-local
develocity.cache.credentials=gradle_enterprise_cache_user develocity.cache.credentials=gradle_enterprise_cache_user
develocity.access-key=gradle_enterprise_secret_access_key develocity.access-key=gradle_enterprise_secret_access_key
jenkins.user.name=spring-builds+jenkins

View File

@ -7,10 +7,11 @@ chown -R 1001:1001 .
export DEVELOCITY_CACHE_USERNAME=${DEVELOCITY_CACHE_USR} export DEVELOCITY_CACHE_USERNAME=${DEVELOCITY_CACHE_USR}
export DEVELOCITY_CACHE_PASSWORD=${DEVELOCITY_CACHE_PSW} export DEVELOCITY_CACHE_PASSWORD=${DEVELOCITY_CACHE_PSW}
export JENKINS_USER=${JENKINS_USER_NAME}
# The environment variable to configure access key is still GRADLE_ENTERPRISE_ACCESS_KEY # The environment variable to configure access key is still GRADLE_ENTERPRISE_ACCESS_KEY
export GRADLE_ENTERPRISE_ACCESS_KEY=${DEVELOCITY_ACCESS_KEY} export GRADLE_ENTERPRISE_ACCESS_KEY=${DEVELOCITY_ACCESS_KEY}
MAVEN_OPTS="-Duser.name=spring-builds+jenkins -Duser.home=/tmp/jenkins-home" \ MAVEN_OPTS="-Duser.name=${JENKINS_USER} -Duser.home=/tmp/jenkins-home" \
./mvnw -s settings.xml \ ./mvnw -s settings.xml \
-P${PROFILE} clean dependency:list verify -Dsort -U -B -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-elasticsearch -P${PROFILE} clean dependency:list verify -Dsort -U -B -Dmaven.repo.local=/tmp/jenkins-home/.m2/spring-data-elasticsearch

View File

@ -5,12 +5,12 @@
<groupId>org.springframework.data</groupId> <groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId> <artifactId>spring-data-elasticsearch</artifactId>
<version>5.2.0</version> <version>5.2.1</version>
<parent> <parent>
<groupId>org.springframework.data.build</groupId> <groupId>org.springframework.data.build</groupId>
<artifactId>spring-data-parent</artifactId> <artifactId>spring-data-parent</artifactId>
<version>3.2.0</version> <version>3.2.1</version>
</parent> </parent>
<name>Spring Data Elasticsearch</name> <name>Spring Data Elasticsearch</name>
@ -18,7 +18,7 @@
<url>https://github.com/spring-projects/spring-data-elasticsearch</url> <url>https://github.com/spring-projects/spring-data-elasticsearch</url>
<properties> <properties>
<springdata.commons>3.2.0</springdata.commons> <springdata.commons>3.2.1</springdata.commons>
<!-- version of the ElasticsearchClient --> <!-- version of the ElasticsearchClient -->
<elasticsearch-java>8.11.1</elasticsearch-java> <elasticsearch-java>8.11.1</elasticsearch-java>

View File

@ -10,7 +10,7 @@ asciidoc:
attribute-missing: 'warn' attribute-missing: 'warn'
commons: ${springdata.commons.docs} commons: ${springdata.commons.docs}
include-xml-namespaces: false include-xml-namespaces: false
spring-data-commons-docs-url: https://docs.spring.io/spring-data-commons/reference spring-data-commons-docs-url: https://docs.spring.io/spring-data/commons/reference
spring-data-commons-javadoc-base: https://docs.spring.io/spring-data/commons/docs/${springdata.commons}/api/ spring-data-commons-javadoc-base: https://docs.spring.io/spring-data/commons/docs/${springdata.commons}/api/
springdocsurl: https://docs.spring.io/spring-framework/reference/{springversionshort} springdocsurl: https://docs.spring.io/spring-framework/reference/{springversionshort}
springjavadocurl: https://docs.spring.io/spring-framework/docs/${spring}/javadoc-api springjavadocurl: https://docs.spring.io/spring-framework/docs/${spring}/javadoc-api

View File

@ -138,7 +138,7 @@ final class DocumentAdapters {
document.setPrimaryTerm(hit.primaryTerm() != null && hit.primaryTerm() > 0 ? hit.primaryTerm() : 0); document.setPrimaryTerm(hit.primaryTerm() != null && hit.primaryTerm() > 0 ? hit.primaryTerm() : 0);
float score = hit.score() != null ? hit.score().floatValue() : Float.NaN; float score = hit.score() != null ? hit.score().floatValue() : Float.NaN;
return new SearchDocumentAdapter(document, score, hit.sort().stream().map(TypeUtils::toString).toArray(), return new SearchDocumentAdapter(document, score, hit.sort().stream().map(TypeUtils::toObject).toArray(),
documentFields, highlightFields, innerHits, nestedMetaData, explanation, matchedQueries, hit.routing()); documentFields, highlightFields, innerHits, nestedMetaData, explanation, matchedQueries, hit.routing());
} }

View File

@ -1,4 +1,4 @@
Spring Data Elasticsearch 5.2 GA (2023.1.0) Spring Data Elasticsearch 5.2.1 (2023.1.1)
Copyright (c) [2013-2022] Pivotal Software, Inc. Copyright (c) [2013-2022] Pivotal Software, Inc.
This product is licensed to you under the Apache License, Version 2.0 (the "License"). This product is licensed to you under the Apache License, Version 2.0 (the "License").
@ -18,3 +18,4 @@ conditions of the subcomponent's license, as noted in the LICENSE file.

View File

@ -103,27 +103,27 @@ public abstract class NestedSortIntegrationTests {
assertThat(searchHits.getSearchHit(0).getContent().id).isEqualTo(francisFordCoppola.id); assertThat(searchHits.getSearchHit(0).getContent().id).isEqualTo(francisFordCoppola.id);
var sortValues = searchHits.getSearchHit(0).getSortValues(); var sortValues = searchHits.getSearchHit(0).getSortValues();
assertThat(sortValues).hasSize(1); assertThat(sortValues).hasSize(1);
assertThat(sortValues.get(0)).isEqualTo("1924"); assertThat(sortValues.get(0)).isEqualTo(1924L);
assertThat(searchHits.getSearchHit(1).getContent().id).isEqualTo(stanleyKubrik.id); assertThat(searchHits.getSearchHit(1).getContent().id).isEqualTo(stanleyKubrik.id);
sortValues = searchHits.getSearchHit(1).getSortValues(); sortValues = searchHits.getSearchHit(1).getSortValues();
assertThat(sortValues).hasSize(1); assertThat(sortValues).hasSize(1);
assertThat(sortValues.get(0)).isEqualTo("1937"); assertThat(sortValues.get(0)).isEqualTo(1937L);
} }
@Test // #1784 @Test // #1784
@DisplayName("should sort directors by year of birth of actor in their movies descending") @DisplayName("should sort directors by year of birth of actor in their movies descending")
void shouldSortDirectorsByYearOfBirthOfActorInTheirMoviesDescending() { void shouldSortDirectorsByYearOfBirthOfActorInTheirMoviesDescending() {
var order = new org.springframework.data.elasticsearch.core.query.Order(Sort.Direction.DESC, var order = new org.springframework.data.elasticsearch.core.query.Order(Sort.Direction.DESC,
"movies.actors.yearOfBirth") // "movies.actors.yearOfBirth") //
.withNested( // .withNested( //
Nested.builder("movies") // Nested.builder("movies") //
.withNested(Nested.builder("movies.actors") // .withNested(Nested.builder("movies.actors") //
.build()) // .build()) //
.build()); .build());
var query = Query.findAll().addSort(Sort.by(order)); var query = Query.findAll().addSort(Sort.by(order));
var searchHits = operations.search(query, Director.class); var searchHits = operations.search(query, Director.class);
@ -132,32 +132,32 @@ var query = Query.findAll().addSort(Sort.by(order));
assertThat(searchHits.getSearchHit(0).getContent().id).isEqualTo(stanleyKubrik.id); assertThat(searchHits.getSearchHit(0).getContent().id).isEqualTo(stanleyKubrik.id);
var sortValues = searchHits.getSearchHit(0).getSortValues(); var sortValues = searchHits.getSearchHit(0).getSortValues();
assertThat(sortValues).hasSize(1); assertThat(sortValues).hasSize(1);
assertThat(sortValues.get(0)).isEqualTo("1959"); assertThat(sortValues.get(0)).isEqualTo(1959L);
assertThat(searchHits.getSearchHit(1).getContent().id).isEqualTo(francisFordCoppola.id); assertThat(searchHits.getSearchHit(1).getContent().id).isEqualTo(francisFordCoppola.id);
sortValues = searchHits.getSearchHit(1).getSortValues(); sortValues = searchHits.getSearchHit(1).getSortValues();
assertThat(sortValues).hasSize(1); assertThat(sortValues).hasSize(1);
assertThat(sortValues.get(0)).isEqualTo("1946"); assertThat(sortValues.get(0)).isEqualTo(1946L);
} }
@Test // #1784 @Test // #1784
@DisplayName("should sort directors by year of birth of male actor in their movies descending") @DisplayName("should sort directors by year of birth of male actor in their movies descending")
void shouldSortDirectorsByYearOfBirthOfMaleActorInTheirMoviesDescending() { void shouldSortDirectorsByYearOfBirthOfMaleActorInTheirMoviesDescending() {
var filter = StringQuery.builder(""" var filter = StringQuery.builder("""
{ "term": {"movies.actors.sex": "m"} } { "term": {"movies.actors.sex": "m"} }
""").build(); """).build();
var order = new org.springframework.data.elasticsearch.core.query.Order(Sort.Direction.DESC, var order = new org.springframework.data.elasticsearch.core.query.Order(Sort.Direction.DESC,
"movies.actors.yearOfBirth") // "movies.actors.yearOfBirth") //
.withNested( // .withNested( //
Nested.builder("movies") // Nested.builder("movies") //
.withNested( // .withNested( //
Nested.builder("movies.actors") // Nested.builder("movies.actors") //
.withFilter(filter) // .withFilter(filter) //
.build()) // .build()) //
.build()); .build());
var query = Query.findAll().addSort(Sort.by(order)); var query = Query.findAll().addSort(Sort.by(order));
var searchHits = operations.search(query, Director.class); var searchHits = operations.search(query, Director.class);
@ -166,12 +166,12 @@ var query = Query.findAll().addSort(Sort.by(order));
assertThat(searchHits.getSearchHit(0).getContent().id).isEqualTo(stanleyKubrik.id); assertThat(searchHits.getSearchHit(0).getContent().id).isEqualTo(stanleyKubrik.id);
var sortValues = searchHits.getSearchHit(0).getSortValues(); var sortValues = searchHits.getSearchHit(0).getSortValues();
assertThat(sortValues).hasSize(1); assertThat(sortValues).hasSize(1);
assertThat(sortValues.get(0)).isEqualTo("1959"); assertThat(sortValues.get(0)).isEqualTo(1959L);
assertThat(searchHits.getSearchHit(1).getContent().id).isEqualTo(francisFordCoppola.id); assertThat(searchHits.getSearchHit(1).getContent().id).isEqualTo(francisFordCoppola.id);
sortValues = searchHits.getSearchHit(1).getSortValues(); sortValues = searchHits.getSearchHit(1).getSortValues();
assertThat(sortValues).hasSize(1); assertThat(sortValues).hasSize(1);
assertThat(sortValues.get(0)).isEqualTo("1940"); assertThat(sortValues.get(0)).isEqualTo(1940L);
} }
@Document(indexName = "#{@indexNameProvider.indexName()}") @Document(indexName = "#{@indexNameProvider.indexName()}")