X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=runtime%2Forg.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Fexecution%2Ftasks%2FJvmProcess.java;fp=runtime%2Forg.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Fexecution%2Ftasks%2FJvmProcess.java;h=01f11012fba228d8b49200020e5fea9c8a632db4;hb=8692159686bb5a207fd9e1ed729f9401e65dacb0;hp=037b7ff4f67bc7a343ae6bd54d0e4ed260aa7583;hpb=7d33e27c887ff1d065a34eccf1b2b10b749c13ed;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/tasks/JvmProcess.java b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/tasks/JvmProcess.java index 037b7ff4f..01f11012f 100644 --- a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/tasks/JvmProcess.java +++ b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/tasks/JvmProcess.java @@ -29,12 +29,14 @@ import org.argeo.slc.SlcException; import org.springframework.beans.factory.InitializingBean; import org.springframework.core.io.Resource; +/** A Java Virtual Machine process. */ public class JvmProcess extends SystemCall implements InitializingBean { private Properties systemProperties = new Properties(); private List classpath = new ArrayList(); private List pBootClasspath = new ArrayList(); private Resource jvm = null; private String mainClass; + private String mainJar; private List jvmArgs = new ArrayList(); private List args = new ArrayList(); @@ -67,14 +69,16 @@ public class JvmProcess extends SystemCall implements InitializingBean { command.add(jvmArg); } - command.add("-cp"); - StringBuffer buf = new StringBuffer(""); - for (Resource res : classpath) { - if (buf.length() != 0) - buf.append(File.pathSeparatorChar); - buf.append(asFile(res)); + if (classpath.size() > 0) { + command.add("-cp"); + StringBuffer buf = new StringBuffer(""); + for (Resource res : classpath) { + if (buf.length() != 0) + buf.append(File.pathSeparatorChar); + buf.append(asFile(res)); + } + command.add(buf.toString()); } - command.add(buf.toString()); if (systemPropertiesFileProperty == null) { // pass system properties as argument @@ -112,7 +116,14 @@ public class JvmProcess extends SystemCall implements InitializingBean { } // Program - command.add(mainClass); + if (mainClass != null) { + command.add(mainClass); + } else if (mainJar != null) { + command.add("-jar"); + command.add(mainJar); + } else { + throw new SlcException("No main class or jar defined"); + } for (String arg : args) { command.add(arg); @@ -147,6 +158,21 @@ public class JvmProcess extends SystemCall implements InitializingBean { return tempFile; } + /** Append the argument (for chaining) */ + @Override + public SystemCall arg(String arg) { + args.add(arg); + return this; + } + + /** Append the argument (for chaining) */ + @Override + public SystemCall arg(String arg, String value) { + args.add(arg); + args.add(value); + return this; + } + public Properties getSystemProperties() { return systemProperties; } @@ -187,6 +213,14 @@ public class JvmProcess extends SystemCall implements InitializingBean { this.mainClass = mainClass; } + public String getMainJar() { + return mainJar; + } + + public void setMainJar(String mainJar) { + this.mainJar = mainJar; + } + public List getJvmArgs() { return jvmArgs; }