Add TaskChain to allow execution of a single (known) EASE script
Change-Id: I4690de1fa2d8e330f38b58497c42a2d573fafdad
diff --git a/org.eclipse.tea.ease/META-INF/MANIFEST.MF b/org.eclipse.tea.ease/META-INF/MANIFEST.MF
index ff59f16..c5aaa84 100644
--- a/org.eclipse.tea.ease/META-INF/MANIFEST.MF
+++ b/org.eclipse.tea.ease/META-INF/MANIFEST.MF
@@ -19,5 +19,7 @@
com.google.guava
Bundle-ActivationPolicy: lazy
Service-Component: OSGI-INF/org.eclipse.tea.ease.internal.ListEaseScripts.xml,
- OSGI-INF/org.eclipse.tea.ease.internal.menu.EaseScriptProvider.xml
+ OSGI-INF/org.eclipse.tea.ease.internal.menu.EaseScriptProvider.xml,
+ OSGI-INF/org.eclipse.tea.ease.chains.TaskChainRunEaseScript.xml,
+ OSGI-INF/org.eclipse.tea.ease.config.EaseScriptConfig.xml
Export-Package: org.eclipse.tea.ease
diff --git a/org.eclipse.tea.ease/OSGI-INF/org.eclipse.tea.ease.chains.TaskChainRunEaseScript.xml b/org.eclipse.tea.ease/OSGI-INF/org.eclipse.tea.ease.chains.TaskChainRunEaseScript.xml
new file mode 100644
index 0000000..7940219
--- /dev/null
+++ b/org.eclipse.tea.ease/OSGI-INF/org.eclipse.tea.ease.chains.TaskChainRunEaseScript.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.tea.ease.chains.TaskChainRunEaseScript">
+ <service>
+ <provide interface="org.eclipse.tea.core.services.TaskChain"/>
+ </service>
+ <implementation class="org.eclipse.tea.ease.chains.TaskChainRunEaseScript"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.tea.ease/OSGI-INF/org.eclipse.tea.ease.config.EaseScriptConfig.xml b/org.eclipse.tea.ease/OSGI-INF/org.eclipse.tea.ease.config.EaseScriptConfig.xml
new file mode 100644
index 0000000..916af03
--- /dev/null
+++ b/org.eclipse.tea.ease/OSGI-INF/org.eclipse.tea.ease.config.EaseScriptConfig.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.tea.ease.config.EaseScriptConfig">
+ <service>
+ <provide interface="org.eclipse.tea.core.services.TaskingConfigurationExtension"/>
+ </service>
+ <implementation class="org.eclipse.tea.ease.config.EaseScriptConfig"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.tea.ease/src/org/eclipse/tea/ease/EaseScriptTask.java b/org.eclipse.tea.ease/src/org/eclipse/tea/ease/EaseScriptTask.java
index 0a75065..f080321 100644
--- a/org.eclipse.tea.ease/src/org/eclipse/tea/ease/EaseScriptTask.java
+++ b/org.eclipse.tea.ease/src/org/eclipse/tea/ease/EaseScriptTask.java
@@ -39,6 +39,15 @@
final IScriptService scriptService = PlatformUI.getWorkbench().getService(IScriptService.class);
final IRepositoryService repoService = PlatformUI.getWorkbench().getService(IRepositoryService.class);
+ log.info("Waiting for script locations to load");
+ repoService.update(true);
+ while (repoService.getScripts().isEmpty()) {
+ Thread.sleep(100);
+ }
+ // we have NO way of knowing whether things are fully loaded... :|
+ Thread.sleep(500);
+ log.info("...loaded");
+
IScript s = repoService.getScript(script);
if (s == null) {
throw new RuntimeException("no script named " + script);
diff --git a/org.eclipse.tea.ease/src/org/eclipse/tea/ease/chains/TaskChainRunEaseScript.java b/org.eclipse.tea.ease/src/org/eclipse/tea/ease/chains/TaskChainRunEaseScript.java
new file mode 100644
index 0000000..ee8143d
--- /dev/null
+++ b/org.eclipse.tea.ease/src/org/eclipse/tea/ease/chains/TaskChainRunEaseScript.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) SSI Schaefer IT Solutions
+ */
+package org.eclipse.tea.ease.chains;
+
+import org.eclipse.tea.core.TaskExecutionContext;
+import org.eclipse.tea.core.annotations.TaskChainContextInit;
+import org.eclipse.tea.core.services.TaskChain;
+import org.eclipse.tea.core.services.TaskChain.TaskChainId;
+import org.eclipse.tea.ease.EaseScriptTask;
+import org.eclipse.tea.ease.config.EaseScriptConfig;
+import org.osgi.service.component.annotations.Component;
+
+@TaskChainId(description = "Run the named EASE script", alias = "TaskChainRunEaseScript")
+@Component
+public class TaskChainRunEaseScript implements TaskChain {
+
+ @TaskChainContextInit
+ public void init(TaskExecutionContext c, EaseScriptConfig cfg) {
+ c.addTask(new EaseScriptTask(cfg.easeScript));
+ }
+
+}
diff --git a/org.eclipse.tea.ease/src/org/eclipse/tea/ease/config/EaseScriptConfig.java b/org.eclipse.tea.ease/src/org/eclipse/tea/ease/config/EaseScriptConfig.java
new file mode 100644
index 0000000..f77f0b2
--- /dev/null
+++ b/org.eclipse.tea.ease/src/org/eclipse/tea/ease/config/EaseScriptConfig.java
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) SSI Schaefer IT Solutions
+ */
+package org.eclipse.tea.ease.config;
+
+import org.eclipse.tea.core.services.TaskingConfigurationExtension;
+import org.eclipse.tea.core.services.TaskingConfigurationExtension.TaskingConfig;
+import org.osgi.service.component.annotations.Component;
+
+@TaskingConfig(description = "EASE Script Configuration")
+@Component
+public class EaseScriptConfig implements TaskingConfigurationExtension {
+
+ @TaskingConfigProperty(description = "Name of the EASE script to start", headlessOnly = true)
+ public String easeScript;
+
+}
diff --git a/org.eclipse.tea.ease/src/org/eclipse/tea/ease/internal/ListEaseScripts.java b/org.eclipse.tea.ease/src/org/eclipse/tea/ease/internal/ListEaseScripts.java
index a689fdf..522be20 100644
--- a/org.eclipse.tea.ease/src/org/eclipse/tea/ease/internal/ListEaseScripts.java
+++ b/org.eclipse.tea.ease/src/org/eclipse/tea/ease/internal/ListEaseScripts.java
@@ -38,9 +38,18 @@
public static final class ListScripts {
@Execute
- public void list(TaskingLog log) {
+ public void list(TaskingLog log) throws Exception {
final IRepositoryService repo = PlatformUI.getWorkbench().getService(IRepositoryService.class);
+ log.info("Waiting for script locations to load");
+ repo.update(true);
+ while (repo.getScripts().isEmpty()) {
+ Thread.sleep(100);
+ }
+ // we have NO way of knowing whether things are fully loaded... :|
+ Thread.sleep(500);
+ log.info("...loaded");
+
for (IScript script : repo.getScripts()) {
log.info(script.getPath().toString());
}
diff --git a/org.eclipse.tea.library.build.lcdsl/src/org/eclipse/tea/library/build/lcdsl/tasks/chains/TaskChainLcDslLaunch.java b/org.eclipse.tea.library.build.lcdsl/src/org/eclipse/tea/library/build/lcdsl/tasks/chains/TaskChainLcDslLaunch.java
index b88d530..0786a54 100644
--- a/org.eclipse.tea.library.build.lcdsl/src/org/eclipse/tea/library/build/lcdsl/tasks/chains/TaskChainLcDslLaunch.java
+++ b/org.eclipse.tea.library.build.lcdsl/src/org/eclipse/tea/library/build/lcdsl/tasks/chains/TaskChainLcDslLaunch.java
@@ -14,7 +14,6 @@
import org.eclipse.tea.core.annotations.TaskChainContextInit;
import org.eclipse.tea.core.services.TaskChain;
import org.eclipse.tea.core.services.TaskChain.TaskChainId;
-import org.eclipse.tea.core.services.TaskingLog;
import org.eclipse.tea.library.build.lcdsl.tasks.TaskLcDslLaunch;
import org.eclipse.tea.library.build.lcdsl.tasks.config.LcDslLaunchConfig;
import org.osgi.service.component.annotations.Component;
@@ -24,7 +23,7 @@
public class TaskChainLcDslLaunch implements TaskChain {
@TaskChainContextInit
- public void init(TaskExecutionContext c, LcDslLaunchConfig cfg, TaskingLog log) {
+ public void init(TaskExecutionContext c, LcDslLaunchConfig cfg) {
c.addTask(new TaskLcDslLaunch(cfg.launchConfig, true));
}
diff --git a/org.eclipse.tea.library.build.lcdsl/src/org/eclipse/tea/library/build/lcdsl/tasks/config/LcDslLaunchConfig.java b/org.eclipse.tea.library.build.lcdsl/src/org/eclipse/tea/library/build/lcdsl/tasks/config/LcDslLaunchConfig.java
index 4081f7d..ccbd5f2 100644
--- a/org.eclipse.tea.library.build.lcdsl/src/org/eclipse/tea/library/build/lcdsl/tasks/config/LcDslLaunchConfig.java
+++ b/org.eclipse.tea.library.build.lcdsl/src/org/eclipse/tea/library/build/lcdsl/tasks/config/LcDslLaunchConfig.java
@@ -14,7 +14,7 @@
import org.eclipse.tea.core.services.TaskingConfigurationExtension.TaskingConfig;
import org.osgi.service.component.annotations.Component;
-@TaskingConfig(description = "TEA Core Configuration")
+@TaskingConfig(description = "LcDSL Launch Configuration")
@Component
public class LcDslLaunchConfig implements TaskingConfigurationExtension {