From 417063f184b905b0f894b67c15b69513df70da20 Mon Sep 17 00:00:00 2001 From: Evelina02 Date: Mon, 22 Dec 2025 15:08:51 +0300 Subject: [PATCH 1/2] EPMRPP-109656 events refactoring --- build.gradle | 4 +- .../extension/slack/SlackPluginExtension.java | 17 +++----- .../slack/event/EventHandlerFactory.java | 11 ----- .../slack/event/handler/EventHandler.java | 9 ----- .../plugin/PluginLoadedEventHandler.java | 28 ------------- .../SlackLaunchFinishEventListener.java | 2 +- .../plugin/PluginEventHandlerFactory.java | 33 --------------- .../event/plugin/PluginEventListener.java | 34 ---------------- .../plugin/PluginLoadedEventHandler.java | 40 +++++++++++++++++++ 9 files changed, 48 insertions(+), 130 deletions(-) delete mode 100644 src/main/java/com/epam/reportportal/extension/slack/event/EventHandlerFactory.java delete mode 100644 src/main/java/com/epam/reportportal/extension/slack/event/handler/EventHandler.java delete mode 100644 src/main/java/com/epam/reportportal/extension/slack/event/handler/plugin/PluginLoadedEventHandler.java delete mode 100644 src/main/java/com/epam/reportportal/extension/slack/event/plugin/PluginEventHandlerFactory.java delete mode 100644 src/main/java/com/epam/reportportal/extension/slack/event/plugin/PluginEventListener.java create mode 100644 src/main/java/com/epam/reportportal/extension/slack/event/plugin/PluginLoadedEventHandler.java diff --git a/build.gradle b/build.gradle index c66206b..16fd4be 100644 --- a/build.gradle +++ b/build.gradle @@ -41,8 +41,8 @@ dependencies { implementation 'com.epam.reportportal:service-api' annotationProcessor 'com.epam.reportportal:service-api' } else { - implementation 'com.github.reportportal:service-api:3e34a90' - annotationProcessor 'com.github.reportportal:service-api:3e34a90' + implementation 'com.github.reportportal:service-api:a47f5cf' + annotationProcessor 'com.github.reportportal:service-api:a47f5cf' } compileOnly "org.projectlombok:lombok:${lombokVersion}" diff --git a/src/main/java/com/epam/reportportal/extension/slack/SlackPluginExtension.java b/src/main/java/com/epam/reportportal/extension/slack/SlackPluginExtension.java index 8d87570..ae1b6f1 100644 --- a/src/main/java/com/epam/reportportal/extension/slack/SlackPluginExtension.java +++ b/src/main/java/com/epam/reportportal/extension/slack/SlackPluginExtension.java @@ -20,19 +20,17 @@ import com.epam.reportportal.extension.PluginCommand; import com.epam.reportportal.extension.ReportPortalExtensionPoint; import com.epam.reportportal.extension.common.IntegrationTypeProperties; +import com.epam.reportportal.core.events.domain.PluginUploadedEvent; import com.epam.reportportal.extension.event.LaunchFinishedPluginEvent; -import com.epam.reportportal.extension.event.PluginEvent; import com.epam.reportportal.extension.slack.binary.JsonObjectLoader; import com.epam.reportportal.extension.slack.binary.MessageTemplateStore; import com.epam.reportportal.extension.slack.event.launch.SlackLaunchFinishEventListener; import com.epam.reportportal.extension.slack.event.launch.resolver.AttachmentResolver; import com.epam.reportportal.extension.slack.event.launch.resolver.SenderCaseMatcher; -import com.epam.reportportal.extension.slack.event.plugin.PluginEventHandlerFactory; -import com.epam.reportportal.extension.slack.event.plugin.PluginEventListener; +import com.epam.reportportal.extension.slack.event.plugin.PluginLoadedEventHandler; import com.epam.reportportal.extension.slack.factory.PropertyCollectorFactory; import com.epam.reportportal.extension.slack.info.impl.PluginInfoProviderImpl; import com.epam.reportportal.extension.slack.utils.MemoizingSupplier; -import com.epam.reportportal.infrastructure.persistence.dao.IntegrationRepository; import com.epam.reportportal.infrastructure.persistence.dao.IntegrationTypeRepository; import com.epam.reportportal.infrastructure.persistence.dao.LaunchRepository; import com.epam.reportportal.infrastructure.persistence.dao.ProjectRepository; @@ -96,7 +94,7 @@ public class SlackPluginExtension implements ReportPortalExtensionPoint, Disposa private final String resourcesDir; - private final Supplier> pluginLoadedListener; + private final Supplier> pluginLoadedListener; private final Supplier> launchFinishEventListenerSupplier; @@ -109,9 +107,6 @@ public class SlackPluginExtension implements ReportPortalExtensionPoint, Disposa @Autowired private IntegrationTypeRepository integrationTypeRepository; - @Autowired - private IntegrationRepository integrationRepository; - @Autowired private TestItemRepository testItemRepository; @@ -142,10 +137,8 @@ public SlackPluginExtension(Map initParams) { () -> new MessageTemplateStore(resourcesDir)); pluginLoadedListener = new MemoizingSupplier<>( - () -> new PluginEventListener(PLUGIN_ID, - new PluginEventHandlerFactory(integrationTypeRepository, - new PluginInfoProviderImpl(resourcesDir, BINARY_DATA_PROPERTIES_FILE_ID) - ) + () -> new PluginLoadedEventHandler(PLUGIN_ID, integrationTypeRepository, + new PluginInfoProviderImpl(resourcesDir, BINARY_DATA_PROPERTIES_FILE_ID) )); senderCaseMatcher = new MemoizingSupplier<>(() -> new SenderCaseMatcher(testItemRepository)); diff --git a/src/main/java/com/epam/reportportal/extension/slack/event/EventHandlerFactory.java b/src/main/java/com/epam/reportportal/extension/slack/event/EventHandlerFactory.java deleted file mode 100644 index c71df62..0000000 --- a/src/main/java/com/epam/reportportal/extension/slack/event/EventHandlerFactory.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.epam.reportportal.extension.slack.event; - -import com.epam.reportportal.extension.slack.event.handler.EventHandler; - -/** - * @author Andrei Piankouski - */ -public interface EventHandlerFactory { - - EventHandler getEventHandler(String key); -} diff --git a/src/main/java/com/epam/reportportal/extension/slack/event/handler/EventHandler.java b/src/main/java/com/epam/reportportal/extension/slack/event/handler/EventHandler.java deleted file mode 100644 index 9874422..0000000 --- a/src/main/java/com/epam/reportportal/extension/slack/event/handler/EventHandler.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.epam.reportportal.extension.slack.event.handler; - -/** - * @author Andrei Piankouski - */ -public interface EventHandler { - - void handle(T event); -} diff --git a/src/main/java/com/epam/reportportal/extension/slack/event/handler/plugin/PluginLoadedEventHandler.java b/src/main/java/com/epam/reportportal/extension/slack/event/handler/plugin/PluginLoadedEventHandler.java deleted file mode 100644 index a979859..0000000 --- a/src/main/java/com/epam/reportportal/extension/slack/event/handler/plugin/PluginLoadedEventHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.epam.reportportal.extension.slack.event.handler.plugin; - -import com.epam.reportportal.extension.event.PluginEvent; -import com.epam.reportportal.extension.slack.event.handler.EventHandler; -import com.epam.reportportal.extension.slack.info.PluginInfoProvider; -import com.epam.reportportal.infrastructure.persistence.dao.IntegrationTypeRepository; - -/** - * @author Andrei Piankouski - */ -public class PluginLoadedEventHandler implements EventHandler { - - private final IntegrationTypeRepository integrationTypeRepository; - private final PluginInfoProvider pluginInfoProvider; - - public PluginLoadedEventHandler(IntegrationTypeRepository integrationTypeRepository, - PluginInfoProvider pluginInfoProvider) { - this.integrationTypeRepository = integrationTypeRepository; - this.pluginInfoProvider = pluginInfoProvider; - } - - @Override - public void handle(PluginEvent event) { - integrationTypeRepository.findByName(event.getPluginId()).ifPresent(integrationType -> { - integrationTypeRepository.save(pluginInfoProvider.provide(integrationType)); - }); - } -} diff --git a/src/main/java/com/epam/reportportal/extension/slack/event/launch/SlackLaunchFinishEventListener.java b/src/main/java/com/epam/reportportal/extension/slack/event/launch/SlackLaunchFinishEventListener.java index 7860919..b35dad6 100644 --- a/src/main/java/com/epam/reportportal/extension/slack/event/launch/SlackLaunchFinishEventListener.java +++ b/src/main/java/com/epam/reportportal/extension/slack/event/launch/SlackLaunchFinishEventListener.java @@ -75,7 +75,7 @@ public void onApplicationEvent(LaunchFinishedPluginEvent event) { try { Project project = getProject(event.getProjectId()); if (isNotificationsEnabled(project)) { - Launch launch = getLaunch(event.getSource()); + Launch launch = getLaunch(event.getLaunchId()); processSenderCases(project, launch, event.getLaunchLink()); } } catch (Exception e) { diff --git a/src/main/java/com/epam/reportportal/extension/slack/event/plugin/PluginEventHandlerFactory.java b/src/main/java/com/epam/reportportal/extension/slack/event/plugin/PluginEventHandlerFactory.java deleted file mode 100644 index 6d17699..0000000 --- a/src/main/java/com/epam/reportportal/extension/slack/event/plugin/PluginEventHandlerFactory.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.epam.reportportal.extension.slack.event.plugin; - -import com.epam.reportportal.extension.event.PluginEvent; -import com.epam.reportportal.extension.slack.event.EventHandlerFactory; -import com.epam.reportportal.extension.slack.event.handler.EventHandler; -import com.epam.reportportal.extension.slack.event.handler.plugin.PluginLoadedEventHandler; -import com.epam.reportportal.extension.slack.info.PluginInfoProvider; -import com.epam.reportportal.infrastructure.persistence.dao.IntegrationTypeRepository; -import java.util.HashMap; -import java.util.Map; - -/** - * @author Andrei Piankouski - */ -public class PluginEventHandlerFactory implements EventHandlerFactory { - - public static final String LOAD_KEY = "load"; - - private final Map> eventHandlerMapping; - - public PluginEventHandlerFactory(IntegrationTypeRepository integrationTypeRepository, - PluginInfoProvider pluginInfoProvider) { - this.eventHandlerMapping = new HashMap<>(); - this.eventHandlerMapping.put(LOAD_KEY, - new PluginLoadedEventHandler(integrationTypeRepository, pluginInfoProvider) - ); - } - - @Override - public EventHandler getEventHandler(String key) { - return eventHandlerMapping.get(key); - } -} diff --git a/src/main/java/com/epam/reportportal/extension/slack/event/plugin/PluginEventListener.java b/src/main/java/com/epam/reportportal/extension/slack/event/plugin/PluginEventListener.java deleted file mode 100644 index 803239d..0000000 --- a/src/main/java/com/epam/reportportal/extension/slack/event/plugin/PluginEventListener.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.epam.reportportal.extension.slack.event.plugin; - -import static java.util.Optional.ofNullable; - -import com.epam.reportportal.extension.event.PluginEvent; -import com.epam.reportportal.extension.slack.event.EventHandlerFactory; -import org.springframework.context.ApplicationListener; - -/** - * @author Andrei Piankouski - */ -public class PluginEventListener implements ApplicationListener { - - private final String pluginId; - private final EventHandlerFactory pluginEventEventHandlerFactory; - - public PluginEventListener(String pluginId, EventHandlerFactory pluginEventEventHandlerFactory) { - this.pluginId = pluginId; - this.pluginEventEventHandlerFactory = pluginEventEventHandlerFactory; - } - - @Override - public void onApplicationEvent(PluginEvent event) { - if (supports(event)) { - ofNullable(pluginEventEventHandlerFactory.getEventHandler(event.getType())).ifPresent( - pluginEventEventHandler -> pluginEventEventHandler - .handle(event)); - } - } - - private boolean supports(PluginEvent event) { - return pluginId.equals(event.getPluginId()); - } -} diff --git a/src/main/java/com/epam/reportportal/extension/slack/event/plugin/PluginLoadedEventHandler.java b/src/main/java/com/epam/reportportal/extension/slack/event/plugin/PluginLoadedEventHandler.java new file mode 100644 index 0000000..8c0ddf9 --- /dev/null +++ b/src/main/java/com/epam/reportportal/extension/slack/event/plugin/PluginLoadedEventHandler.java @@ -0,0 +1,40 @@ +package com.epam.reportportal.extension.slack.event.plugin; + +import com.epam.reportportal.core.events.domain.PluginUploadedEvent; +import com.epam.reportportal.extension.slack.info.PluginInfoProvider; +import com.epam.reportportal.infrastructure.persistence.dao.IntegrationTypeRepository; +import org.springframework.context.ApplicationListener; + +/** + * @author Andrei Piankouski + */ +public class PluginLoadedEventHandler implements ApplicationListener { + + private final String pluginId; + private final IntegrationTypeRepository integrationTypeRepository; + private final PluginInfoProvider pluginInfoProvider; + + public PluginLoadedEventHandler(String pluginId, + IntegrationTypeRepository integrationTypeRepository, + PluginInfoProvider pluginInfoProvider) { + this.pluginId = pluginId; + this.integrationTypeRepository = integrationTypeRepository; + this.pluginInfoProvider = pluginInfoProvider; + } + + @Override + public void onApplicationEvent(PluginUploadedEvent event) { + if (!supports(event)) { + return; + } + + String eventPluginId = event.getPluginActivityResource().getName(); + integrationTypeRepository.findByName(eventPluginId).ifPresent(integrationType -> { + integrationTypeRepository.save(pluginInfoProvider.provide(integrationType)); + }); + } + + private boolean supports(PluginUploadedEvent event) { + return pluginId.equals(event.getPluginActivityResource().getName()); + } +} From 51c8c4643a3bca61f21dd79815c132d648e379c5 Mon Sep 17 00:00:00 2001 From: Evelina02 Date: Tue, 23 Dec 2025 14:44:14 +0300 Subject: [PATCH 2/2] EPMRPP-109656 update version --- build.gradle | 4 ++-- .../extension/slack/SlackPluginExtension.java | 17 ++++++++++------- .../launch/SlackLaunchFinishEventListener.java | 9 +++++---- .../SlackLaunchFinishEventListenerTest.java | 4 ++-- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/build.gradle b/build.gradle index 16fd4be..0d66977 100644 --- a/build.gradle +++ b/build.gradle @@ -41,8 +41,8 @@ dependencies { implementation 'com.epam.reportportal:service-api' annotationProcessor 'com.epam.reportportal:service-api' } else { - implementation 'com.github.reportportal:service-api:a47f5cf' - annotationProcessor 'com.github.reportportal:service-api:a47f5cf' + implementation 'com.github.reportportal:service-api:4a137a7' + annotationProcessor 'com.github.reportportal:service-api:4a137a7' } compileOnly "org.projectlombok:lombok:${lombokVersion}" diff --git a/src/main/java/com/epam/reportportal/extension/slack/SlackPluginExtension.java b/src/main/java/com/epam/reportportal/extension/slack/SlackPluginExtension.java index ae1b6f1..aa0cd80 100644 --- a/src/main/java/com/epam/reportportal/extension/slack/SlackPluginExtension.java +++ b/src/main/java/com/epam/reportportal/extension/slack/SlackPluginExtension.java @@ -16,12 +16,12 @@ package com.epam.reportportal.extension.slack; +import com.epam.reportportal.core.events.domain.PluginUploadedEvent; import com.epam.reportportal.extension.CommonPluginCommand; import com.epam.reportportal.extension.PluginCommand; import com.epam.reportportal.extension.ReportPortalExtensionPoint; import com.epam.reportportal.extension.common.IntegrationTypeProperties; -import com.epam.reportportal.core.events.domain.PluginUploadedEvent; -import com.epam.reportportal.extension.event.LaunchFinishedPluginEvent; +import com.epam.reportportal.extension.event.LaunchFinishedNotificationEvent; import com.epam.reportportal.extension.slack.binary.JsonObjectLoader; import com.epam.reportportal.extension.slack.binary.MessageTemplateStore; import com.epam.reportportal.extension.slack.event.launch.SlackLaunchFinishEventListener; @@ -96,7 +96,7 @@ public class SlackPluginExtension implements ReportPortalExtensionPoint, Disposa private final Supplier> pluginLoadedListener; - private final Supplier> launchFinishEventListenerSupplier; + private final Supplier> launchFinishedNotificationEventListenerSupplier; private final Supplier messageTemplateStoreSupplier; @@ -146,9 +146,10 @@ public SlackPluginExtension(Map initParams) { attachmentResolverSupplier = new MemoizingSupplier<>(() -> new AttachmentResolver( jsonObjectLoader, messageTemplateStoreSupplier.get(), new PropertyCollectorFactory())); - launchFinishEventListenerSupplier = new MemoizingSupplier<>( + launchFinishedNotificationEventListenerSupplier = new MemoizingSupplier<>( () -> new SlackLaunchFinishEventListener(projectRepository, - launchRepository, senderCaseMatcher.get(), attachmentResolverSupplier.get(), restTemplate)); + launchRepository, senderCaseMatcher.get(), attachmentResolverSupplier.get(), + restTemplate)); } @PostConstruct @@ -163,7 +164,8 @@ private void initListeners() { ApplicationEventMulticaster.class ); applicationEventMulticaster.addApplicationListener(pluginLoadedListener.get()); - applicationEventMulticaster.addApplicationListener(launchFinishEventListenerSupplier.get()); + applicationEventMulticaster.addApplicationListener( + launchFinishedNotificationEventListenerSupplier.get()); } private void initScripts() throws IOException { @@ -187,7 +189,8 @@ private void removeListeners() { ApplicationEventMulticaster.class ); applicationEventMulticaster.removeApplicationListener(pluginLoadedListener.get()); - applicationEventMulticaster.removeApplicationListener(launchFinishEventListenerSupplier.get()); + applicationEventMulticaster.removeApplicationListener( + launchFinishedNotificationEventListenerSupplier.get()); } @Override diff --git a/src/main/java/com/epam/reportportal/extension/slack/event/launch/SlackLaunchFinishEventListener.java b/src/main/java/com/epam/reportportal/extension/slack/event/launch/SlackLaunchFinishEventListener.java index b35dad6..0efac0c 100644 --- a/src/main/java/com/epam/reportportal/extension/slack/event/launch/SlackLaunchFinishEventListener.java +++ b/src/main/java/com/epam/reportportal/extension/slack/event/launch/SlackLaunchFinishEventListener.java @@ -15,7 +15,7 @@ */ package com.epam.reportportal.extension.slack.event.launch; -import com.epam.reportportal.extension.event.LaunchFinishedPluginEvent; +import com.epam.reportportal.extension.event.LaunchFinishedNotificationEvent; import com.epam.reportportal.extension.slack.event.launch.resolver.AttachmentResolver; import com.epam.reportportal.extension.slack.event.launch.resolver.SenderCaseMatcher; import com.epam.reportportal.infrastructure.persistence.dao.LaunchRepository; @@ -39,9 +39,10 @@ * @author Andrei Piankouski */ public class SlackLaunchFinishEventListener implements - ApplicationListener { + ApplicationListener { - private static final Logger LOGGER = LoggerFactory.getLogger(SlackLaunchFinishEventListener.class); + private static final Logger LOGGER = LoggerFactory.getLogger( + SlackLaunchFinishEventListener.class); public final static String SLACK_NOTIFICATION_ATTRIBUTE = "notifications.slack.enabled"; @@ -71,7 +72,7 @@ public SlackLaunchFinishEventListener( } @Override - public void onApplicationEvent(LaunchFinishedPluginEvent event) { + public void onApplicationEvent(LaunchFinishedNotificationEvent event) { try { Project project = getProject(event.getProjectId()); if (isNotificationsEnabled(project)) { diff --git a/src/test/java/com/epam/reportportal/extension/slack/event/launch/SlackLaunchFinishEventListenerTest.java b/src/test/java/com/epam/reportportal/extension/slack/event/launch/SlackLaunchFinishEventListenerTest.java index cedf027..18d6b87 100644 --- a/src/test/java/com/epam/reportportal/extension/slack/event/launch/SlackLaunchFinishEventListenerTest.java +++ b/src/test/java/com/epam/reportportal/extension/slack/event/launch/SlackLaunchFinishEventListenerTest.java @@ -24,7 +24,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import com.epam.reportportal.extension.event.LaunchFinishedPluginEvent; +import com.epam.reportportal.extension.event.LaunchFinishedNotificationEvent; import com.epam.reportportal.extension.slack.event.launch.resolver.AttachmentResolver; import com.epam.reportportal.extension.slack.event.launch.resolver.SenderCaseMatcher; import com.epam.reportportal.extension.slack.utils.MockData; @@ -77,7 +77,7 @@ void sendNotificationPositive() throws URISyntaxException { .thenReturn(new URI("http://localhost:8080")); slackLaunchFinishEventListener.onApplicationEvent( - new LaunchFinishedPluginEvent(1L, 10L, LAUNCH_LINK)); + new LaunchFinishedNotificationEvent(1L, 10L, LAUNCH_LINK)); verify(restTemplate, times(1)).postForLocation(anyString(), anyString());