Skip to content

Commit 1c371d4

Browse files
Bump Spring Boot to 3.4 (#406)
Co-authored-by: Boris Parnikel <[email protected]>
1 parent 796b60c commit 1c371d4

File tree

19 files changed

+49
-54
lines changed

19 files changed

+49
-54
lines changed

build.gradle

+3-3
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,10 @@ task codeCoverageReport(type: JacocoReport) {
9090
,project('grpc-client-spring-boot-starter').sourceSets.main)
9191

9292
reports {
93-
xml.enabled true
93+
xml.required.set(true)
9494
xml.destination = new File(buildDir,"reports/jacoco/report.xml")
95-
html.enabled true
96-
csv.enabled false
95+
html.required.set(true)
96+
csv.required.set(true)
9797
}
9898
}
9999

gradle.properties

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
grpcVersion=1.58.0
22

33

4-
springBootVersion=3.1.1
5-
springCloudVersion=2022.0.3
4+
springBootVersion=3.4.4
5+
springCloudVersion=2024.0.1
66

77
gradleErrorPronePluginVersion=3.0.1
88
errorProneVersion=2.16

gradle/wrapper/gradle-wrapper.jar

285 Bytes
Binary file not shown.
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

gradlew

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/bin/sh
22

33
#
4-
# Copyright © 2015-2021 the original authors.
4+
# Copyright © 2015-2021 the original authors.
55
#
66
# Licensed under the Apache License, Version 2.0 (the "License");
77
# you may not use this file except in compliance with the License.
@@ -32,10 +32,10 @@
3232
# Busybox and similar reduced shells will NOT work, because this script
3333
# requires all of these POSIX shell features:
3434
# * functions;
35-
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
36-
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
37-
# * compound commands having a testable exit status, especially «case»;
38-
# * various built-in commands including «command», «set», and «ulimit».
35+
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
36+
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
37+
# * compound commands having a testable exit status, especially «case»;
38+
# * various built-in commands including «command», «set», and «ulimit».
3939
#
4040
# Important for patching:
4141
#

grpc-client-spring-boot-starter/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@ task delombok(type: io.franzbecker.gradle.lombok.task.DelombokTask) {
2929
}
3030

3131
task sourceJar(type: Jar) {
32-
classifier "sources"
32+
archiveClassifier.set("sources")
3333
from delombok
3434
}
3535

3636
task javadocJar(type: Jar, dependsOn: javadoc) {
37-
classifier "javadoc"
37+
archiveClassifier.set("javadoc")
3838
from javadoc.destinationDir
3939
}
4040

grpc-spring-boot-starter-demo/build.gradle

+8-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import org.lognet.springboot.grpc.gradle.ReactiveFeature
22

33
buildscript {
4-
ext.kotlin_version = '1.9.0'
4+
ext.kotlin_version = '1.9.10'
55
repositories {
66
mavenCentral()
77
}
@@ -98,8 +98,8 @@ dependencies {
9898
testImplementation "org.springframework.cloud:spring-cloud-config-client"
9999
testImplementation "org.springframework.cloud:spring-cloud-starter-bootstrap"
100100

101-
testImplementation "com.playtika.testcontainers:embedded-keycloak:2.2.14"
102-
testImplementation "com.playtika.testcontainers:embedded-consul:2.2.14"
101+
testImplementation "com.playtika.testcontainers:embedded-keycloak:3.1.11"
102+
testImplementation "com.playtika.testcontainers:embedded-consul:3.1.11"
103103

104104

105105
testImplementation 'org.hamcrest:hamcrest:2.2'
@@ -111,13 +111,13 @@ dependencies {
111111

112112
bothPureAndShadedNettyTestImplementation "io.grpc:grpc-netty:${grpcVersion}"
113113

114-
kafkaStreamTestImplementation "com.playtika.testcontainers:embedded-kafka:2.2.14"
114+
kafkaStreamTestImplementation "com.playtika.testcontainers:embedded-kafka:3.1.11"
115115
kafkaStreamTestImplementation "org.springframework.cloud:spring-cloud-starter-stream-kafka"
116116

117117
reactiveTestImplementation 'org.springframework.boot:spring-boot-starter-data-r2dbc'
118118
reactiveTestImplementation 'org.postgresql:r2dbc-postgresql'
119119
reactiveTestImplementation 'org.postgresql:postgresql'
120-
reactiveTestImplementation "com.playtika.testcontainers:embedded-postgresql:2.2.14"
120+
reactiveTestImplementation "com.playtika.testcontainers:embedded-postgresql:3.1.11"
121121
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
122122

123123

@@ -131,6 +131,9 @@ configurations.all {
131131
}
132132
}
133133

134+
test {
135+
jvmArgs('--add-opens=java.base/java.util=ALL-UNNAMED')
136+
}
134137
bootJar{
135138
enabled false
136139
}

grpc-spring-boot-starter-demo/src/noConsulDependenciesTest/java/org/lognet/springboot/grpc/simple/Issue295Test.java

-22
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,19 @@
11
package org.lognet.springboot.grpc.simple;
22

3-
import com.fasterxml.jackson.databind.JsonNode;
4-
import com.fasterxml.jackson.databind.node.ObjectNode;
5-
import com.jayway.jsonpath.Configuration;
6-
import com.jayway.jsonpath.DocumentContext;
7-
import com.jayway.jsonpath.JsonPath;
8-
import com.jayway.jsonpath.TypeRef;
9-
import com.jayway.jsonpath.spi.json.JacksonJsonProvider;
10-
import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider;
11-
import io.micrometer.prometheus.PrometheusConfig;
12-
import org.awaitility.Awaitility;
13-
import org.hamcrest.Matchers;
143
import org.junit.Test;
154
import org.junit.runner.RunWith;
165
import org.lognet.springboot.grpc.GrpcServerTestBase;
17-
import org.lognet.springboot.grpc.TestConfig;
186
import org.lognet.springboot.grpc.demo.DemoApp;
197
import org.springframework.beans.factory.annotation.Autowired;
20-
import org.springframework.boot.actuate.health.Status;
218
import org.springframework.boot.test.context.SpringBootTest;
229
import org.springframework.boot.test.web.client.TestRestTemplate;
2310
import org.springframework.http.HttpStatus;
2411
import org.springframework.http.ResponseEntity;
2512
import org.springframework.test.context.ActiveProfiles;
2613
import org.springframework.test.context.junit4.SpringRunner;
2714

28-
import java.time.Duration;
29-
import java.util.Optional;
30-
import java.util.Set;
31-
import java.util.Spliterator;
32-
import java.util.Spliterators;
33-
import java.util.concurrent.Callable;
3415
import java.util.concurrent.ExecutionException;
35-
import java.util.stream.Stream;
36-
import java.util.stream.StreamSupport;
3716

38-
import static org.hamcrest.MatcherAssert.assertThat;
3917
import static org.junit.Assert.assertEquals;
4018
import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT;
4119

grpc-spring-boot-starter-demo/src/pureNettyTest/java/org/lognet/springboot/grpc/PureNettyTransportConfigTest.java

-2
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,8 @@
2020
import org.springframework.context.annotation.Import;
2121
import org.springframework.context.event.EventListener;
2222
import org.springframework.core.io.Resource;
23-
import org.springframework.test.context.ActiveProfiles;
2423
import org.springframework.test.context.junit4.SpringRunner;
2524

26-
import javax.validation.Valid;
2725
import java.io.IOException;
2826
import java.net.SocketAddress;
2927
import java.util.List;

grpc-spring-boot-starter-demo/src/test/java/org/lognet/springboot/grpc/GrpcMeterTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import io.micrometer.core.instrument.Tags;
1212
import io.micrometer.core.instrument.Timer;
1313
import io.micrometer.core.instrument.search.MeterNotFoundException;
14-
import io.micrometer.prometheus.PrometheusConfig;
14+
import io.micrometer.prometheusmetrics.PrometheusConfig;
1515
import org.awaitility.Awaitility;
1616
import org.junit.Before;
1717
import org.junit.Test;

grpc-spring-boot-starter-demo/src/test/java/org/lognet/springboot/grpc/MetricWithSecurityTest.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,9 @@
77
import io.grpc.examples.GreeterOuterClass;
88
import io.micrometer.core.instrument.MeterRegistry;
99
import io.micrometer.core.instrument.Timer;
10-
import io.micrometer.prometheus.PrometheusConfig;
10+
import io.micrometer.prometheusmetrics.PrometheusConfig;
1111
import org.awaitility.Awaitility;
1212
import org.hamcrest.Matchers;
13-
import org.junit.Test;
1413
import org.junit.runner.RunWith;
1514
import org.lognet.springboot.grpc.auth.FailedAuthGrpcSecurityConfig;
1615
import org.lognet.springboot.grpc.demo.DemoApp;

grpc-spring-boot-starter-demo/src/test/java/org/lognet/springboot/grpc/actuator/ActuatorTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import com.jayway.jsonpath.TypeRef;
99
import com.jayway.jsonpath.spi.json.JacksonJsonProvider;
1010
import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider;
11-
import io.micrometer.prometheus.PrometheusConfig;
11+
import io.micrometer.prometheusmetrics.PrometheusConfig;
1212
import org.awaitility.Awaitility;
1313
import org.hamcrest.Matchers;
1414
import org.junit.Test;

grpc-spring-boot-starter-demo/src/test/resources/bootstrap-keycloack-test.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ spring:
99
oauth2:
1010
resourceserver:
1111
jwt:
12-
issuer-uri: ${embedded.keycloak.auth-server-url}/realms/test-realm
12+
issuer-uri: ${embedded.keycloak.auth-server-url}realms/test-realm
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
spring.test.context.failure.threshold=10

grpc-spring-boot-starter-demo/src/test/resources/test-realm.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@
4242
{
4343
"id": "835a36c5-d647-49a2-b794-2f128ebed7c0",
4444
"username": "keycloak-test",
45+
"firstName": "John",
46+
"lastName": "Doe",
47+
"email": "[email protected]",
4548
"enabled": true,
4649
"credentials": [
4750
{
@@ -57,5 +60,5 @@
5760
}
5861
}
5962
],
60-
"keycloakVersion": "8.0.1"
63+
"keycloakVersion": "9.0.0"
6164
}

grpc-spring-boot-starter/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -96,15 +96,15 @@ tasks.googleJavaFormat {
9696
}
9797
task sourceJar(type: Jar) {
9898
dependsOn(tasks.googleJavaFormat)
99-
classifier "sources"
99+
archiveClassifier.set("sources")
100100
from delombokOutputDir
101101
}
102102
javadoc {
103103
dependsOn tasks.googleJavaFormat
104104
source = delombokOutputDir
105105
}
106106
task javadocJar(type: Jar, dependsOn: javadoc) {
107-
classifier "javadoc"
107+
archiveClassifier.set("javadoc")
108108
from javadoc.destinationDir
109109
}
110110

grpc-spring-boot-starter/src/main/java/org/lognet/springboot/grpc/security/GrpcSecurity.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
import org.springframework.security.access.vote.AffirmativeBased;
2323
import org.springframework.security.access.vote.RoleVoter;
2424
import org.springframework.security.authentication.AuthenticationProvider;
25+
import org.springframework.security.config.ObjectPostProcessor;
2526
import org.springframework.security.config.annotation.AbstractConfiguredSecurityBuilder;
26-
import org.springframework.security.config.annotation.ObjectPostProcessor;
2727
import org.springframework.security.config.annotation.SecurityBuilder;
2828
import org.springframework.security.config.annotation.SecurityConfigurerAdapter;
2929
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;

grpc-spring-boot-starter/src/main/java/org/lognet/springboot/grpc/security/GrpcSecurityConfiguration.java

+14-1
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,20 @@
1616
import org.springframework.beans.factory.annotation.Autowired;
1717
import org.springframework.beans.factory.config.BeanPostProcessor;
1818
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
19+
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
1920
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2021
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
22+
import org.springframework.boot.autoconfigure.security.servlet.UserDetailsServiceAutoConfiguration;
2123
import org.springframework.context.annotation.Bean;
2224
import org.springframework.context.annotation.Configuration;
2325
import org.springframework.security.access.AccessDeniedException;
2426
import org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor;
25-
import org.springframework.security.config.annotation.ObjectPostProcessor;
27+
import org.springframework.security.authentication.AuthenticationManager;
28+
import org.springframework.security.authentication.AuthenticationManagerResolver;
29+
import org.springframework.security.authentication.AuthenticationProvider;
30+
import org.springframework.security.config.ObjectPostProcessor;
2631
import org.springframework.security.core.AuthenticationException;
32+
import org.springframework.security.core.userdetails.UserDetailsService;
2733

2834
import java.util.Collection;
2935
import java.util.Optional;
@@ -130,6 +136,13 @@ public BearerTokenAuthSchemeSelector bearerTokenAuthSchemeSelector() {
130136
return new BearerTokenAuthSchemeSelector();
131137
}
132138

139+
@Configuration
140+
@ConditionalOnClass(AuthenticationManager.class)
141+
@ConditionalOnBean(ObjectPostProcessor.class)
142+
@ConditionalOnMissingBean(value = { AuthenticationManager.class, AuthenticationProvider.class, UserDetailsService.class,
143+
AuthenticationManagerResolver.class }, type = "org.springframework.security.oauth2.jwt.JwtDecoder")
144+
static class DefaultUserDetailsServiceAutoConfiguration extends UserDetailsServiceAutoConfiguration {}
145+
133146
@Autowired(required = false)
134147
@SuppressWarnings({ "rawtypes", "unchecked" })
135148
public void setFilterChainProxySecurityConfigurer(ObjectPostProcessor<Object> objectPostProcessor) throws Exception {

grpc-spring-boot-starter/src/main/java/org/lognet/springboot/grpc/security/GrpcSecurityConfigurerAdapter.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import org.lognet.springboot.grpc.security.jwt.JwtAuthProviderFactory;
66
import org.springframework.beans.factory.annotation.Autowired;
77
import org.springframework.context.ApplicationContext;
8-
import org.springframework.security.config.annotation.ObjectPostProcessor;
8+
import org.springframework.security.config.ObjectPostProcessor;
99
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
1010
import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
1111
import org.springframework.security.oauth2.jwt.JwtDecoder;
@@ -26,7 +26,7 @@ protected GrpcSecurityConfigurerAdapter() {
2626
public void setApplicationContext(ApplicationContext context) throws Exception {
2727

2828

29-
ObjectPostProcessor<Object> objectPostProcessor = context.getBean(ObjectPostProcessor.class);
29+
ObjectPostProcessor<Object> objectPostProcessor = context.getBean("objectPostProcessor", ObjectPostProcessor.class);
3030
this.authenticationConfiguration = context.getBean(AuthenticationConfiguration.class);
3131

3232
authenticationManagerBuilder = authenticationConfiguration

0 commit comments

Comments
 (0)