Skip to content

Commit c4ce82b

Browse files
authored
EPMRPP-109656 || Events refactoring (#47)
1 parent 97b5b3b commit c4ce82b

File tree

8 files changed

+29
-217
lines changed

8 files changed

+29
-217
lines changed

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ dependencies {
2929
implementation 'com.epam.reportportal:service-api'
3030
annotationProcessor 'com.epam.reportportal:service-api'
3131
} else {
32-
implementation 'com.github.reportportal:service-api:3e34a90'
33-
annotationProcessor 'com.github.reportportal:service-api:3e34a90'
32+
implementation 'com.github.reportportal:service-api:4a137a7'
33+
annotationProcessor 'com.github.reportportal:service-api:4a137a7'
3434
}
3535

3636
// add lombok support

src/main/java/com/epam/reportportal/extension/gitlab/GitlabExtension.java

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@
66
import com.epam.reportportal.extension.PluginCommand;
77
import com.epam.reportportal.extension.ReportPortalExtensionPoint;
88
import com.epam.reportportal.extension.common.IntegrationTypeProperties;
9-
import com.epam.reportportal.extension.event.PluginEvent;
10-
import com.epam.reportportal.extension.event.StartLaunchEvent;
9+
import com.epam.reportportal.core.events.domain.PluginUploadedEvent;
1110
import com.epam.reportportal.extension.gitlab.client.GitlabClientProvider;
1211
import com.epam.reportportal.extension.gitlab.command.DescriptionBuilderService;
1312
import com.epam.reportportal.extension.gitlab.command.GetIssueCommand;
@@ -22,17 +21,14 @@
2221
import com.epam.reportportal.extension.gitlab.command.SearchMilestonesCommand;
2322
import com.epam.reportportal.extension.gitlab.command.SearchUsersCommand;
2423
import com.epam.reportportal.extension.gitlab.command.TestConnectionCommand;
25-
import com.epam.reportportal.extension.gitlab.event.launch.StartLaunchEventListener;
26-
import com.epam.reportportal.extension.gitlab.event.plugin.PluginEventHandlerFactory;
27-
import com.epam.reportportal.extension.gitlab.event.plugin.PluginEventListener;
24+
import com.epam.reportportal.extension.gitlab.event.plugin.PluginLoadedEventListener;
2825
import com.epam.reportportal.extension.gitlab.info.impl.PluginInfoProviderImpl;
2926
import com.epam.reportportal.extension.gitlab.utils.GitlabObjectMapperProvider;
3027
import com.epam.reportportal.extension.gitlab.utils.MemoizingSupplier;
3128
import com.epam.reportportal.extension.util.RequestEntityConverter;
3229
import com.epam.reportportal.infrastructure.persistence.binary.DataStoreService;
3330
import com.epam.reportportal.infrastructure.persistence.dao.IntegrationRepository;
3431
import com.epam.reportportal.infrastructure.persistence.dao.IntegrationTypeRepository;
35-
import com.epam.reportportal.infrastructure.persistence.dao.LaunchRepository;
3632
import com.epam.reportportal.infrastructure.persistence.dao.LogRepository;
3733
import com.epam.reportportal.infrastructure.persistence.dao.ProjectRepository;
3834
import com.epam.reportportal.infrastructure.persistence.dao.TestItemRepository;
@@ -66,8 +62,7 @@ public class GitlabExtension implements ReportPortalExtensionPoint, DisposableBe
6662
private static final String DOCUMENTATION_LINK = "https://reportportal.io/docs/plugins/GitLab/";
6763
private final String resourcesDir;
6864
private final RequestEntityConverter requestEntityConverter;
69-
private final Supplier<ApplicationListener<PluginEvent>> pluginLoadedListenerSupplier;
70-
private final Supplier<ApplicationListener<StartLaunchEvent>> startLaunchEventListenerSupplier;
65+
private final Supplier<ApplicationListener<PluginUploadedEvent>> pluginLoadedListenerSupplier;
7166
private final Supplier<GitlabClientProvider> gitlabClientProviderSupplier;
7267
private final Supplier<DescriptionBuilderService> descriptionBuilderServiceSupplier;
7368
@Autowired
@@ -85,8 +80,6 @@ public class GitlabExtension implements ReportPortalExtensionPoint, DisposableBe
8580
private final Supplier<Map<String, PluginCommand<?>>> pluginCommandMapping = new MemoizingSupplier<>(
8681
this::getCommands);
8782
@Autowired
88-
private LaunchRepository launchRepository;
89-
@Autowired
9083
private LogRepository logRepository;
9184
@Autowired
9285
private TestItemRepository testItemRepository;
@@ -103,13 +96,9 @@ public GitlabExtension(Map<String, Object> initParams) {
10396
.map(String::valueOf).orElse("");
10497

10598
pluginLoadedListenerSupplier = new MemoizingSupplier<>(
106-
() -> new PluginEventListener(PLUGIN_ID, new PluginEventHandlerFactory(
107-
integrationTypeRepository,
108-
integrationRepository,
99+
() -> new PluginLoadedEventListener(PLUGIN_ID, integrationTypeRepository, integrationRepository,
109100
new PluginInfoProviderImpl(resourcesDir, BINARY_DATA_PROPERTIES_FILE_ID)
110-
)));
111-
startLaunchEventListenerSupplier = new MemoizingSupplier<>(
112-
() -> new StartLaunchEventListener(launchRepository));
101+
));
113102

114103
gitlabClientProviderSupplier = new MemoizingSupplier<>(
115104
() -> new GitlabClientProvider(textEncryptor));
@@ -154,7 +143,6 @@ private void initListeners() {
154143
ApplicationEventMulticaster.class
155144
);
156145
applicationEventMulticaster.addApplicationListener(pluginLoadedListenerSupplier.get());
157-
applicationEventMulticaster.addApplicationListener(startLaunchEventListenerSupplier.get());
158146
}
159147

160148
@Override
@@ -168,7 +156,6 @@ private void removeListeners() {
168156
ApplicationEventMulticaster.class
169157
);
170158
applicationEventMulticaster.removeApplicationListener(pluginLoadedListenerSupplier.get());
171-
applicationEventMulticaster.removeApplicationListener(startLaunchEventListenerSupplier.get());
172159
}
173160

174161
private Map<String, CommonPluginCommand<?>> getCommonCommands() {

src/main/java/com/epam/reportportal/extension/gitlab/event/EventHandlerFactory.java

Lines changed: 0 additions & 26 deletions
This file was deleted.

src/main/java/com/epam/reportportal/extension/gitlab/event/handler/EventHandler.java

Lines changed: 0 additions & 24 deletions
This file was deleted.

src/main/java/com/epam/reportportal/extension/gitlab/event/launch/StartLaunchEventListener.java

Lines changed: 0 additions & 37 deletions
This file was deleted.

src/main/java/com/epam/reportportal/extension/gitlab/event/plugin/PluginEventHandlerFactory.java

Lines changed: 0 additions & 50 deletions
This file was deleted.

src/main/java/com/epam/reportportal/extension/gitlab/event/plugin/PluginEventListener.java

Lines changed: 0 additions & 49 deletions
This file was deleted.

src/main/java/com/epam/reportportal/extension/gitlab/event/handler/plugin/PluginLoadedEventHandler.java renamed to src/main/java/com/epam/reportportal/extension/gitlab/event/plugin/PluginLoadedEventListener.java

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,9 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package com.epam.reportportal.extension.gitlab.event.handler.plugin;
16+
package com.epam.reportportal.extension.gitlab.event.plugin;
1717

18-
import com.epam.reportportal.extension.event.PluginEvent;
19-
import com.epam.reportportal.extension.gitlab.event.handler.EventHandler;
18+
import com.epam.reportportal.core.events.domain.PluginUploadedEvent;
2019
import com.epam.reportportal.extension.gitlab.info.PluginInfoProvider;
2120
import com.epam.reportportal.infrastructure.persistence.dao.IntegrationRepository;
2221
import com.epam.reportportal.infrastructure.persistence.dao.IntegrationTypeRepository;
@@ -26,32 +25,45 @@
2625
import java.time.Instant;
2726
import java.util.HashMap;
2827
import java.util.List;
28+
import java.util.Objects;
29+
import org.springframework.context.ApplicationListener;
2930

3031
/**
3132
* @author <a href="mailto:ivan_budayeu@epam.com">Ivan Budayeu</a>
3233
*/
33-
public class PluginLoadedEventHandler implements EventHandler<PluginEvent> {
34+
public class PluginLoadedEventListener implements ApplicationListener<PluginUploadedEvent> {
3435

36+
private final String pluginId;
3537
private final IntegrationTypeRepository integrationTypeRepository;
3638
private final IntegrationRepository integrationRepository;
3739
private final PluginInfoProvider pluginInfoProvider;
3840

39-
public PluginLoadedEventHandler(IntegrationTypeRepository integrationTypeRepository,
40-
IntegrationRepository integrationRepository,
41-
PluginInfoProvider pluginInfoProvider) {
41+
public PluginLoadedEventListener(String pluginId, IntegrationTypeRepository integrationTypeRepository,
42+
IntegrationRepository integrationRepository, PluginInfoProvider pluginInfoProvider) {
43+
this.pluginId = pluginId;
4244
this.integrationTypeRepository = integrationTypeRepository;
4345
this.integrationRepository = integrationRepository;
4446
this.pluginInfoProvider = pluginInfoProvider;
4547
}
4648

4749
@Override
48-
public void handle(PluginEvent event) {
49-
integrationTypeRepository.findByName(event.getPluginId()).ifPresent(integrationType -> {
50-
createIntegration(event.getPluginId(), integrationType);
50+
public void onApplicationEvent(PluginUploadedEvent event) {
51+
if (!supports(event)) {
52+
return;
53+
}
54+
55+
String eventPluginId = event.getPluginActivityResource().getName();
56+
integrationTypeRepository.findByName(eventPluginId).ifPresent(integrationType -> {
57+
createIntegration(eventPluginId, integrationType);
5158
integrationTypeRepository.save(pluginInfoProvider.provide(integrationType));
5259
});
5360
}
5461

62+
private boolean supports(PluginUploadedEvent event) {
63+
return Objects.nonNull(event.getPluginActivityResource())
64+
&& pluginId.equals(event.getPluginActivityResource().getName());
65+
}
66+
5567
private void createIntegration(String name, IntegrationType integrationType) {
5668
List<Integration> integrations = integrationRepository.findAllGlobalByType(integrationType);
5769
if (integrations.isEmpty()) {
@@ -65,5 +77,4 @@ private void createIntegration(String name, IntegrationType integrationType) {
6577
integrationRepository.save(integration);
6678
}
6779
}
68-
6980
}

0 commit comments

Comments
 (0)