Merge "Add TaskChain to run any LcDsl launch configuration headlessly"
diff --git a/org.eclipse.tea.library.build.lcdsl/META-INF/MANIFEST.MF b/org.eclipse.tea.library.build.lcdsl/META-INF/MANIFEST.MF
index c93eb49..d27e2f5 100644
--- a/org.eclipse.tea.library.build.lcdsl/META-INF/MANIFEST.MF
+++ b/org.eclipse.tea.library.build.lcdsl/META-INF/MANIFEST.MF
@@ -22,7 +22,9 @@
  org.eclipse.tea.core.ui
 Bundle-ActivationPolicy: lazy
 Service-Component: OSGI-INF/org.eclipse.tea.library.build.lcdsl.tasks.chains.TaskChainBuildAnyFeatureSite.xml,
- OSGI-INF/org.eclipse.tea.library.build.lcdsl.tasks.p2.ProductBuildTaskChain.xml
+ OSGI-INF/org.eclipse.tea.library.build.lcdsl.tasks.p2.ProductBuildTaskChain.xml,
+ OSGI-INF/org.eclipse.tea.library.build.lcdsl.tasks.chains.TaskChainLcDslLaunch.xml,
+ OSGI-INF/org.eclipse.tea.library.build.lcdsl.tasks.config.LcDslLaunchConfig.xml
 Export-Package: org.eclipse.tea.library.build.lcdsl.tasks,
  org.eclipse.tea.library.build.lcdsl.tasks.chains,
  org.eclipse.tea.library.build.lcdsl.tasks.p2
diff --git a/org.eclipse.tea.library.build.lcdsl/OSGI-INF/org.eclipse.tea.library.build.lcdsl.tasks.chains.TaskChainLcDslLaunch.xml b/org.eclipse.tea.library.build.lcdsl/OSGI-INF/org.eclipse.tea.library.build.lcdsl.tasks.chains.TaskChainLcDslLaunch.xml
new file mode 100644
index 0000000..9b9635e
--- /dev/null
+++ b/org.eclipse.tea.library.build.lcdsl/OSGI-INF/org.eclipse.tea.library.build.lcdsl.tasks.chains.TaskChainLcDslLaunch.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.library.build.lcdsl.tasks.chains.TaskChainLcDslLaunch">
+   <service>
+      <provide interface="org.eclipse.tea.core.services.TaskChain"/>
+   </service>
+   <implementation class="org.eclipse.tea.library.build.lcdsl.tasks.chains.TaskChainLcDslLaunch"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.tea.library.build.lcdsl/OSGI-INF/org.eclipse.tea.library.build.lcdsl.tasks.config.LcDslLaunchConfig.xml b/org.eclipse.tea.library.build.lcdsl/OSGI-INF/org.eclipse.tea.library.build.lcdsl.tasks.config.LcDslLaunchConfig.xml
new file mode 100644
index 0000000..5867ce9
--- /dev/null
+++ b/org.eclipse.tea.library.build.lcdsl/OSGI-INF/org.eclipse.tea.library.build.lcdsl.tasks.config.LcDslLaunchConfig.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.library.build.lcdsl.tasks.config.LcDslLaunchConfig">
+   <service>
+      <provide interface="org.eclipse.tea.core.services.TaskingConfigurationExtension"/>
+   </service>
+   <implementation class="org.eclipse.tea.library.build.lcdsl.tasks.config.LcDslLaunchConfig"/>
+</scr:component>
\ No newline at end of file
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
new file mode 100644
index 0000000..b88d530
--- /dev/null
+++ b/org.eclipse.tea.library.build.lcdsl/src/org/eclipse/tea/library/build/lcdsl/tasks/chains/TaskChainLcDslLaunch.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ *  Copyright (c) 2017 SSI Schaefer IT Solutions GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ *  Contributors:
+ *      SSI Schaefer IT Solutions GmbH
+ *******************************************************************************/
+package org.eclipse.tea.library.build.lcdsl.tasks.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.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;
+
+@TaskChainId(description = "Run the named launch configuration", alias = "TaskChainLcDslLaunch")
+@Component
+public class TaskChainLcDslLaunch implements TaskChain {
+
+	@TaskChainContextInit
+	public void init(TaskExecutionContext c, LcDslLaunchConfig cfg, TaskingLog log) {
+		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
new file mode 100644
index 0000000..4081f7d
--- /dev/null
+++ b/org.eclipse.tea.library.build.lcdsl/src/org/eclipse/tea/library/build/lcdsl/tasks/config/LcDslLaunchConfig.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ *  Copyright (c) 2017 SSI Schaefer IT Solutions GmbH and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *
+ *  Contributors:
+ *      SSI Schaefer IT Solutions GmbH
+ *******************************************************************************/
+package org.eclipse.tea.library.build.lcdsl.tasks.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 = "TEA Core Configuration")
+@Component
+public class LcDslLaunchConfig implements TaskingConfigurationExtension {
+
+	@TaskingConfigProperty(description = "Name of the launch configuration to start", headlessOnly = true)
+	public String launchConfig;
+
+}