From 84f0fb28aeca8f7c720529d5e3503a5539e9260d Mon Sep 17 00:00:00 2001 From: Soby Chacko Date: Wed, 28 Mar 2018 23:56:04 -0400 Subject: [PATCH] Address IllegalAccessException in Kafka Streams binder When StreamListener methods are contained in a top level non-public class, Kafka Streams binder throws an IllegalAccessException. Fixing it by making it accessible. Resolves #348 --- .../KafkaStreamsStreamListenerSetupMethodOrchestrator.java | 2 ++ .../streams/KafkaStreamsBinderWordCountIntegrationTests.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/spring-cloud-stream-binder-kafka-streams/src/main/java/org/springframework/cloud/stream/binder/kafka/streams/KafkaStreamsStreamListenerSetupMethodOrchestrator.java b/spring-cloud-stream-binder-kafka-streams/src/main/java/org/springframework/cloud/stream/binder/kafka/streams/KafkaStreamsStreamListenerSetupMethodOrchestrator.java index 228e3763b..e9b13b9fa 100644 --- a/spring-cloud-stream-binder-kafka-streams/src/main/java/org/springframework/cloud/stream/binder/kafka/streams/KafkaStreamsStreamListenerSetupMethodOrchestrator.java +++ b/spring-cloud-stream-binder-kafka-streams/src/main/java/org/springframework/cloud/stream/binder/kafka/streams/KafkaStreamsStreamListenerSetupMethodOrchestrator.java @@ -66,6 +66,7 @@ import org.springframework.messaging.handler.annotation.SendTo; import org.springframework.messaging.support.MessageBuilder; import org.springframework.util.Assert; import org.springframework.util.ObjectUtils; +import org.springframework.util.ReflectionUtils; import org.springframework.util.StringUtils; /** @@ -155,6 +156,7 @@ class KafkaStreamsStreamListenerSetupMethodOrchestrator implements StreamListene this.applicationContext, this.streamListenerParameterAdapter); try { + ReflectionUtils.makeAccessible(method); if (Void.TYPE.equals(method.getReturnType())) { method.invoke(bean, adaptedInboundArguments); } diff --git a/spring-cloud-stream-binder-kafka-streams/src/test/java/org/springframework/cloud/stream/binder/kafka/streams/KafkaStreamsBinderWordCountIntegrationTests.java b/spring-cloud-stream-binder-kafka-streams/src/test/java/org/springframework/cloud/stream/binder/kafka/streams/KafkaStreamsBinderWordCountIntegrationTests.java index 8b1b154ff..41f0374c4 100644 --- a/spring-cloud-stream-binder-kafka-streams/src/test/java/org/springframework/cloud/stream/binder/kafka/streams/KafkaStreamsBinderWordCountIntegrationTests.java +++ b/spring-cloud-stream-binder-kafka-streams/src/test/java/org/springframework/cloud/stream/binder/kafka/streams/KafkaStreamsBinderWordCountIntegrationTests.java @@ -119,7 +119,7 @@ public class KafkaStreamsBinderWordCountIntegrationTests { @EnableBinding(KafkaStreamsProcessor.class) @EnableAutoConfiguration @EnableConfigurationProperties(KafkaStreamsApplicationSupportProperties.class) - public static class WordCountProcessorApplication { + static class WordCountProcessorApplication { @Autowired private TimeWindows timeWindows;