From 41f6d94f30254a7af3a1bcddcd1a3ecabeb075f3 Mon Sep 17 00:00:00 2001 From: juanf <juanf@ethz.ch> Date: Wed, 17 Aug 2022 15:58:56 +0200 Subject: [PATCH] SSDM-12514 : Adding new plugin type to startup --- .../asapi/v3/executor/operation/IOperationListener.java | 2 ++ .../ch/ethz/sis/openbis/generic/shared/utils/AutoSymlink.java | 4 +++- .../CorePluginsInjectingPropertyPlaceholderConfigurer.java | 4 +++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/operation/IOperationListener.java b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/operation/IOperationListener.java index dfcd0066a52..8959f297e09 100644 --- a/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/operation/IOperationListener.java +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/operation/IOperationListener.java @@ -7,6 +7,8 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.Session; public interface IOperationListener<OPERATION extends IOperation, RESULT extends IOperationResult> { + public static final String LISTENER_PROPERTY_KEY = "operation-listener"; + public abstract void beforeOperation(IApplicationServerInternalApi api, Session session, OPERATION operation); public abstract void afterOperation(IApplicationServerInternalApi api, Session session, OPERATION operation, RESULT result, RuntimeException runtimeException); } diff --git a/openbis/source/java/ch/ethz/sis/openbis/generic/shared/utils/AutoSymlink.java b/openbis/source/java/ch/ethz/sis/openbis/generic/shared/utils/AutoSymlink.java index 7c046542dad..ba2cb5d42e7 100644 --- a/openbis/source/java/ch/ethz/sis/openbis/generic/shared/utils/AutoSymlink.java +++ b/openbis/source/java/ch/ethz/sis/openbis/generic/shared/utils/AutoSymlink.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.util.Map; import java.util.Properties; +import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.operation.IOperationListener; import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.service.CustomASServiceProvider; import ch.systemsx.cisd.base.unix.Unix; import ch.systemsx.cisd.common.io.PropertyIOUtils; @@ -50,8 +51,9 @@ public class AutoSymlink new PluginType("services", CustomASServiceProvider.SERVICES_PROPERTY_KEY); PluginType miscellaneous = new PluginType("miscellaneous", null); + PluginType apiListener = new PluginType("api-listener", IOperationListener.LISTENER_PROPERTY_KEY); CorePluginsInjector injector = - new CorePluginsInjector(ScannerType.AS, new IPluginType[] { maintenanceTasks, services, miscellaneous }); + new CorePluginsInjector(ScannerType.AS, new IPluginType[] { maintenanceTasks, services, miscellaneous, apiListener }); Map<String, File> pluginFolders = injector.injectCorePlugins(properties); createSymlinks(new File("webapps/openbis/WEB-INF/lib/"), pluginFolders); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/coreplugin/CorePluginsInjectingPropertyPlaceholderConfigurer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/coreplugin/CorePluginsInjectingPropertyPlaceholderConfigurer.java index 5614e0a7277..ce14b310134 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/coreplugin/CorePluginsInjectingPropertyPlaceholderConfigurer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/coreplugin/CorePluginsInjectingPropertyPlaceholderConfigurer.java @@ -19,6 +19,7 @@ package ch.systemsx.cisd.openbis.generic.server.coreplugin; import java.io.IOException; import java.util.Properties; +import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.operation.IOperationListener; import ch.ethz.sis.openbis.generic.server.asapi.v3.executor.service.CustomASServiceProvider; import ch.systemsx.cisd.common.maintenance.MaintenanceTaskUtils; import ch.systemsx.cisd.common.spring.ExposablePropertyPlaceholderConfigurer; @@ -65,10 +66,11 @@ public class CorePluginsInjectingPropertyPlaceholderConfigurer extends CustomImport.PropertyNames.CUSTOM_IMPORTS.getName()); PluginType queryDatabases = new PluginType("query-databases", "query-databases"); PluginType miscellaneous = new PluginType("miscellaneous", null); + PluginType apiListener = new PluginType("api-listener", IOperationListener.LISTENER_PROPERTY_KEY); PluginType webapps = PLUGIN_TYPE_WEBAPPS; new CorePluginsInjector(ScannerType.AS, new IPluginType[] - { maintenanceTasks, services, customImports, queryDatabases, miscellaneous, dssDataSources, + { maintenanceTasks, services, customImports, queryDatabases, miscellaneous, apiListener, dssDataSources, webapps }).injectCorePlugins(properties); // Inject the web apps into jetty -- GitLab