diff --git a/nuxeo-features/nuxeo-automation/nuxeo-automation-scripting/pom.xml b/nuxeo-features/nuxeo-automation/nuxeo-automation-scripting/pom.xml
index 58bf2d9..c39927e 100644
--- a/nuxeo-features/nuxeo-automation/nuxeo-automation-scripting/pom.xml
+++ b/nuxeo-features/nuxeo-automation/nuxeo-automation-scripting/pom.xml
@@ -8,6 +8,7 @@
nuxeo-automation-scripting
Nuxeo Automation Scripting
Nuxeo Automation Scripting
+ 9.1-patch-NXP-22383
org.nuxeo.common
@@ -115,4 +116,4 @@
-
\ No newline at end of file
+
diff --git a/nuxeo-features/nuxeo-automation/nuxeo-automation-scripting/src/main/java/org/nuxeo/automation/scripting/internals/AutomationScriptingComponent.java b/nuxeo-features/nuxeo-automation/nuxeo-automation-scripting/src/main/java/org/nuxeo/automation/scripting/internals/AutomationScriptingComponent.java
index 61134dd..f6cb743 100644
--- a/nuxeo-features/nuxeo-automation/nuxeo-automation-scripting/src/main/java/org/nuxeo/automation/scripting/internals/AutomationScriptingComponent.java
+++ b/nuxeo-features/nuxeo-automation/nuxeo-automation-scripting/src/main/java/org/nuxeo/automation/scripting/internals/AutomationScriptingComponent.java
@@ -110,4 +110,8 @@ public class AutomationScriptingComponent extends DefaultComponent {
return super.getAdapter(adapter);
}
+ public AutomationScriptingRegistry getRegistry() {
+ return registry;
+ }
+
}
diff --git a/nuxeo-features/nuxeo-automation/nuxeo-automation-scripting/src/main/java/org/nuxeo/automation/scripting/internals/AutomationScriptingServiceListener.java b/nuxeo-features/nuxeo-automation/nuxeo-automation-scripting/src/main/java/org/nuxeo/automation/scripting/internals/AutomationScriptingServiceListener.java
new file mode 100644
index 0000000..571e5ae
--- /dev/null
+++ b/nuxeo-features/nuxeo-automation/nuxeo-automation-scripting/src/main/java/org/nuxeo/automation/scripting/internals/AutomationScriptingServiceListener.java
@@ -0,0 +1,59 @@
+/*
+ * (C) Copyright 2017 Nuxeo (http://nuxeo.com/) and others.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Contributors:
+ * Anahide Tchertchian
+ */
+package org.nuxeo.automation.scripting.internals;
+
+import org.apache.commons.logging.LogFactory;
+import org.nuxeo.automation.scripting.api.AutomationScriptingService;
+import org.nuxeo.automation.scripting.internals.operation.ScriptingOperationTypeImpl;
+import org.nuxeo.ecm.automation.AutomationService;
+import org.nuxeo.ecm.automation.OperationException;
+import org.nuxeo.runtime.api.Framework;
+import org.nuxeo.runtime.reload.ReloadService;
+import org.nuxeo.runtime.services.event.Event;
+import org.nuxeo.runtime.services.event.EventListener;
+
+/**
+ * Event listener to quick-fix hot reload on 9.1, see NXP-22383
+ *
+ * @since 9.1-patch
+ */
+public class AutomationScriptingServiceListener implements EventListener {
+
+ @Override
+ public void handleEvent(Event event) {
+ if (ReloadService.RELOAD_EVENT_ID.equals(event.getId())) {
+ AutomationScriptingComponent scripting = (AutomationScriptingComponent) Framework.getRuntime().getComponent(
+ "org.nuxeo.automation.scripting.internals.AutomationScriptingComponent");
+ AutomationService automation = Framework.getService(AutomationService.class);
+ AutomationScriptingService service = Framework.getService(AutomationScriptingService.class);
+ scripting.getRegistry().stream().forEach(contrib -> {
+ try {
+ ScriptingOperationTypeImpl type = new ScriptingOperationTypeImpl(service, automation, contrib);
+ automation.removeOperation(type);
+ automation.putOperation(type, true);
+ } catch (OperationException e) {
+ LogFactory.getLog(AutomationScriptingRegistry.class)
+ .error("Cannot contribute scripting operation " + contrib.getId());
+ }
+ });
+ return;
+ }
+ }
+
+}
diff --git a/nuxeo-features/nuxeo-automation/nuxeo-automation-scripting/src/main/java/org/nuxeo/automation/scripting/internals/operation/ScriptingOperationTypeImpl.java b/nuxeo-features/nuxeo-automation/nuxeo-automation-scripting/src/main/java/org/nuxeo/automation/scripting/internals/operation/ScriptingOperationTypeImpl.java
index c309396..08eea48 100644
--- a/nuxeo-features/nuxeo-automation/nuxeo-automation-scripting/src/main/java/org/nuxeo/automation/scripting/internals/operation/ScriptingOperationTypeImpl.java
+++ b/nuxeo-features/nuxeo-automation/nuxeo-automation-scripting/src/main/java/org/nuxeo/automation/scripting/internals/operation/ScriptingOperationTypeImpl.java
@@ -48,7 +48,7 @@ public class ScriptingOperationTypeImpl implements OperationType {
protected final InvokableMethod method = runMethod();
- public ScriptingOperationTypeImpl(AutomationScriptingServiceImpl scripting, AutomationService automation,
+ public ScriptingOperationTypeImpl(AutomationScriptingService scripting, AutomationService automation,
ScriptingOperationDescriptor desc) throws ScriptingException {
this.scripting = scripting;
this.automation = automation;
diff --git a/nuxeo-features/nuxeo-automation/nuxeo-automation-scripting/src/main/resources/OSGI-INF/automation-scripting-service.xml b/nuxeo-features/nuxeo-automation/nuxeo-automation-scripting/src/main/resources/OSGI-INF/automation-scripting-service.xml
index 5172fdc..dafb6f6 100644
--- a/nuxeo-features/nuxeo-automation/nuxeo-automation-scripting/src/main/resources/OSGI-INF/automation-scripting-service.xml
+++ b/nuxeo-features/nuxeo-automation/nuxeo-automation-scripting/src/main/resources/OSGI-INF/automation-scripting-service.xml
@@ -31,4 +31,11 @@
class="org.nuxeo.automation.scripting.internals.operation.ScriptingOperationDescriptor" />
+
+
+ org.nuxeo.runtime.reload
+
+
+