X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.agent%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcli%2FDefaultSlcRuntime.java;h=3fc2a5671fced3e77bb54b9fb7c290e84d5a6607;hb=b7f351768f4577c0799ab3c5df116ce30270af49;hp=e3ce331529a4af7e53490f7ccc9fabf4e14495cb;hpb=179f039b11568c5551e525a568693d6831fdb2f6;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.agent/src/main/java/org/argeo/slc/cli/DefaultSlcRuntime.java b/org.argeo.slc.agent/src/main/java/org/argeo/slc/cli/DefaultSlcRuntime.java index e3ce33152..3fc2a5671 100644 --- a/org.argeo.slc.agent/src/main/java/org/argeo/slc/cli/DefaultSlcRuntime.java +++ b/org.argeo.slc.agent/src/main/java/org/argeo/slc/cli/DefaultSlcRuntime.java @@ -12,14 +12,15 @@ import java.util.UUID; import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.argeo.slc.ant.AntExecutionContext; import org.argeo.slc.ant.AntSlcApplication; -import org.argeo.slc.ant.SlcAntConstants; -import org.argeo.slc.ant.SlcAntException; +import org.argeo.slc.ant.AntConstants; import org.argeo.slc.core.SlcException; import org.argeo.slc.core.process.SlcExecution; -import org.argeo.slc.runtime.SlcExecutionContext; +import org.argeo.slc.runtime.SlcExecutionOutput; import org.argeo.slc.spring.SpringUtils; import org.springframework.core.io.DefaultResourceLoader; +import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; public class DefaultSlcRuntime { @@ -27,29 +28,69 @@ public class DefaultSlcRuntime { public final static String SLC_ROOT_FILE_NAME = "slcRoot.properties"; - public SlcExecutionContext executeScript(String runtimeStr, - Resource script, String targets, Properties properties, - Map references) { + /** + * Simplified execution with default runtime, default target, and no + * properties/reference arguments. + * + * @param script + * path to the script + * @param executionOutput + * output + * + * @see #executeScript(String, String, String, Properties, Map, + * SlcExecutionOutput) + */ + public void executeScript(String script, + SlcExecutionOutput executionOutput) { + executeScript(null, script, null, null, null, executionOutput); + } - Resource slcRootFile = findSlcRootFile(script); - String scriptRelativePath = SpringUtils.extractRelativePath(SpringUtils - .getParent(slcRootFile), script); + /** + * Simplified execution with default runtime, and no properties/reference + * arguments. + * + * @param script + * path to the script + * @param targets + * comma separated list of targets + * @param executionOutput + * output + * @see #executeScript(String, String, String, Properties, Map, + * SlcExecutionOutput) + */ + public void executeScript(String script, String targets, + SlcExecutionOutput executionOutput) { + executeScript(null, script, targets, null, null, executionOutput); + } - SlcExecution slcExecution = createSlcExecution(); - slcExecution.setStatus(SlcExecution.STATUS_RUNNING); - slcExecution.getAttributes().put(SlcAntConstants.EXECATTR_RUNTIME, - runtimeStr); - slcExecution.getAttributes().put(SlcAntConstants.EXECATTR_ANT_FILE, - scriptRelativePath); - if (targets != null) - slcExecution.getAttributes().put( - SlcAntConstants.EXECATTR_ANT_TARGETS, targets); + public void executeScript(String runtime, String script, String targets, + Properties properties, Map references, + SlcExecutionOutput executionOutput) { + + Resource scriptRes = findScript(script); + Resource slcRootFile = findSlcRootFile(scriptRes); + + SlcExecution slcExecution = createSlcExecution(runtime, slcRootFile, + scriptRes, targets); AntSlcApplication application = getApplication(slcRootFile); - return application.execute(slcExecution, properties, references); + application.execute(slcExecution, properties, references, + executionOutput); + } + + protected Resource findScript(String scriptStr) { + Resource scriptRes; + if (new File(scriptStr).exists()) { + scriptRes = new FileSystemResource(scriptStr); + } else { + scriptRes = new DefaultResourceLoader(SlcMain.class + .getClassLoader()).getResource(scriptStr); + } + return scriptRes; } - protected SlcExecution createSlcExecution() { + protected SlcExecution createSlcExecution(String runtimeStr, + Resource slcRootFile, Resource script, String targets) { SlcExecution slcExecution = new SlcExecution(); slcExecution.setUuid(UUID.randomUUID().toString()); try { @@ -58,9 +99,23 @@ public class DefaultSlcRuntime { slcExecution.setHost(SlcExecution.UNKOWN_HOST); } - slcExecution.setType(SlcAntConstants.EXECTYPE_SLC_ANT); + slcExecution.setType(AntConstants.EXECTYPE_SLC_ANT); slcExecution.setUser(System.getProperty("user.name")); + + if (runtimeStr != null) + slcExecution.getAttributes().put(AntConstants.EXECATTR_RUNTIME, + runtimeStr); + String scriptRelativePath = SpringUtils.extractRelativePath(SpringUtils + .getParent(slcRootFile), script); + + slcExecution.getAttributes().put(AntConstants.EXECATTR_ANT_FILE, + scriptRelativePath); + if (targets != null) + slcExecution.getAttributes().put( + AntConstants.EXECATTR_ANT_TARGETS, targets); + + slcExecution.setStatus(SlcExecution.STATUS_SCHEDULED); return slcExecution; } @@ -82,7 +137,7 @@ public class DefaultSlcRuntime { // Conf dir String confDirStr = rootProps - .getProperty(SlcAntConstants.CONF_DIR_PROPERTY); + .getProperty(AntConstants.CONF_DIR_PROPERTY); if (confDirStr != null) confDir = new DefaultResourceLoader(application.getClass() .getClassLoader()).getResource(confDirStr); @@ -95,7 +150,7 @@ public class DefaultSlcRuntime { // Work dir String workDirStr = rootProps - .getProperty(SlcAntConstants.WORK_DIR_PROPERTY); + .getProperty(AntConstants.WORK_DIR_PROPERTY); if (workDirStr != null) { workDir = new File(workDirStr); } @@ -161,7 +216,7 @@ public class DefaultSlcRuntime { try { p.load(in); } catch (IOException e) { - throw new SlcAntException("Cannot read SLC root file", e); + throw new SlcException("Cannot read SLC root file", e); } return p; }