Skip to content

Commit 259717d

Browse files
o-shevchenkodsyer
authored andcommitted
Java 25 support
Signed-off-by: Oleksandr Shevchenko <oleksandr.shevchenko@datarobot.com>
1 parent c20dd45 commit 259717d

5 files changed

Lines changed: 22 additions & 18 deletions

File tree

spring-grpc-core/src/main/java/org/springframework/grpc/server/advice/GrpcAdviceDiscoverer.java

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@
2424

2525
import org.apache.commons.logging.Log;
2626
import org.apache.commons.logging.LogFactory;
27+
import org.jspecify.annotations.Nullable;
2728

2829
import org.springframework.beans.factory.InitializingBean;
2930
import org.springframework.context.ApplicationContext;
30-
import org.springframework.context.ApplicationContextAware;
3131
import org.springframework.core.MethodIntrospector;
3232
import org.springframework.core.annotation.AnnotatedElementUtils;
3333
import org.springframework.util.Assert;
@@ -39,7 +39,7 @@
3939
*
4040
* @author Oleksandr Shevchenko
4141
*/
42-
public class GrpcAdviceDiscoverer implements InitializingBean, ApplicationContextAware {
42+
public class GrpcAdviceDiscoverer implements InitializingBean {
4343

4444
private static final Log logger = LogFactory.getLog(GrpcAdviceDiscoverer.class);
4545

@@ -49,30 +49,31 @@ public class GrpcAdviceDiscoverer implements InitializingBean, ApplicationContex
4949
public static final MethodFilter EXCEPTION_HANDLER_METHODS = method -> AnnotatedElementUtils.hasAnnotation(method,
5050
GrpcExceptionHandler.class);
5151

52-
private ApplicationContext applicationContext;
52+
private final ApplicationContext applicationContext;
5353

54-
private Map<String, Object> annotatedBeans;
54+
private @Nullable Map<String, Object> annotatedBeans;
5555

56-
private Set<Method> annotatedMethods;
56+
private @Nullable Set<Method> annotatedMethods;
5757

58-
@Override
59-
public void setApplicationContext(ApplicationContext applicationContext) {
58+
public GrpcAdviceDiscoverer(ApplicationContext applicationContext) {
59+
Assert.notNull(applicationContext, "applicationContext must not be null");
6060
this.applicationContext = applicationContext;
6161
}
6262

6363
@Override
6464
public void afterPropertiesSet() {
65-
this.annotatedBeans = this.applicationContext.getBeansWithAnnotation(GrpcAdvice.class);
66-
this.annotatedBeans.forEach((key, value) -> {
65+
Map<String, Object> beans = this.applicationContext.getBeansWithAnnotation(GrpcAdvice.class);
66+
beans.forEach((key, value) -> {
6767
if (logger.isDebugEnabled()) {
6868
logger.debug("Found gRPC advice: " + key + ", class: " + value.getClass().getName());
6969
}
7070
});
71-
this.annotatedMethods = findAnnotatedMethods();
71+
this.annotatedBeans = beans;
72+
this.annotatedMethods = findAnnotatedMethods(beans);
7273
}
7374

74-
private Set<Method> findAnnotatedMethods() {
75-
return this.annotatedBeans.values()
75+
private Set<Method> findAnnotatedMethods(Map<String, Object> beans) {
76+
return beans.values()
7677
.stream()
7778
.map(Object::getClass)
7879
.map(this::findAnnotatedMethods)

spring-grpc-core/src/main/java/org/springframework/grpc/server/advice/GrpcAdviceExceptionHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ protected Object handleThrownException(Throwable exception) throws Throwable {
130130
return null;
131131
}
132132

133-
Entry<Object, Method> methodWithInstance = this.grpcExceptionHandlerMethodResolver
133+
Entry<@Nullable Object, @Nullable Method> methodWithInstance = this.grpcExceptionHandlerMethodResolver
134134
.resolveMethodWithInstance(exceptionClass);
135135
Method mappedMethod = methodWithInstance.getValue();
136136
Object instanceOfMappedMethod = methodWithInstance.getKey();

spring-grpc-core/src/main/java/org/springframework/grpc/server/advice/GrpcExceptionHandlerMethodResolver.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ public class GrpcExceptionHandlerMethodResolver implements InitializingBean {
4343

4444
private final GrpcAdviceDiscoverer grpcAdviceDiscoverer;
4545

46-
private Class<? extends Throwable>[] annotatedExceptions;
46+
@SuppressWarnings("unchecked")
47+
private Class<? extends Throwable>[] annotatedExceptions = new Class[0];
4748

4849
/**
4950
* Create a new instance.

spring-grpc-core/src/test/java/org/springframework/grpc/server/advice/GrpcAdviceExceptionHandlerTests.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import org.junit.jupiter.api.Test;
2424

25+
import org.springframework.context.ApplicationContext;
2526
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
2627
import org.springframework.context.annotation.Bean;
2728
import org.springframework.context.annotation.Configuration;
@@ -120,8 +121,8 @@ void selectsMostSpecificHandler() {
120121
static class TestConfig {
121122

122123
@Bean
123-
GrpcAdviceDiscoverer grpcAdviceDiscoverer() {
124-
return new GrpcAdviceDiscoverer();
124+
GrpcAdviceDiscoverer grpcAdviceDiscoverer(ApplicationContext applicationContext) {
125+
return new GrpcAdviceDiscoverer(applicationContext);
125126
}
126127

127128
@Bean

spring-grpc-server-spring-boot-autoconfigure/src/main/java/org/springframework/boot/grpc/server/autoconfigure/exception/GrpcAdviceAutoConfiguration.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2323
import org.springframework.boot.grpc.server.autoconfigure.ConditionalOnGrpcServerEnabled;
2424
import org.springframework.boot.grpc.server.autoconfigure.ConditionalOnSpringGrpc;
25+
import org.springframework.context.ApplicationContext;
2526
import org.springframework.context.annotation.Bean;
2627
import org.springframework.grpc.server.advice.GrpcAdvice;
2728
import org.springframework.grpc.server.advice.GrpcAdviceDiscoverer;
@@ -43,8 +44,8 @@ public class GrpcAdviceAutoConfiguration {
4344

4445
@Bean
4546
@ConditionalOnMissingBean
46-
GrpcAdviceDiscoverer grpcAdviceDiscoverer() {
47-
return new GrpcAdviceDiscoverer();
47+
GrpcAdviceDiscoverer grpcAdviceDiscoverer(ApplicationContext applicationContext) {
48+
return new GrpcAdviceDiscoverer(applicationContext);
4849
}
4950

5051
@Bean

0 commit comments

Comments
 (0)