</plugins>
</build>
<dependencies>
- <!-- SLC Agent -->
<dependency>
<groupId>org.argeo.slc</groupId>
- <artifactId>org.argeo.slc.core</artifactId>
- <version>1.1.4-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.argeo.slc</groupId>
- <artifactId>org.argeo.slc.support.jcr</artifactId>
- <version>1.1.4-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.argeo.slc</groupId>
- <artifactId>org.argeo.slc.support.osgi</artifactId>
+ <artifactId>org.argeo.slc.launcher</artifactId>
<version>1.1.4-SNAPSHOT</version>
</dependency>
- <!-- SLC Agent Modules -->
<dependency>
<groupId>org.argeo.slc</groupId>
- <artifactId>org.argeo.slc.agent</artifactId>
+ <artifactId>org.argeo.slc.support.jcr</artifactId>
<version>1.1.4-SNAPSHOT</version>
</dependency>
<dependency>
<version>${version.argeo-commons}</version>
</dependency>
- <!-- OSGi Boot (and Equinox) -->
- <dependency>
- <groupId>org.argeo.commons.base</groupId>
- <artifactId>org.argeo.osgi.boot</artifactId>
- <version>${version.argeo-commons}</version>
- </dependency>
-
- <!-- Logging -->
- <dependency>
- <groupId>org.argeo.commons.base</groupId>
- <artifactId>org.argeo.dep.log4j</artifactId>
- <version>${version.argeo-commons}</version>
- <type>pom</type>
- </dependency>
-
<!-- Argeo Security -->
<dependency>
<groupId>org.argeo.commons.security</groupId>
<artifactId>org.argeo.security.core</artifactId>
<version>${version.argeo-commons}</version>
- <exclusions>
- <exclusion>
- <groupId>org.argeo.tp</groupId>
- <artifactId>bcprov</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<!-- Xerces and Xalan -->
<artifactId>javax.annotation</artifactId>
</dependency>
- <!-- Spring OSGi -->
- <dependency>
- <groupId>org.argeo.tp</groupId>
- <artifactId>org.springframework.osgi.extender</artifactId>
- </dependency>
-
<!-- Jackrabbit -->
<dependency>
<groupId>org.argeo.commons.server</groupId>
</dependency>
<!-- DB drivers -->
-<!-- <dependency> -->
-<!-- <groupId>org.argeo.tp</groupId> -->
-<!-- <artifactId>org.h2</artifactId> -->
-<!-- </dependency> -->
+ <dependency>
+ <groupId>org.argeo.tp</groupId>
+ <artifactId>org.h2</artifactId>
+ </dependency>
</dependencies>
<profiles>
<profile>
-<?xml version="1.0" encoding="UTF-8" standalone="no"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.argeo.slc</groupId>
<configuration>
<instructions>
- <Export-Package>
- org.argeo.slc.*
- </Export-Package>
- <Import-Package>
- org.w3c.dom;version="0.0.0",
- javax.xml.*;version="0.0.0",
- org.argeo.slc.build,
- *
- </Import-Package>
<Main-Class>org.argeo.slc.cli.SlcMain</Main-Class>
</instructions>
</configuration>
</plugins>
</build>
<dependencies>
+ <!-- SLC Agent -->
<dependency>
<groupId>org.argeo.slc</groupId>
<artifactId>org.argeo.slc.core</artifactId>
<version>1.1.4-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.argeo.slc</groupId>
+ <artifactId>org.argeo.slc.support.osgi</artifactId>
+ <version>1.1.4-SNAPSHOT</version>
+ </dependency>
+
+ <!-- SLC Agent Modules -->
+ <dependency>
+ <groupId>org.argeo.slc</groupId>
+ <artifactId>org.argeo.slc.agent</artifactId>
+ <version>1.1.4-SNAPSHOT</version>
+ </dependency>
+
+ <!-- OSGi Boot (and Equinox) -->
<dependency>
<groupId>org.argeo.commons.base</groupId>
<artifactId>org.argeo.osgi.boot</artifactId>
<version>${version.argeo-commons}</version>
</dependency>
+ <!-- Logging -->
<dependency>
- <groupId>org.argeo.tp</groupId>
- <artifactId>org.apache.commons.cli</artifactId>
+ <groupId>org.argeo.commons.base</groupId>
+ <artifactId>org.argeo.dep.log4j</artifactId>
+ <version>${version.argeo-commons}</version>
+ <type>pom</type>
</dependency>
+ <!-- Spring OSGi -->
<dependency>
<groupId>org.argeo.tp</groupId>
- <artifactId>org.eclipse.osgi</artifactId>
+ <artifactId>org.springframework.osgi.extender</artifactId>
</dependency>
<dependency>
<groupId>org.argeo.tp</groupId>
- <artifactId>org.springframework.oxm</artifactId>
- <optional>true</optional>
+ <artifactId>org.apache.commons.cli</artifactId>
</dependency>
-
</dependencies>
</project>
\ No newline at end of file
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.GnuParser;
import org.apache.commons.cli.HelpFormatter;
-import org.apache.commons.cli.Option;
-import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.io.IOUtils;
import org.argeo.osgi.boot.OsgiBoot;
import org.argeo.slc.SlcException;
-import org.argeo.slc.execution.ExecutionModulesManager;
import org.eclipse.core.runtime.adaptor.EclipseStarter;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-@SuppressWarnings("static-access")
+@SuppressWarnings("restriction")
public class SlcMain {
- public enum Type {
- standalone, agent, server
- }
+ /** Unique launch module */
+ public static String UNIQUE_LAUNCH_MODULE_PROPERTY = "slc.launch.module";
+
+ /** Unique launch flow */
+ public static String UNIQUE_LAUNCH_FLOW_PROPERTY = "slc.launch.flow";
+
+ // public enum Type {
+ // standalone, agent, server
+ // }
- private static Boolean debug = true;
+ // private static Boolean debug = true;
// private final static String BOOTSTRAP_LOG4J_CONFIG =
// "org/argeo/slc/cli/bootstrapLog4j.properties";
// private final static String DEFAULT_AGENT_CONTEXT =
// "classpath:org/argeo/slc/cli/spring-agent-default.xml";
- private final static Option typeOpt = OptionBuilder.withLongOpt("mode")
- .withArgName("mode").hasArg()
- .withDescription("Execution type, one of: " + listTypeValues())
- .create('t');
-
- private final static Option propertyOpt = OptionBuilder
- .withLongOpt("property").withArgName("prop1=val1,prop2=val2")
- .hasArgs().withValueSeparator(',')
- .withDescription("use value for given property").create('p');
-
- private final static Option propertiesOpt = OptionBuilder
- .withLongOpt("properties").withArgName("properties file").hasArgs()
- .withValueSeparator(',')
- .withDescription("load properties from file (-p has priority)")
- .create('P');
-
- private final static Option moduleOpt = OptionBuilder.withLongOpt("module")
- .withArgName("module").hasArg().withDescription("Execution module")
- .create('m');
-
- private final static Option flowsOpt = OptionBuilder.withLongOpt("flows")
- .withArgName("flows").hasArg().withDescription("Flows to execute")
- .create('f');
-
- private final static Option runtimeOpt = OptionBuilder
- .withLongOpt("runtime").withArgName("runtime").hasArg()
- .withDescription("Runtime URL").create('r');
+ // private final static Option typeOpt = OptionBuilder.withLongOpt("mode")
+ // .withArgName("mode").hasArg()
+ // .withDescription("Execution type, one of: " + listTypeValues())
+ // .create('t');
+ //
+ // private final static Option propertyOpt = OptionBuilder
+ // .withLongOpt("property").withArgName("prop1=val1,prop2=val2")
+ // .hasArgs().withValueSeparator(',')
+ // .withDescription("use value for given property").create('p');
+ //
+ // private final static Option propertiesOpt = OptionBuilder
+ // .withLongOpt("properties").withArgName("properties file").hasArgs()
+ // .withValueSeparator(',')
+ // .withDescription("load properties from file (-p has priority)")
+ // .create('P');
+ //
+ // private final static Option moduleOpt =
+ // OptionBuilder.withLongOpt("module")
+ // .withArgName("module").hasArg().withDescription("Execution module")
+ // .create('m');
+ //
+ // private final static Option flowsOpt = OptionBuilder.withLongOpt("flows")
+ // .withArgName("flows").hasArg().withDescription("Flows to execute")
+ // .create('f');
+ //
+ // private final static Option runtimeOpt = OptionBuilder
+ // .withLongOpt("runtime").withArgName("runtime").hasArg()
+ // .withDescription("Runtime URL").create('r');
private final static Options options;
private final static String commandName = "slc";
- private static String bundlesToInstall = "/usr/share/osgi;in=*.jar";
+ // private static String bundlesToInstall = "/usr/share/osgi;in=*.jar";
+ private static String bundlesToInstall = System.getProperty("user.home")
+ + "/dev/src/slc/runtime/org.argeo.slc.launcher/target/dependency;in=*.jar";
+ // private static String bundlesToStart =
+ // "org.springframework.osgi.extender,"
+ // + "org.argeo.node.repofactory.jackrabbit,"
+ // + "org.argeo.node.repo.jackrabbit," + "org.argeo.security.dao.os,"
+ // + "org.argeo.slc.node.jackrabbit," + "org.argeo.slc.agent,"
+ // + "org.argeo.slc.agent.jcr";
private static String bundlesToStart = "org.springframework.osgi.extender,"
- + "org.argeo.node.repofactory.jackrabbit,"
- + "org.argeo.node.repo.jackrabbit," + "org.argeo.security.dao.os,"
- + "org.argeo.slc.node.jackrabbit," + "org.argeo.slc.agent,"
- + "org.argeo.slc.agent.jcr";
+ + "org.argeo.slc.agent";
static {
options = new Options();
// options.addOption(runtimeOpt);
}
+ @SuppressWarnings({ "unchecked" })
public static void main(String[] args) {
// Type type = null;
// Properties properties = new Properties();
}
}
- // System.setProperty(
- // ExecutionModulesManager.UNIQUE_LAUNCH_MODULE_PROPERTY,
- // module);
- // System.setProperty(
- // ExecutionModulesManager.UNIQUE_LAUNCH_FLOW_PROPERTY, flow);
-
String executionDir = System.getProperty("user.dir");
- File slcDir = new File(executionDir, ".slc");
+ File slcDir = new File(executionDir, "target/.slc");
File dataDir = new File(slcDir, "data");
if (!dataDir.exists())
dataDir.mkdirs();
// OSGi bootstrap
OsgiBoot osgiBoot = new OsgiBoot(bundleContext);
osgiBoot.installUrls(osgiBoot.getBundlesUrls(bundlesToInstall));
- osgiBoot.startBundles(bundlesToStart);
if (moduleUrl != null) {
Bundle bundle = osgiBoot.installUrl(moduleUrl);
// TODO deal with version
}
- // retrieve modulesManager
- ServiceReference sr = bundleContext
- .getServiceReference(ExecutionModulesManager.class
- .getName());
- ExecutionModulesManager modulesManager = (ExecutionModulesManager) bundleContext
- .getService(sr);
-
-
- modulesManager.execute(null);
+ System.setProperty(UNIQUE_LAUNCH_MODULE_PROPERTY, module);
+ System.setProperty(UNIQUE_LAUNCH_FLOW_PROPERTY, flow);
+ System.setProperty("log4j.configuration", "file:./log4j.properties");
+
+ // start runtime
+ osgiBoot.startBundles(bundlesToStart);
+
+ // Bundle bundle = (Bundle) osgiBoot.getBundlesBySymbolicName().get(
+ // "org.argeo.slc.specs");
+ // bundle.loadClass(Execu)
+ //
+ // // retrieve modulesManager
+ // BundlesManager bundlesManager = new
+ // BundlesManager(bundleContext);
+ // ExecutionModulesManager modulesManager = bundlesManager
+ // .getSingleService(ExecutionModulesManager.class, null, true);
+ //
+ // RealizedFlow realizedFlow = RealizedFlow.create(module, null,
+ // flow,
+ // null);
+ // modulesManager.start(new BasicNameVersion(module, "0.0.0"));
+ // modulesManager.execute(realizedFlow);
// osgiBoot.bootstrap();
// osgiBoot.bootstrap();
new HelpFormatter().printHelp(commandName, options, true);
}
- private static String listTypeValues() {
- StringBuffer buf = new StringBuffer("");
- for (Type mode : Type.values()) {
- buf.append(mode).append(", ");
- }
- String str = buf.toString();
- // unsafe, but there will be at least one value in the enum
- return str.substring(0, str.length() - 2);
- }
+ // private static String listTypeValues() {
+ // StringBuffer buf = new StringBuffer("");
+ // for (Type mode : Type.values()) {
+ // buf.append(mode).append(", ");
+ // }
+ // String str = buf.toString();
+ // // unsafe, but there will be at least one value in the enum
+ // return str.substring(0, str.length() - 2);
+ // }
protected static void addProperty(Properties properties, String property) {
int eqIndex = property.indexOf('=');