X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Fexecution%2Ftasks%2FJvmProcess.java;h=01f11012fba228d8b49200020e5fea9c8a632db4;hb=8692159686bb5a207fd9e1ed729f9401e65dacb0;hp=be986f777cbe3695a67ee5d794107b50f1a50ddd;hpb=d97c350e280087a06a5add83055a752143f2b3ab;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 be986f777..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 @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2007-2012 Argeo GmbH + * + * 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. + */ package org.argeo.slc.core.execution.tasks; import java.io.File; @@ -14,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(); @@ -52,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 @@ -97,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); @@ -132,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; } @@ -172,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; }