diff --git a/Jenkinsfile b/Jenkinsfile index 7e73d1ece..dd5ccd2cd 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -3,7 +3,7 @@ pipeline { triggers { pollSCM 'H/10 * * * *' - upstream(upstreamProjects: "spring-data-commons/main", threshold: hudson.model.Result.SUCCESS) + upstream(upstreamProjects: "spring-data-commons/3.0.x", threshold: hudson.model.Result.SUCCESS) } options { @@ -16,14 +16,14 @@ pipeline { parallel { stage('Publish JDK 17 + Cassandra 3.11') { when { - changeset "ci/openjdk17-cassandra-3.11/**" + changeset "ci/openjdk17-8-cassandra-3.11/**" } agent { label 'data' } options { timeout(time: 30, unit: 'MINUTES') } steps { script { - def image = docker.build("springci/spring-data-openjdk17-cassandra-3.11", "ci/openjdk17-cassandra-3.11/") + def image = docker.build("springci/spring-data-openjdk17-8-cassandra-3.11", "ci/openjdk17-8-cassandra-3.11/") docker.withRegistry('', 'hub.docker.com-springbuildmaster') { image.push() } @@ -33,7 +33,7 @@ pipeline { } } - stage("test: baseline (jdk17)") { + stage("test: baseline (Java 17)") { when { beforeAgent(true) anyOf { @@ -51,9 +51,9 @@ pipeline { steps { script { docker.withRegistry('', 'hub.docker.com-springbuildmaster') { - docker.image('springci/spring-data-openjdk17-cassandra-3.11:latest').inside('-u root -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v $HOME:/tmp/jenkins-home') { + docker.image('springci/spring-data-openjdk17-8-cassandra-3.11:latest').inside('-v $HOME:/tmp/jenkins-home') { sh 'mkdir -p /tmp/jenkins-home' - sh 'JAVA_HOME=/opt/java/openjdk /opt/cassandra/bin/cassandra -R &' + sh 'JAVA_HOME=/opt/java/openjdk8 /opt/cassandra/bin/cassandra -R &' sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml -Pci,external-cassandra clean dependency:list verify -Dsort -U -B' } } @@ -81,7 +81,7 @@ pipeline { steps { script { docker.withRegistry('', 'hub.docker.com-springbuildmaster') { - docker.image('adoptopenjdk/openjdk17:latest').inside('-u root -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v $HOME:/tmp/jenkins-home') { + docker.image('openjdk:17-bullseye').inside('-v $HOME:/tmp/jenkins-home') { sh 'mkdir -p /tmp/jenkins-home' sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml -Pci,artifactory ' + '-Dartifactory.server=https://repo.spring.io ' + @@ -96,36 +96,6 @@ pipeline { } } } - - stage('Publish documentation') { - when { - branch 'main' - } - agent { - label 'data' - } - options { timeout(time: 20, unit: 'MINUTES') } - - environment { - ARTIFACTORY = credentials('02bd1690-b54f-4c9f-819d-a77cb7a9822c') - } - - steps { - script { - docker.withRegistry('', 'hub.docker.com-springbuildmaster') { - docker.image('adoptopenjdk/openjdk17:latest').inside('-u root -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v $HOME:/tmp/jenkins-home') { - sh 'mkdir -p /tmp/jenkins-home' - sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml -Pci,distribute ' + - '-Dartifactory.server=https://repo.spring.io ' + - "-Dartifactory.username=${ARTIFACTORY_USR} " + - "-Dartifactory.password=${ARTIFACTORY_PSW} " + - "-Dartifactory.distribution-repository=temp-private-local " + - '-Dmaven.test.skip=true clean deploy -U -B' - } - } - } - } - } } post { diff --git a/ci/openjdk11-8-cassandra-3.11/Dockerfile b/ci/openjdk11-8-cassandra-3.11/Dockerfile deleted file mode 100644 index 64354f436..000000000 --- a/ci/openjdk11-8-cassandra-3.11/Dockerfile +++ /dev/null @@ -1,24 +0,0 @@ -FROM adoptopenjdk/openjdk11:latest - -RUN set -eux; \ - CASSANDRA_URL='https://archive.apache.org/dist/cassandra/3.11.10/apache-cassandra-3.11.10-bin.tar.gz'; \ - sed -i -e 's/http/https/g' /etc/apt/sources.list ; \ - curl -LfsSo /tmp/cassandra.tar.gz ${CASSANDRA_URL}; \ - mkdir -p /opt/cassandra /opt/cassandra/data /opt/cassandra/logs; \ - cd /opt/cassandra; \ - tar -xf /tmp/cassandra.tar.gz --strip-components=1; \ - rm -rf /tmp/cassandra.tar.gz; \ - chmod -R a+rwx /opt/cassandra; \ - useradd -d /home/jenkins-docker -m -u 1001 -U jenkins-docker; - -RUN set -eux; \ - BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10/OpenJDK8U-jdk_x64_linux_hotspot_8u292b10.tar.gz'; \ - curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \ - mkdir -p /opt/java/openjdk8; \ - cd /opt/java/openjdk8; \ - tar -xf /tmp/openjdk.tar.gz --strip-components=1; \ - rm -rf /tmp/openjdk.tar.gz; - -ENV PATH="/opt/java/openjdk8/bin:$PATH" -ENV MAX_HEAP_SIZE=1500M -ENV HEAP_NEWSIZE=300M diff --git a/ci/openjdk17-8-cassandra-3.11/Dockerfile b/ci/openjdk17-8-cassandra-3.11/Dockerfile index 0a09eebe8..d33f3627e 100644 --- a/ci/openjdk17-8-cassandra-3.11/Dockerfile +++ b/ci/openjdk17-8-cassandra-3.11/Dockerfile @@ -1,7 +1,7 @@ FROM openjdk:17-bullseye RUN set -eux; \ - CASSANDRA_URL='https://archive.apache.org/dist/cassandra/3.11.10/apache-cassandra-3.11.10-bin.tar.gz'; \ + CASSANDRA_URL='https://archive.apache.org/dist/cassandra/3.11.11/apache-cassandra-3.11.11-bin.tar.gz'; \ sed -i -e 's/http/https/g' /etc/apt/sources.list ; \ curl -LfsSo /tmp/cassandra.tar.gz ${CASSANDRA_URL}; \ mkdir -p /opt/cassandra /opt/cassandra/data /opt/cassandra/logs; \ diff --git a/ci/openjdk17-cassandra-3.11/Dockerfile b/ci/openjdk17-cassandra-3.11/Dockerfile deleted file mode 100644 index 1ab854563..000000000 --- a/ci/openjdk17-cassandra-3.11/Dockerfile +++ /dev/null @@ -1,23 +0,0 @@ -FROM adoptopenjdk/openjdk17:latest - -RUN set -eux; \ - CASSANDRA_URL='https://www-us.apache.org/dist/cassandra/3.11.11/apache-cassandra-3.11.11-bin.tar.gz'; \ - curl -LfsSo /tmp/cassandra.tar.gz ${CASSANDRA_URL}; \ - mkdir -p /opt/cassandra /opt/cassandra/data /opt/cassandra/logs; \ - cd /opt/cassandra; \ - tar -xf /tmp/cassandra.tar.gz --strip-components=1; \ - rm -rf /tmp/cassandra.tar.gz; \ - chmod -R a+rwx /opt/cassandra; \ - useradd -d /home/jenkins-docker -m -u 1001 -U jenkins-docker; - -RUN set -eux; \ - BINARY_URL='https://github.com/AdoptOpenJDK/openjdk17-binaries/releases/download/jdk17/OpenJDK17-jdk_x64_linux_hotspot_17.tar.gz'; \ - curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \ - mkdir -p /opt/java/openjdk17; \ - cd /opt/java/openjdk17; \ - tar -xf /tmp/openjdk.tar.gz --strip-components=1; \ - rm -rf /tmp/openjdk.tar.gz; - -ENV PATH="/opt/java/openjdk17/bin:$PATH" -ENV MAX_HEAP_SIZE=1500M -ENV HEAP_NEWSIZE=300M diff --git a/ci/openjdk8-cassandra-3.11/Dockerfile b/ci/openjdk8-cassandra-3.11/Dockerfile deleted file mode 100644 index 6519226c7..000000000 --- a/ci/openjdk8-cassandra-3.11/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM adoptopenjdk/openjdk8:latest - -RUN set -eux; \ - CASSANDRA_URL='https://archive.apache.org/dist/cassandra/3.11.10/apache-cassandra-3.11.10-bin.tar.gz'; \ - sed -i -e 's/http/https/g' /etc/apt/sources.list ; \ - curl -LfsSo /tmp/cassandra.tar.gz ${CASSANDRA_URL}; \ - mkdir -p /opt/cassandra /opt/cassandra/data /opt/cassandra/logs; \ - cd /opt/cassandra; \ - tar -xf /tmp/cassandra.tar.gz --strip-components=1; \ - rm -rf /tmp/cassandra.tar.gz; \ - chmod -R a+rwx /opt/cassandra; \ - useradd -d /home/jenkins-docker -m -u 1001 -U jenkins-docker; - -ENV MAX_HEAP_SIZE=1500M -ENV HEAP_NEWSIZE=300M diff --git a/spring-data-cassandra/pom.xml b/spring-data-cassandra/pom.xml index 20a9110a1..79a87991d 100644 --- a/spring-data-cassandra/pom.xml +++ b/spring-data-cassandra/pom.xml @@ -112,7 +112,7 @@ org.apache.geronimo.specs geronimo-jcdi_2.0_spec 1.0.1 - test + provided diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/QueryMapper.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/QueryMapper.java index dbc713946..8626ca4c3 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/QueryMapper.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/convert/QueryMapper.java @@ -121,12 +121,12 @@ public class QueryMapper { field.getProperty().filter(CassandraPersistentProperty::isCompositePrimaryKey).ifPresent(it -> { throw new IllegalArgumentException( - "Cannot use composite primary key directly. Reference a property of the composite primary key"); + "Cannot use composite primary key directly. Reference a property of the composite primary key"); }); field.getProperty().filter(CassandraPersistentProperty::hasOrdinal).ifPresent(it -> { throw new IllegalArgumentException( - String.format("Cannot reference tuple value elements, property [%s]", field.getMappedKey())); + String.format("Cannot reference tuple value elements, property [%s]", field.getMappedKey())); }); Predicate predicate = criteriaDefinition.getPredicate(); @@ -224,9 +224,7 @@ public class QueryMapper { }).toArray()); - return functionCall.getAlias() - .map(mappedFunctionCall::as) - .orElse(mappedFunctionCall); + return functionCall.getAlias().map(mappedFunctionCall::as).orElse(mappedFunctionCall); } throw new IllegalArgumentException(String.format("Selector [%s] not supported", selector)); @@ -345,18 +343,16 @@ public class QueryMapper { Field createPropertyField(@Nullable CassandraPersistentEntity entity, ColumnName key) { - return Optional.ofNullable(entity) - .map(e -> new MetadataBackedField(key, e, getMappingContext())) - .orElseGet(() -> new Field(key)); + return Optional.ofNullable(entity). map(e -> new MetadataBackedField(key, e, getMappingContext())) + .orElseGet(() -> new Field(key)); } ColumnType getColumnType(Field field, @Nullable Object value, ColumnTypeTransformer operator) { ColumnTypeResolver resolver = converter.getColumnTypeResolver(); - return field.getProperty() - .map(it -> operator.transform(resolver.resolve(it), it)) - .orElseGet(() -> resolver.resolve(value)); + return field.getProperty().map(it -> operator.transform(resolver.resolve(it), it)) + .orElseGet(() -> resolver.resolve(value)); } /** @@ -462,10 +458,8 @@ public class QueryMapper { static ColumnTypeTransformer of(Field field, CriteriaDefinition.Operator operator) { if (operator == CriteriaDefinition.Operators.CONTAINS) { - return field.getProperty() - .filter(CassandraPersistentProperty::isMapLike) - .map(it -> MAP_VALUE_TYPE) - .orElse(COLLECTION_COMPONENT_TYPE); + return field.getProperty().filter(CassandraPersistentProperty::isMapLike).map(it -> MAP_VALUE_TYPE) + .orElse(COLLECTION_COMPONENT_TYPE); } if (operator == CriteriaDefinition.Operators.CONTAINS_KEY) { diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/CassandraPersistentProperty.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/CassandraPersistentProperty.java index 1f00fb029..0415c0d1d 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/CassandraPersistentProperty.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/CassandraPersistentProperty.java @@ -134,12 +134,13 @@ public interface CassandraPersistentProperty } /** - * Determines whether this {@link CassandraPersistentProperty} is persisted (mapped) to an element ordinal - * when the owning type is a mapped tuple. + * Determines whether this {@link CassandraPersistentProperty} is persisted (mapped) to an element ordinal when the + * owning type is a mapped tuple. * - * @return a boolean value indicating whether this {@link CassandraPersistentProperty} is persisted (mapped) to - * an element ordinal when the owning type is a mapped tuple. + * @return a boolean value indicating whether this {@link CassandraPersistentProperty} is persisted (mapped) to an + * element ordinal when the owning type is a mapped tuple. * @see #getOrdinal() + * @since 4.0 */ default boolean hasOrdinal() { return getOrdinal() != null;