From ff32c609fc37185f1f8ba0fd0289fd2dd21aa45b Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Mon, 17 Jul 2023 13:15:50 +0200 Subject: [PATCH] GH-239 - Removed workaround after the downstream issue has been fixed in Spring Framework. Related ticket: GH-186, spring-projects/spring-framework#30399. --- ...PersistentApplicationEventMulticaster.java | 28 ------------------- ...ationEventMulticasterIntegrationTests.java | 2 +- 2 files changed, 1 insertion(+), 29 deletions(-) diff --git a/spring-modulith-events/spring-modulith-events-core/src/main/java/org/springframework/modulith/events/support/PersistentApplicationEventMulticaster.java b/spring-modulith-events/spring-modulith-events-core/src/main/java/org/springframework/modulith/events/support/PersistentApplicationEventMulticaster.java index de24681c..2d04f64a 100644 --- a/spring-modulith-events/spring-modulith-events-core/src/main/java/org/springframework/modulith/events/support/PersistentApplicationEventMulticaster.java +++ b/spring-modulith-events/spring-modulith-events-core/src/main/java/org/springframework/modulith/events/support/PersistentApplicationEventMulticaster.java @@ -127,34 +127,6 @@ public class PersistentApplicationEventMulticaster extends AbstractApplicationEv publications.forEach(this::invokeTargetListener); } - /** - * Temporary workaround for an issue in Spring Framework that lets ApplicationListenerMethodAdapter match all generic - * events with unresolved generics. - * - * @see https://github.com/spring-projects/spring-framework/issues/30399 - */ - @Override - @SuppressWarnings("unchecked") - protected boolean supportsEvent(ApplicationListener listener, ResolvableType eventType, Class sourceType) { - - var result = super.supportsEvent(listener, eventType, sourceType); - - if (!super.supportsEvent(listener, eventType, sourceType) - || !(listener instanceof ApplicationListenerMethodAdapter adapter)) { - return result; - } - - var actualEventType = ResolvableType.forClass(PayloadApplicationEvent.class).isAssignableFrom(eventType) - ? eventType.getGeneric() - : eventType; - - var declaredEventTypes = (List) ReflectionUtils.getField(DECLARED_EVENT_TYPES_FIELD, adapter); - - return declaredEventTypes.stream() - .anyMatch(it -> it.isAssignableFrom(actualEventType.getRawClass())); - } - private void invokeTargetListener(EventPublication publication) { var listeners = new TransactionalEventListeners( diff --git a/spring-modulith-events/spring-modulith-events-core/src/test/java/org/springframework/modulith/events/support/PersistentApplicationEventMulticasterIntegrationTests.java b/spring-modulith-events/spring-modulith-events-core/src/test/java/org/springframework/modulith/events/support/PersistentApplicationEventMulticasterIntegrationTests.java index 94c62b3c..48a76b89 100644 --- a/spring-modulith-events/spring-modulith-events-core/src/test/java/org/springframework/modulith/events/support/PersistentApplicationEventMulticasterIntegrationTests.java +++ b/spring-modulith-events/spring-modulith-events-core/src/test/java/org/springframework/modulith/events/support/PersistentApplicationEventMulticasterIntegrationTests.java @@ -60,7 +60,7 @@ class PersistentApplicationEventMulticasterIntegrationTests { @Autowired ApplicationEventPublisher publisher; @Autowired EventPublicationRepository repository; - @Test // GH-186 + @Test // GH-186, GH-239 void doesNotPublishGenericEventsToListeners() throws Exception { publisher.publishEvent(new SomeGenericEvent<>());