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