diff --git a/.editorconfig b/.editorconfig index 11a63aa..66cf685 100644 --- a/.editorconfig +++ b/.editorconfig @@ -8,3 +8,8 @@ indent_size=4 [*.{yml,yaml,sh}] indent_style=space indent_size=2 + +[*.java] +ij_java_class_count_to_use_import_on_demand = 100 +ij_java_imports_layout = jakarta.**,|,java.**,|,*,|,org.springframework.**,|,$* +ij_java_names_count_to_use_import_on_demand = 100 diff --git a/.github/workflows/build.yml b/.github/workflows/gradle-build.yml similarity index 73% rename from .github/workflows/build.yml rename to .github/workflows/gradle-build.yml index 050ccbe..f09d264 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/gradle-build.yml @@ -1,30 +1,28 @@ # This workflow will build a Java project with Gradle # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle -name: build +name: Gradle build on: - push: - branches: [ main, 1.3.x, 1.2.x, 1.1.x ] - pull_request: - branches: [ main, 1.3.x, 1.2.x, 1.1.x ] + workflow_call: + inputs: + java-version: + required: true + type: string jobs: build: runs-on: ubuntu-latest - strategy: - matrix: - java: [ '8', '11' ] - name: Java ${{ matrix.Java }} build + name: Java ${{ inputs.java-version }} build steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up JDK - uses: actions/setup-java@v2 + uses: actions/setup-java@v3 with: - java-version: ${{ matrix.java }} - distribution: adopt + java-version: ${{ inputs.java-version }} + distribution: temurin - name: Cache Gradle packages - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: | ~/.gradle/caches diff --git a/.github/workflows/java-17-baseline.yml b/.github/workflows/java-17-baseline.yml new file mode 100644 index 0000000..e1d081a --- /dev/null +++ b/.github/workflows/java-17-baseline.yml @@ -0,0 +1,16 @@ +name: Java 17 baseline build + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + build: + strategy: + matrix: + java: [ '17' ] + uses: ./.github/workflows/gradle-build.yml + with: + java-version: ${{ matrix.java }} diff --git a/.github/workflows/java-8-baseline.yml b/.github/workflows/java-8-baseline.yml new file mode 100644 index 0000000..0ea16bd --- /dev/null +++ b/.github/workflows/java-8-baseline.yml @@ -0,0 +1,16 @@ +name: Java 8 baseline build + +on: + push: + branches: [ 1.6.x, 1.5.x, 1.4.x ] + pull_request: + branches: [ 1.6.x, 1.5.x, 1.4.x ] + +jobs: + build: + strategy: + matrix: + java: [ '8', '11', '17' ] + uses: ./.github/workflows/gradle-build.yml + with: + java-version: ${{ matrix.java }} diff --git a/.sdkmanrc b/.sdkmanrc new file mode 100644 index 0000000..95c6084 --- /dev/null +++ b/.sdkmanrc @@ -0,0 +1,3 @@ +# Enable auto-env through the sdkman_auto_env config +# Add key=value pairs of SDKs to use below +java=17.0.5-librca diff --git a/build.gradle b/build.gradle index 08ea7cd..4c91422 100644 --- a/build.gradle +++ b/build.gradle @@ -18,32 +18,25 @@ import java.util.concurrent.ConcurrentHashMap buildscript { ext { - awaitilityVersion = "4.2.0" blockHoundVersion = "1.0.6.RELEASE" cfJavaClientVersion = "5.9.0.RELEASE" - checkstyleVersion = "8.37" commonsTextVersion = "1.10.0" immutablesVersion = "2.9.2" - openServiceBrokerVersion = "3.5.3" - pmdVersion = "6.29.0" - springBootVersion = "2.7.5" - springCredhubVersion = "2.3.0" - springFrameworkVersion = "5.3.22" - wiremockVersion = "2.27.2" + openServiceBrokerVersion = "4.0.0-SNAPSHOT" + springCredhubVersion = "3.0.0-SNAPSHOT" + springFrameworkVersion = "6.0.0" + wiremockVersion = "2.35.0" } } plugins { - id "io.spring.nohttp" version "0.0.10" + id "io.spring.nohttp" id 'distribution' id 'jacoco' } ext { - javaApi = "https://docs.oracle.com/javase/8/docs/api/" - if (JavaVersion.current() >= JavaVersion.VERSION_11) { - javaApi = "https://docs.oracle.com/en/java/javase/11/docs/api" - } + javaApi = "https://docs.oracle.com/javase/17/docs/api/" javadocLinks = [ javaApi, "https://docs.spring.io/spring-framework/docs/${springFrameworkVersion}/javadoc-api/" @@ -53,17 +46,6 @@ ext { description = "Spring Cloud App Broker" allprojects { - repositories { - mavenCentral() - maven { url "https://repo.spring.io/release" } - if (version =~ /((-M|-RC)[0-9]+|-SNAPSHOT)$/) { - maven { url "https://repo.spring.io/milestone" } - } - if (version.endsWith('-SNAPSHOT')) { - maven { url "https://repo.spring.io/snapshot" } - } - } - afterEvaluate { project -> if (project.description == null || project.description.isEmpty()) { throw new InvalidUserDataException("A project description is required for publishing to maven central") @@ -78,8 +60,9 @@ configure(javaProjects) { task dependencyReport(type: DependencyReportTask) java { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } } [compileJava, compileTestJava]*.options*.encoding = "UTF-8" @@ -112,6 +95,11 @@ configure(javaProjects) { scanForTestClasses = true group = "verification" + // add jvm arg to resolve BlockHound issues, see https://github.com/reactor/BlockHound/issues/33 + jvmArgs += [ + "-XX:+AllowRedefinitionToAddDeleteMethods" + ] + testLogging { exceptionFormat = "full" events = ["passed", "skipped", "failed"] @@ -221,7 +209,6 @@ configure(staticAnalysisProjects) { checkstyle { configDirectory = rootProject.file("src/checkstyle") - toolVersion = "${checkstyleVersion}" showViolations = true } checkstyleMain { @@ -232,7 +219,6 @@ configure(staticAnalysisProjects) { } pmd { - toolVersion = "${pmdVersion}" consoleOutput = true } pmdMain { @@ -343,7 +329,7 @@ task api(type: Javadoc) { } distributions { - def documentation = copySpec { + def documentation = project.copySpec { into('reference') { from(project.tasks.findByPath(':spring-cloud-app-broker-docs:asciidoctor'), project.tasks.findByPath(':spring-cloud-app-broker-docs:asciidoctorPdf')) @@ -406,15 +392,15 @@ task codeCoverageReport(type: JacocoReport) { } reports { - xml.enabled true + xml.required = true xml.destination new File("${buildDir}/reports/jacoco/report.xml") - html.enabled false - csv.enabled false + html.required = false + csv.required = false } } wrapper { - gradleVersion = "7.5.1" + gradleVersion = "7.6" } nohttp { diff --git a/ci/images/app-broker-ci/Dockerfile b/ci/images/app-broker-ci/Dockerfile index 8604cb4..e1f64d9 100644 --- a/ci/images/app-broker-ci/Dockerfile +++ b/ci/images/app-broker-ci/Dockerfile @@ -1,12 +1,17 @@ -FROM harbor-repo.vmware.com/dockerhub-proxy-cache/library/ubuntu:bionic +FROM harbor-repo.vmware.com/dockerhub-proxy-cache/library/ubuntu:jammy -RUN apt-get update && apt-get install --no-install-recommends -y \ - ca-certificates \ - curl \ - git \ - gnupg \ - jq \ - net-tools +ARG BBL_CLI_VERSION=8.4.110 +ARG BOSH_CLI_VERSION=7.0.1 +ARG CONCOURSE_JAVA_SCRIPTS_VERSION=0.0.4 +ARG CONCOURSE_RELEASE_SCRIPTS_VERSION=0.3.4 +ARG CREDHUB_CLI_VERSION=2.9.8 + +RUN apt-get update && \ + apt-get install --no-install-recommends -y \ + ca-certificates \ + curl \ + gnupg && \ + apt-get clean RUN mkdir -p /etc/apt/keyrings RUN curl -L 'https://cli.github.com/packages/githubcli-archive-keyring.gpg' | gpg --dearmor -o /etc/apt/keyrings/githubcli-archive-keyring.gpg @@ -15,25 +20,23 @@ RUN curl -L 'https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key' RUN echo "deb [signed-by=/etc/apt/keyrings/cloudfoundry-cli-keyring.gpg] https://packages.cloudfoundry.org/debian stable main" | tee /etc/apt/sources.list.d/cloudfoundry-cli.list RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list -RUN apt-get update && \ - apt-get -qy --no-install-recommends install \ - cf-cli \ - gh && \ +RUN apt-get update && \ + apt-get install --no-install-recommends -y \ + cf8-cli \ + gh \ + git \ + jq \ + net-tools \ + openjdk-17-jdk-headless && \ apt-get clean -ENV JAVA_HOME /opt/openjdk -ENV PATH $JAVA_HOME/bin:$PATH -RUN mkdir -p /opt/openjdk && \ - cd /opt/openjdk && \ - curl -L https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u292-b10/OpenJDK8U-jdk_x64_linux_hotspot_8u292b10.tar.gz | tar xz --strip-components=1 +ADD "https://raw.githubusercontent.com/spring-io/concourse-java-scripts/v$CONCOURSE_JAVA_SCRIPTS_VERSION/concourse-java.sh" /opt/ +ADD "https://repo.spring.io/libs-snapshot/io/spring/concourse/releasescripts/concourse-release-scripts/$CONCOURSE_RELEASE_SCRIPTS_VERSION/concourse-release-scripts-$CONCOURSE_RELEASE_SCRIPTS_VERSION.jar" /opt/ -ADD https://raw.githubusercontent.com/spring-io/concourse-java-scripts/v0.0.4/concourse-java.sh /opt/ -ADD https://repo.spring.io/libs-snapshot/io/spring/concourse/releasescripts/concourse-release-scripts/0.3.4-SNAPSHOT/concourse-release-scripts-0.3.4-SNAPSHOT.jar /opt/ +RUN cd /usr/local/bin && curl -L "https://github.com/cloudfoundry-incubator/credhub-cli/releases/download/$CREDHUB_CLI_VERSION/credhub-linux-$CREDHUB_CLI_VERSION.tgz" | tar xz -RUN cd /usr/local/bin && curl -L https://github.com/cloudfoundry-incubator/credhub-cli/releases/download/2.9.0/credhub-linux-2.9.0.tgz | tar xz - -RUN curl -L https://github.com/cloudfoundry/bosh-bootloader/releases/download/v8.4.43/bbl-v8.4.43_linux_x86-64 --output /usr/local/bin/bbl && \ +RUN curl -L "https://github.com/cloudfoundry/bosh-bootloader/releases/download/v$BBL_CLI_VERSION/bbl-v${BBL_CLI_VERSION}_linux_x86-64" --output /usr/local/bin/bbl && \ chmod +x /usr/local/bin/bbl -RUN curl -L https://github.com/cloudfoundry/bosh-cli/releases/download/v6.4.4/bosh-cli-6.4.4-linux-amd64 --output /usr/local/bin/bosh && \ +RUN curl -L "https://github.com/cloudfoundry/bosh-cli/releases/download/v$BOSH_CLI_VERSION/bosh-cli-$BOSH_CLI_VERSION-linux-amd64" --output /usr/local/bin/bosh && \ chmod +x /usr/local/bin/bosh diff --git a/ci/scripts/acceptance-tests.sh b/ci/scripts/acceptance-tests.sh index 93f2661..5782c25 100755 --- a/ci/scripts/acceptance-tests.sh +++ b/ci/scripts/acceptance-tests.sh @@ -50,10 +50,14 @@ EOF } prepare_cf() { - local test_instances_org - test_instances_org="$DEFAULT_ORG-instances" + local -r test_instances_org="$DEFAULT_ORG-instances" - cf login -a "$API_HOST" -u "$USERNAME" -p "$PASSWORD" -o system --skip-ssl-validation "$SKIP_SSL_VALIDATION" + local skip_ssl_validation="" + if [ "$SKIP_SSL_VALIDATION" = "true" ]; then + skip_ssl_validation="--skip-ssl-validation" + fi + + cf login -a "$API_HOST" -u "$USERNAME" -p "$PASSWORD" -o system "$skip_ssl_validation" cf create-org "$DEFAULT_ORG" cf create-space "$DEFAULT_SPACE" -o "$DEFAULT_ORG" diff --git a/gradle.properties b/gradle.properties index 2eec92f..03ecfc3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version=1.6.0-SNAPSHOT +version=2.0.0-SNAPSHOT group=org.springframework.cloud onlyShowStandardStreamsOnTestFailure = false diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e708b1c..249e583 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ae04661..070cb70 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 4f906e0..a69d9cb 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ -#!/usr/bin/env sh +#!/bin/sh # -# Copyright 2015 the original author or authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,67 +17,101 @@ # ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +APP_BASE_NAME=${0##*/} # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar @@ -87,9 +121,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -98,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -106,80 +140,101 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=`expr $i + 1` - done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index ac1b06f..53a6b23 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,7 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -75,13 +75,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/settings.gradle b/settings.gradle index 00bfb91..ff69345 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,11 +1,25 @@ pluginManagement { plugins { - id 'org.springframework.boot' version "2.7.5" + id "io.spring.nohttp" version "0.0.10" + id 'org.springframework.boot' version "3.0.0" + id 'org.asciidoctor.jvm.pdf' version '3.3.2' + id 'org.asciidoctor.jvm.convert' version '3.3.2' } + repositories { + gradlePluginPortal() + } +} + +dependencyResolutionManagement { repositories { mavenCentral() maven { url "https://repo.spring.io/release" } - maven { url "https://plugins.gradle.org/m2/" } + if (version =~ /((-M|-RC)[0-9]+|-SNAPSHOT)$/) { + maven { url "https://repo.spring.io/milestone" } + } + if (version.endsWith('-SNAPSHOT')) { + maven { url "https://repo.spring.io/snapshot" } + } } } diff --git a/spring-cloud-app-broker-acceptance-tests/build.gradle b/spring-cloud-app-broker-acceptance-tests/build.gradle index ca29d77..f8c8157 100644 --- a/spring-cloud-app-broker-acceptance-tests/build.gradle +++ b/spring-cloud-app-broker-acceptance-tests/build.gradle @@ -14,6 +14,8 @@ * limitations under the License. */ +import org.springframework.boot.gradle.plugin.SpringBootPlugin + plugins { id 'org.springframework.boot' } @@ -21,7 +23,7 @@ plugins { description = "Spring Cloud App Broker Acceptance Tests" dependencies { - api platform("org.springframework.boot:spring-boot-dependencies:${springBootVersion}") + api platform(SpringBootPlugin.BOM_COORDINATES) api project(":spring-cloud-starter-app-broker-cloudfoundry") api "org.springframework.boot:spring-boot-starter-webflux" diff --git a/spring-cloud-app-broker-acceptance-tests/src/test/java/org/springframework/cloud/appbroker/acceptance/CloudFoundryAcceptanceTest.java b/spring-cloud-app-broker-acceptance-tests/src/test/java/org/springframework/cloud/appbroker/acceptance/CloudFoundryAcceptanceTest.java index 34a8917..a7095e5 100644 --- a/spring-cloud-app-broker-acceptance-tests/src/test/java/org/springframework/cloud/appbroker/acceptance/CloudFoundryAcceptanceTest.java +++ b/spring-cloud-app-broker-acceptance-tests/src/test/java/org/springframework/cloud/appbroker/acceptance/CloudFoundryAcceptanceTest.java @@ -30,8 +30,6 @@ import java.util.Set; import java.util.UUID; import java.util.concurrent.CountDownLatch; -import javax.net.ssl.SSLException; - import com.jayway.jsonpath.Configuration; import com.jayway.jsonpath.DocumentContext; import com.jayway.jsonpath.JsonPath; @@ -42,6 +40,7 @@ import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider; import com.jayway.jsonpath.spi.mapper.MappingProvider; import io.netty.handler.ssl.SslContextBuilder; import io.netty.handler.ssl.util.InsecureTrustManagerFactory; +import javax.net.ssl.SSLException; import org.cloudfoundry.operations.applications.ApplicationDetail; import org.cloudfoundry.operations.applications.ApplicationEnvironments; import org.cloudfoundry.operations.applications.ApplicationSummary; diff --git a/spring-cloud-app-broker-acceptance-tests/src/test/java/org/springframework/cloud/appbroker/acceptance/UpdateInstanceAcceptanceTest.java b/spring-cloud-app-broker-acceptance-tests/src/test/java/org/springframework/cloud/appbroker/acceptance/UpdateInstanceAcceptanceTest.java index b19ea50..1e22f89 100644 --- a/spring-cloud-app-broker-acceptance-tests/src/test/java/org/springframework/cloud/appbroker/acceptance/UpdateInstanceAcceptanceTest.java +++ b/spring-cloud-app-broker-acceptance-tests/src/test/java/org/springframework/cloud/appbroker/acceptance/UpdateInstanceAcceptanceTest.java @@ -73,7 +73,7 @@ class UpdateInstanceAcceptanceTest extends CloudFoundryAcceptanceTest { "spring.cloud.appbroker.services[0].apps[0].parameters-transformers[1].name=PropertyMapping", "spring.cloud.appbroker.services[0].apps[0].parameters-transformers[1].args.include=count" }) - public void deployAppsOnUpdateService() { + void deployAppsOnUpdateService() { // given a service instance is created createServiceInstance(SI_NAME); diff --git a/spring-cloud-app-broker-acceptance-tests/src/test/java/org/springframework/cloud/appbroker/acceptance/fixtures/cf/CloudFoundryProperties.java b/spring-cloud-app-broker-acceptance-tests/src/test/java/org/springframework/cloud/appbroker/acceptance/fixtures/cf/CloudFoundryProperties.java index 8a7accd..095aa0d 100644 --- a/spring-cloud-app-broker-acceptance-tests/src/test/java/org/springframework/cloud/appbroker/acceptance/fixtures/cf/CloudFoundryProperties.java +++ b/spring-cloud-app-broker-acceptance-tests/src/test/java/org/springframework/cloud/appbroker/acceptance/fixtures/cf/CloudFoundryProperties.java @@ -16,10 +16,10 @@ package org.springframework.cloud.appbroker.acceptance.fixtures.cf; -import java.net.URI; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotBlank; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotBlank; +import java.net.URI; import org.cloudfoundry.reactor.ProxyConfiguration; diff --git a/spring-cloud-app-broker-acceptance-tests/src/test/java/org/springframework/cloud/appbroker/acceptance/fixtures/cf/CloudFoundryService.java b/spring-cloud-app-broker-acceptance-tests/src/test/java/org/springframework/cloud/appbroker/acceptance/fixtures/cf/CloudFoundryService.java index 154fe4d..5ac66e8 100644 --- a/spring-cloud-app-broker-acceptance-tests/src/test/java/org/springframework/cloud/appbroker/acceptance/fixtures/cf/CloudFoundryService.java +++ b/spring-cloud-app-broker-acceptance-tests/src/test/java/org/springframework/cloud/appbroker/acceptance/fixtures/cf/CloudFoundryService.java @@ -76,6 +76,10 @@ public class CloudFoundryService { private static final String DEPLOYER_PROPERTY_PREFIX = "spring.cloud.appbroker.deployer.cloudfoundry."; + private static final String JBP_CONFIG_OPEN_JDK_JRE_ENV_VAR_NAME = "JBP_CONFIG_OPEN_JDK_JRE"; + + private static final String JBP_CONFIG_OPEN_JDK_JRE_17 = "{ jre: { version: 17.+ } }"; + private static final int EXPECTED_PROPERTY_PARTS = 2; private final CloudFoundryClient cloudFoundryClient; @@ -445,6 +449,7 @@ public class CloudFoundryService { private Map appBrokerDeployerEnvironmentVariables(String brokerClientId) { Map deployerVariables = new HashMap<>(); + deployerVariables.put(JBP_CONFIG_OPEN_JDK_JRE_ENV_VAR_NAME, JBP_CONFIG_OPEN_JDK_JRE_17); deployerVariables.put(DEPLOYER_PROPERTY_PREFIX + "api-host", cloudFoundryProperties.getApiHost()); deployerVariables.put(DEPLOYER_PROPERTY_PREFIX + "api-port", diff --git a/spring-cloud-app-broker-autoconfigure/build.gradle b/spring-cloud-app-broker-autoconfigure/build.gradle index 36d5e59..11cdee6 100644 --- a/spring-cloud-app-broker-autoconfigure/build.gradle +++ b/spring-cloud-app-broker-autoconfigure/build.gradle @@ -14,6 +14,12 @@ * limitations under the License. */ +import org.springframework.boot.gradle.plugin.SpringBootPlugin + +plugins { + id 'org.springframework.boot' apply false +} + description = "Spring Cloud App Broker Autoconfiguration" java { @@ -23,11 +29,11 @@ java { } dependencies { - annotationProcessor platform("org.springframework.boot:spring-boot-dependencies:${springBootVersion}") + annotationProcessor platform(SpringBootPlugin.BOM_COORDINATES) annotationProcessor "org.springframework.boot:spring-boot-configuration-processor" annotationProcessor "org.springframework.boot:spring-boot-autoconfigure-processor" - api platform("org.springframework.boot:spring-boot-dependencies:${springBootVersion}") + api platform(SpringBootPlugin.BOM_COORDINATES) api project(":spring-cloud-app-broker-core") api project(":spring-cloud-app-broker-deployer") api project(":spring-cloud-app-broker-deployer-cloudfoundry") diff --git a/spring-cloud-app-broker-autoconfigure/src/main/resources/META-INF/spring.factories b/spring-cloud-app-broker-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports similarity index 69% rename from spring-cloud-app-broker-autoconfigure/src/main/resources/META-INF/spring.factories rename to spring-cloud-app-broker-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index db771ab..c9fcdb1 100644 --- a/spring-cloud-app-broker-autoconfigure/src/main/resources/META-INF/spring.factories +++ b/spring-cloud-app-broker-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,6 +1,5 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -org.springframework.cloud.appbroker.autoconfigure.AppBrokerAutoConfiguration,\ -org.springframework.cloud.appbroker.autoconfigure.CloudFoundryAppDeployerAutoConfiguration,\ -org.springframework.cloud.appbroker.autoconfigure.CredHubAutoConfiguration,\ -org.springframework.cloud.appbroker.autoconfigure.ServiceInstanceRecentLogsAutoConfiguration,\ +org.springframework.cloud.appbroker.autoconfigure.AppBrokerAutoConfiguration +org.springframework.cloud.appbroker.autoconfigure.CloudFoundryAppDeployerAutoConfiguration +org.springframework.cloud.appbroker.autoconfigure.CredHubAutoConfiguration +org.springframework.cloud.appbroker.autoconfigure.ServiceInstanceRecentLogsAutoConfiguration org.springframework.cloud.appbroker.autoconfigure.ServiceInstanceLogStreamAutoConfiguration diff --git a/spring-cloud-app-broker-core/build.gradle b/spring-cloud-app-broker-core/build.gradle index c970161..2b117b5 100644 --- a/spring-cloud-app-broker-core/build.gradle +++ b/spring-cloud-app-broker-core/build.gradle @@ -1,3 +1,5 @@ +import org.springframework.boot.gradle.plugin.SpringBootPlugin + /* * Copyright 2002-2020 the original author or authors. * @@ -14,13 +16,17 @@ * limitations under the License. */ +plugins { + id 'org.springframework.boot' apply false +} + description = "Spring Cloud App Broker Core" dependencies { api project(":spring-cloud-app-broker-deployer") api "org.springframework.cloud:spring-cloud-open-service-broker-core:${openServiceBrokerVersion}" - api platform("org.springframework.boot:spring-boot-dependencies:${springBootVersion}") + api platform(SpringBootPlugin.BOM_COORDINATES) api "org.springframework:spring-core" api "org.springframework:spring-context" api "io.projectreactor:reactor-core" diff --git a/spring-cloud-app-broker-core/src/test/java/org/springframework/cloud/appbroker/state/InMemoryServiceInstanceStateRepositoryTest.java b/spring-cloud-app-broker-core/src/test/java/org/springframework/cloud/appbroker/state/InMemoryServiceInstanceStateRepositoryTest.java index c4b3b5c..b2caf55 100644 --- a/spring-cloud-app-broker-core/src/test/java/org/springframework/cloud/appbroker/state/InMemoryServiceInstanceStateRepositoryTest.java +++ b/spring-cloud-app-broker-core/src/test/java/org/springframework/cloud/appbroker/state/InMemoryServiceInstanceStateRepositoryTest.java @@ -64,8 +64,7 @@ class InMemoryServiceInstanceStateRepositoryTest { .assertNext(serviceInstanceState -> { assertThat(serviceInstanceState.getOperationState()).isEqualTo(OperationState.IN_PROGRESS); assertThat(serviceInstanceState.getDescription()).isEqualTo("bar"); - assertThat(serviceInstanceState.getLastUpdated()) - .isEqualToIgnoringSeconds(new Date()); + assertThat(serviceInstanceState.getLastUpdated()).isInSameMinuteWindowAs(new Date()); }) .verifyComplete(); diff --git a/spring-cloud-app-broker-deployer-cloudfoundry/build.gradle b/spring-cloud-app-broker-deployer-cloudfoundry/build.gradle index 3f33180..52b943f 100644 --- a/spring-cloud-app-broker-deployer-cloudfoundry/build.gradle +++ b/spring-cloud-app-broker-deployer-cloudfoundry/build.gradle @@ -14,10 +14,16 @@ * limitations under the License. */ +import org.springframework.boot.gradle.plugin.SpringBootPlugin + +plugins { + id 'org.springframework.boot' apply false +} + description = "Spring Cloud App Broker Deployer Cloud Foundry" dependencies { - api platform("org.springframework.boot:spring-boot-dependencies:${springBootVersion}") + api platform(SpringBootPlugin.BOM_COORDINATES) api project(":spring-cloud-app-broker-deployer") api "org.cloudfoundry:cloudfoundry-client-reactor:${cfJavaClientVersion}" api "org.cloudfoundry:cloudfoundry-operations:${cfJavaClientVersion}" diff --git a/spring-cloud-app-broker-deployer-cloudfoundry/src/test/java/org/springframework/cloud/appbroker/deployer/cloudfoundry/CloudFoundryAppDeployerTest.java b/spring-cloud-app-broker-deployer-cloudfoundry/src/test/java/org/springframework/cloud/appbroker/deployer/cloudfoundry/CloudFoundryAppDeployerTest.java index 3baf2c9..4b3cb65 100644 --- a/spring-cloud-app-broker-deployer-cloudfoundry/src/test/java/org/springframework/cloud/appbroker/deployer/cloudfoundry/CloudFoundryAppDeployerTest.java +++ b/spring-cloud-app-broker-deployer-cloudfoundry/src/test/java/org/springframework/cloud/appbroker/deployer/cloudfoundry/CloudFoundryAppDeployerTest.java @@ -506,7 +506,7 @@ class CloudFoundryAppDeployerTest { void preUpdateAppUpdatesApplicationEnvironment() { final String appId = "app-id"; - given(operationsApplications.get(argThat(request -> request.getName().equals(APP_NAME)))) + given(operationsApplications.get(argThat(request -> APP_NAME.equals(request.getName())))) .willReturn(Mono.just(ApplicationDetail.builder() .id(appId) .name(APP_NAME) diff --git a/spring-cloud-app-broker-deployer-cloudfoundry/src/test/java/org/springframework/cloud/appbroker/deployer/cloudfoundry/CloudFoundryAppDeployerUpdateApplicationTest.java b/spring-cloud-app-broker-deployer-cloudfoundry/src/test/java/org/springframework/cloud/appbroker/deployer/cloudfoundry/CloudFoundryAppDeployerUpdateApplicationTest.java index 683f40b..32695ca 100644 --- a/spring-cloud-app-broker-deployer-cloudfoundry/src/test/java/org/springframework/cloud/appbroker/deployer/cloudfoundry/CloudFoundryAppDeployerUpdateApplicationTest.java +++ b/spring-cloud-app-broker-deployer-cloudfoundry/src/test/java/org/springframework/cloud/appbroker/deployer/cloudfoundry/CloudFoundryAppDeployerUpdateApplicationTest.java @@ -434,7 +434,7 @@ class CloudFoundryAppDeployerUpdateApplicationTest { .verifyComplete(); then(applicationsV2).should().summary(SummaryApplicationRequest.builder().applicationId(APP_ID).build()); - then(applicationsV2).should().update(argThat(arg -> arg.getApplicationId().equals(APP_ID))); + then(applicationsV2).should().update(argThat(arg -> APP_ID.equals(arg.getApplicationId()))); then(operationsServices).shouldHaveNoMoreInteractions(); then(applicationsV2).shouldHaveNoMoreInteractions(); } @@ -465,7 +465,7 @@ class CloudFoundryAppDeployerUpdateApplicationTest { then(operationsServices).should() .bind(BindServiceInstanceRequest.builder().serviceInstanceName("service-2").applicationName(APP_NAME) .build()); - then(applicationsV2).should().update(argThat(arg -> arg.getApplicationId().equals(APP_ID))); + then(applicationsV2).should().update(argThat(arg -> APP_ID.equals(arg.getApplicationId()))); then(operationsServices).shouldHaveNoMoreInteractions(); then(applicationsV2).shouldHaveNoMoreInteractions(); diff --git a/spring-cloud-app-broker-deployer/build.gradle b/spring-cloud-app-broker-deployer/build.gradle index d9a038b..3dc72fb 100644 --- a/spring-cloud-app-broker-deployer/build.gradle +++ b/spring-cloud-app-broker-deployer/build.gradle @@ -14,10 +14,16 @@ * limitations under the License. */ +import org.springframework.boot.gradle.plugin.SpringBootPlugin + +plugins { + id 'org.springframework.boot' apply false +} + description = "Spring Cloud App Broker Deployer" dependencies { - api platform("org.springframework.boot:spring-boot-dependencies:${springBootVersion}") + api platform(SpringBootPlugin.BOM_COORDINATES) api "org.springframework:spring-core" api "io.projectreactor:reactor-core" diff --git a/spring-cloud-app-broker-docs/build.gradle b/spring-cloud-app-broker-docs/build.gradle index deeab79..27d6771 100644 --- a/spring-cloud-app-broker-docs/build.gradle +++ b/spring-cloud-app-broker-docs/build.gradle @@ -14,9 +14,12 @@ * limitations under the License. */ +import org.springframework.boot.gradle.plugin.SpringBootPlugin + plugins { - id 'org.asciidoctor.jvm.pdf' version '3.3.2' - id 'org.asciidoctor.jvm.convert' version '3.3.2' + id 'org.springframework.boot' apply false + id 'org.asciidoctor.jvm.pdf' + id 'org.asciidoctor.jvm.convert' } description = "Spring Cloud App Broker Documentation" @@ -26,7 +29,7 @@ configurations { } dependencies { - implementation platform("org.springframework.boot:spring-boot-dependencies:${springBootVersion}") + implementation platform(SpringBootPlugin.BOM_COORDINATES) implementation project(":spring-cloud-app-broker-core") implementation "org.springframework.boot:spring-boot-starter" implementation "org.springframework.boot:spring-boot-starter-data-r2dbc" diff --git a/spring-cloud-app-broker-integration-tests/build.gradle b/spring-cloud-app-broker-integration-tests/build.gradle index e742bb4..fd37894 100644 --- a/spring-cloud-app-broker-integration-tests/build.gradle +++ b/spring-cloud-app-broker-integration-tests/build.gradle @@ -1,3 +1,5 @@ +import org.springframework.boot.gradle.plugin.SpringBootPlugin + /* * Copyright 2002-2020 the original author or authors. * @@ -21,13 +23,13 @@ plugins { description = "Spring Cloud App Broker Integration Tests" dependencies { - implementation platform("org.springframework.boot:spring-boot-dependencies:${springBootVersion}") + implementation platform(SpringBootPlugin.BOM_COORDINATES) implementation project(":spring-cloud-starter-app-broker-cloudfoundry") implementation "org.springframework.boot:spring-boot-starter-webflux" testImplementation "org.springframework.boot:spring-boot-starter-test" testImplementation "io.rest-assured:rest-assured" - testImplementation "com.github.tomakehurst:wiremock:${wiremockVersion}" + testImplementation "com.github.tomakehurst:wiremock-jre8-standalone:${wiremockVersion}" } test { diff --git a/spring-cloud-app-broker-integration-tests/src/test/java/org/springframework/cloud/appbroker/integration/fixtures/WiremockServerFixture.java b/spring-cloud-app-broker-integration-tests/src/test/java/org/springframework/cloud/appbroker/integration/fixtures/WiremockServerFixture.java index 33baee8..5a189c3 100644 --- a/spring-cloud-app-broker-integration-tests/src/test/java/org/springframework/cloud/appbroker/integration/fixtures/WiremockServerFixture.java +++ b/spring-cloud-app-broker-integration-tests/src/test/java/org/springframework/cloud/appbroker/integration/fixtures/WiremockServerFixture.java @@ -16,13 +16,13 @@ package org.springframework.cloud.appbroker.integration.fixtures; +import jakarta.annotation.PostConstruct; + import java.util.List; import java.util.Set; import java.util.UUID; import java.util.stream.Collectors; -import javax.annotation.PostConstruct; - import com.github.tomakehurst.wiremock.WireMockServer; import com.github.tomakehurst.wiremock.stubbing.StubMapping; diff --git a/spring-cloud-app-broker-logging/build.gradle b/spring-cloud-app-broker-logging/build.gradle index 93d202b..4813bed 100644 --- a/spring-cloud-app-broker-logging/build.gradle +++ b/spring-cloud-app-broker-logging/build.gradle @@ -14,10 +14,16 @@ * limitations under the License. */ +import org.springframework.boot.gradle.plugin.SpringBootPlugin + +plugins { + id 'org.springframework.boot' apply false +} + description = "Spring Cloud App Broker Logging" dependencies { - api platform("org.springframework.boot:spring-boot-dependencies:${springBootVersion}") + api platform(SpringBootPlugin.BOM_COORDINATES) api "org.springframework.boot:spring-boot-starter-webflux" api "org.cloudfoundry:cloudfoundry-client-reactor:${cfJavaClientVersion}" api "org.cloudfoundry:cloudfoundry-operations:${cfJavaClientVersion}" @@ -25,7 +31,5 @@ dependencies { testImplementation project(":spring-cloud-starter-app-broker-logging") testImplementation "org.springframework.boot:spring-boot-starter-test" testImplementation "org.junit.jupiter:junit-jupiter-api" - testImplementation "org.awaitility:awaitility:${awaitilityVersion}" + testImplementation "org.awaitility:awaitility" } - - diff --git a/spring-cloud-app-broker-logging/src/test/java/com/example/streaming/LogStreamingTestApp.java b/spring-cloud-app-broker-logging/src/test/java/com/example/streaming/LogStreamingTestApp.java index 4acfaa5..d981061 100644 --- a/spring-cloud-app-broker-logging/src/test/java/com/example/streaming/LogStreamingTestApp.java +++ b/spring-cloud-app-broker-logging/src/test/java/com/example/streaming/LogStreamingTestApp.java @@ -34,10 +34,10 @@ import org.springframework.context.event.EventListener; }) public class LogStreamingTestApp { - static final String APP_ID = UUID.randomUUID().toString(); + private static final String APP_ID = UUID.randomUUID().toString(); - static boolean receivedStopEvent; - static String receivedStopEventServiceInstanceId; + private static boolean receivedStopEvent; + private static String receivedStopEventServiceInstanceId; public static String getAppId() { return APP_ID; diff --git a/spring-cloud-app-broker-security-credhub/build.gradle b/spring-cloud-app-broker-security-credhub/build.gradle index e1ab8ee..e1c070a 100644 --- a/spring-cloud-app-broker-security-credhub/build.gradle +++ b/spring-cloud-app-broker-security-credhub/build.gradle @@ -14,10 +14,16 @@ * limitations under the License. */ +import org.springframework.boot.gradle.plugin.SpringBootPlugin + +plugins { + id 'org.springframework.boot' apply false +} + description = "Spring Cloud App Broker Security CredHub" dependencies { - api platform("org.springframework.boot:spring-boot-dependencies:${springBootVersion}") + api platform(SpringBootPlugin.BOM_COORDINATES) api project(":spring-cloud-app-broker-core") api "org.springframework.credhub:spring-credhub-starter:${springCredhubVersion}" api "org.springframework.cloud:spring-cloud-open-service-broker-core:${openServiceBrokerVersion}" diff --git a/src/checkstyle/checkstyle.xml b/src/checkstyle/checkstyle.xml index 4cb0cc2..a5d6d19 100644 --- a/src/checkstyle/checkstyle.xml +++ b/src/checkstyle/checkstyle.xml @@ -95,7 +95,7 @@ - + diff --git a/src/pmd/pmdRuleSet.xml b/src/pmd/pmdRuleSet.xml index ed26d86..be9598d 100644 --- a/src/pmd/pmdRuleSet.xml +++ b/src/pmd/pmdRuleSet.xml @@ -20,7 +20,9 @@ xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://pmd.sourceforge.net/ruleset/2.0.0 https://pmd.sourceforge.io/ruleset_2_0_0.xsd"> Main Ruleset - + + + @@ -58,6 +60,7 @@ +