diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b244e8da26..3258091274 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,22 +21,19 @@ jobs: strategy: fail-fast: false matrix: - java: [ 11, 13, 15, 16 ] - spring-boot-version: [ 2.7.8 ] + java: [ 17 ] + spring-boot-version: [ 3.0.13 ] experimental: [ false ] include: - - java: 11 + - java: 17 + spring-boot-version: 2.7.8 + experimental: false + - java: 17 spring-boot-version: 2.6.14 experimental: false - - java: 11 + - java: 17 spring-boot-version: 2.5.7 experimental: false - - java: 11 - spring-boot-version: 2.4.0 - experimental: false - - java: 11 - spring-boot-version: 2.3.6.RELEASE - experimental: false env: GOVER: "1.20" GOOS: linux @@ -152,7 +149,7 @@ jobs: runs-on: ubuntu-latest needs: build env: - JDK_VER: 11 + JDK_VER: 17 OSSRH_USER_TOKEN: ${{ secrets.OSSRH_USER_TOKEN }} OSSRH_PWD_TOKEN: ${{ secrets.OSSRH_PWD_TOKEN }} GPG_KEY: ${{ secrets.GPG_KEY }} @@ -178,7 +175,7 @@ jobs: echo "DEPLOY_OSSRH=true" >> $GITHUB_ENV - name: Install jars if: env.DEPLOY_OSSRH == 'true' - run: ./mvnw clean install -B -q + run: ./mvnw install -B -q - name: Publish to ossrh if: env.DEPLOY_OSSRH == 'true' run: | diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index db5cffda8a..ad67a0787d 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -30,7 +30,7 @@ jobs: strategy: fail-fast: false # Keep running if one leg fails. matrix: - java: [ 11, 13, 15, 16 ] + java: [ 17 ] env: GOVER: "1.20" GOOS: linux diff --git a/examples/pom.xml b/examples/pom.xml index ebadafdd62..eb89dee1a4 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -18,12 +18,13 @@ ${project.build.directory}/generated-sources ${project.basedir}/proto - 11 + 17 ${java.version} ${java.version} true false 0.14.0 + 3.0.13 @@ -66,12 +67,12 @@ org.springframework.boot spring-boot-starter-web - 2.7.8 + ${springboot.version} org.springframework.boot spring-boot-autoconfigure - 2.7.8 + ${springboot.version} com.jayway.jsonpath @@ -111,7 +112,7 @@ io.dapr - dapr-sdk-springboot + dapr-sdk-springboot3 ${project.version} @@ -134,6 +135,11 @@ retry4j 0.15.0 + + javax.annotation + javax.annotation-api + 1.3.2 + @@ -176,7 +182,7 @@ maven-compiler-plugin 3.8.1 - 11 + ${java.version} @@ -212,6 +218,14 @@ + + org.apache.maven.plugins + maven-checkstyle-plugin + + + true + + diff --git a/examples/src/main/java/io/dapr/examples/OpenTelemetryInterceptor.java b/examples/src/main/java/io/dapr/examples/OpenTelemetryInterceptor.java index 1e6dabdb6a..4b62eb677e 100644 --- a/examples/src/main/java/io/dapr/examples/OpenTelemetryInterceptor.java +++ b/examples/src/main/java/io/dapr/examples/OpenTelemetryInterceptor.java @@ -22,9 +22,9 @@ import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; -import javax.servlet.DispatcherType; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.DispatcherType; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.util.Collections; @Component diff --git a/pom.xml b/pom.xml index 663bd81685..93bad3fae2 100644 --- a/pom.xml +++ b/pom.xml @@ -22,8 +22,8 @@ 3.1.1 1.8 2.7 - 8 - 8 + 11 + 11 true 2.12.3 true - 4.0.0-RC1 true ../spotbugs-exclude.xml - 2.7.8 --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED - 3.1.2 - 3.1.2 + 3.2.2 + 3.2.2 5.7.2 @@ -60,6 +58,11 @@ + + org.slf4j + slf4j-api + 2.0.9 + io.grpc grpc-bom @@ -120,7 +123,7 @@ org.jacoco jacoco-maven-plugin - 0.8.6 + 0.8.11 @@ -132,7 +135,7 @@ org.codehaus.mojo animal-sniffer-maven-plugin - 1.20 + 1.23 org.codehaus.mojo.signature @@ -154,7 +157,7 @@ org.apache.maven.plugins maven-gpg-plugin - 1.6 + 3.1.0 sign-artifacts @@ -175,7 +178,7 @@ org.sonatype.plugins nexus-staging-maven-plugin - 1.6.8 + 1.6.13 true ossrh @@ -186,7 +189,7 @@ org.apache.maven.plugins maven-checkstyle-plugin - 3.1.1 + 3.3.1 checkstyle.xml UTF-8 @@ -219,15 +222,7 @@ com.github.spotbugs spotbugs-maven-plugin - 4.1.4 - - - - com.github.spotbugs - spotbugs - ${spotbugs.version} - - + 4.8.2.0 ${spotbugs.exclude.filter.file} ${spotbugs.fail} @@ -316,7 +311,12 @@ sdk-actors sdk-workflows sdk-springboot + sdk-springboot3 examples + diff --git a/sdk-actors/pom.xml b/sdk-actors/pom.xml index c76347f5c6..2a5c5deac9 100644 --- a/sdk-actors/pom.xml +++ b/sdk-actors/pom.xml @@ -95,7 +95,7 @@ org.jacoco jacoco-maven-plugin - 0.8.6 + 0.8.11 default-prepare-agent diff --git a/sdk-springboot/pom.xml b/sdk-springboot/pom.xml index 1631c35734..f96dfd134a 100644 --- a/sdk-springboot/pom.xml +++ b/sdk-springboot/pom.xml @@ -130,7 +130,7 @@ org.jacoco jacoco-maven-plugin - 0.8.6 + 0.8.11 default-prepare-agent diff --git a/sdk-springboot3/pom.xml b/sdk-springboot3/pom.xml new file mode 100644 index 0000000000..e730b29602 --- /dev/null +++ b/sdk-springboot3/pom.xml @@ -0,0 +1,137 @@ + + 4.0.0 + + + io.dapr + dapr-sdk-parent + 1.11.0-SNAPSHOT + + + dapr-sdk-springboot3 + jar + 1.11.0-SNAPSHOT + dapr-sdk-springboot3 + SDK extension for Springboot 3.0 + + + false + 3.0.13 + + + + + + org.springframework.boot + spring-boot-dependencies + ${springboot.version} + pom + import + + + + + + + io.dapr + dapr-sdk-springboot + ${project.version} + + + org.springframework + * + + + org.springframework.boot + * + + + + + org.mockito + mockito-core + test + + + com.github.gmazzo + okhttp-mock + 1.4.1 + test + + + org.junit.jupiter + junit-jupiter-api + test + + + org.springframework + spring-beans + compile + + + org.springframework + spring-web + compile + + + org.springframework + spring-context + compile + + + org.springframework.boot + spring-boot-autoconfigure + compile + + + org.springframework.boot + spring-boot-configuration-processor + compile + true + + + org.junit.jupiter + junit-jupiter + test + + + org.junit.jupiter + junit-jupiter-params + test + + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-sources + + jar-no-fork + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.2.0 + + + attach-javadocs + + jar + + + + + + + diff --git a/sdk-tests/pom.xml b/sdk-tests/pom.xml index a25c0f31cc..c1d6cf13b0 100644 --- a/sdk-tests/pom.xml +++ b/sdk-tests/pom.xml @@ -12,8 +12,8 @@ UTF-8 - 11 - 11 + 17 + 17 true 1.11.0-SNAPSHOT ${project.build.directory}/generated-sources @@ -21,7 +21,7 @@ 1.59.0 3.17.3 0.14.0 - 2.7.8 + 3.0.13 @@ -80,6 +80,31 @@ opentelemetry-sdk ${opentelemetry.version} + + io.opentelemetry + opentelemetry-api + ${opentelemetry.version} + + + io.opentelemetry + opentelemetry-context + ${opentelemetry.version} + + + io.opentelemetry + opentelemetry-sdk-common + ${opentelemetry.version} + + + io.opentelemetry + opentelemetry-sdk-trace + ${opentelemetry.version} + + + io.opentelemetry + opentelemetry-sdk-metrics + ${opentelemetry.version}-alpha + io.opentelemetry opentelemetry-exporter-logging @@ -104,9 +129,19 @@ io.dapr - dapr-sdk-springboot + dapr-sdk-springboot3 ${dapr.sdk.version} test + + + org.springframework + * + + + org.springframework.boot + * + + org.junit.jupiter @@ -149,7 +184,13 @@ jakarta.annotation jakarta.annotation-api - 1.3.5 + 2.1.1 + compile + + + javax.annotation + javax.annotation-api + 1.3.2 compile @@ -157,6 +198,20 @@ toxiproxy-java 2.1.7 + + + jakarta.servlet + jakarta.servlet-api + 6.0.0 + compile + + + + javax.servlet + javax.servlet-api + 4.0.1 + compile + @@ -209,7 +264,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.1.2 + 3.2.2 diff --git a/sdk-tests/src/test/java/io/dapr/it/tracing/http/OpenTelemetryInterceptor.java b/sdk-tests/src/test/java/io/dapr/it/tracing/http/OpenTelemetryInterceptor.java index 36e2504361..91bedea536 100644 --- a/sdk-tests/src/test/java/io/dapr/it/tracing/http/OpenTelemetryInterceptor.java +++ b/sdk-tests/src/test/java/io/dapr/it/tracing/http/OpenTelemetryInterceptor.java @@ -16,15 +16,14 @@ import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.context.Context; import io.opentelemetry.context.propagation.TextMapPropagator; -import javax.annotation.Nullable; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; -import javax.servlet.DispatcherType; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.DispatcherType; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.util.Collections; @Component @@ -33,21 +32,20 @@ public class OpenTelemetryInterceptor implements HandlerInterceptor { @Autowired private OpenTelemetry openTelemetry; - private static final TextMapPropagator.Getter HTTP_SERVLET_REQUEST_GETTER = + // implmentation for springboot 3.0, which uses jakarta.servlet instead of javax.servlet + private static final TextMapPropagator.Getter JAKARTA_HTTP_SERVLET_REQUEST_GETTER = new TextMapPropagator.Getter<>() { @Override public Iterable keys(HttpServletRequest carrier) { return Collections.list(carrier.getHeaderNames()); } - @Nullable @Override - public String get(@Nullable HttpServletRequest carrier, String key) { + public String get(HttpServletRequest carrier, String key) { return carrier.getHeader(key); } }; - @Override public boolean preHandle( HttpServletRequest request, HttpServletResponse response, Object handler) { final TextMapPropagator textFormat = openTelemetry.getPropagators().getTextMapPropagator(); @@ -57,16 +55,50 @@ public boolean preHandle( return true; } - Context context = textFormat.extract(Context.current(), request, HTTP_SERVLET_REQUEST_GETTER); + Context context = textFormat.extract(Context.current(), request, JAKARTA_HTTP_SERVLET_REQUEST_GETTER); request.setAttribute("opentelemetry-context", context); return true; } - @Override public void postHandle( HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) { // There is no global context to be changed in post handle since it is done in preHandle on a new call. } + + // implmentation for springboot 3.0, which uses jakarta.servlet instead of javax.servlet + private static final TextMapPropagator.Getter JAVA_HTTP_SERVLET_REQUEST_GETTER = + new TextMapPropagator.Getter<>() { + @Override + public Iterable keys(javax.servlet.http.HttpServletRequest carrier) { + return Collections.list(carrier.getHeaderNames()); + } + + @Override + public String get(javax.servlet.http.HttpServletRequest carrier, String key) { + return carrier.getHeader(key); + } + }; + + public boolean preHandle( + javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler) { + final TextMapPropagator textFormat = openTelemetry.getPropagators().getTextMapPropagator(); + // preHandle is called twice for asynchronous request. For more information, read: + // https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/AsyncHandlerInterceptor.html + if (request.getDispatcherType() == javax.servlet.DispatcherType.ASYNC) { + return true; + } + + Context context = textFormat.extract(Context.current(), request, JAVA_HTTP_SERVLET_REQUEST_GETTER); + request.setAttribute("opentelemetry-context", context); + return true; + } + + public void postHandle( + javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler, + ModelAndView modelAndView) { + // There is no global context to be changed in post handle since it is done in preHandle on a new call. + } + } diff --git a/sdk-workflows/pom.xml b/sdk-workflows/pom.xml index ba21f677fc..7a19221dd7 100644 --- a/sdk-workflows/pom.xml +++ b/sdk-workflows/pom.xml @@ -112,7 +112,7 @@ org.jacoco jacoco-maven-plugin - 0.8.8 + 0.8.11 default-prepare-agent diff --git a/sdk/pom.xml b/sdk/pom.xml index c2fcde7eaa..ce6ab902ad 100644 --- a/sdk/pom.xml +++ b/sdk/pom.xml @@ -25,6 +25,10 @@ + + org.slf4j + slf4j-api + org.apache.maven.plugins maven-resources-plugin @@ -173,7 +177,7 @@ org.jacoco jacoco-maven-plugin - 0.8.6 + 0.8.11 default-prepare-agent diff --git a/spotbugs-exclude.xml b/spotbugs-exclude.xml index e68bf4cadf..f0111ca638 100644 --- a/spotbugs-exclude.xml +++ b/spotbugs-exclude.xml @@ -3,4 +3,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file