| 
      
      
      From: <ha...@us...> - 2006-11-08 21:30:44
       | 
| Revision: 1363
          http://svn.sourceforge.net/cogkit/?rev=1363&view=rev
Author:   hategan
Date:     2006-11-08 13:30:39 -0800 (Wed, 08 Nov 2006)
Log Message:
-----------
make sure args are strings
Modified Paths:
--------------
    trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
Modified: trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
===================================================================
--- trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java	2006-11-08 21:30:15 UTC (rev 1362)
+++ trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java	2006-11-08 21:30:39 UTC (rev 1363)
@@ -6,6 +6,7 @@
 
 package org.globus.cog.karajan.workflow.nodes.grid;
 
+import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -85,10 +86,10 @@
 				}
 				else if (name.equals(A_ARGS.getName()) || name.equals(A_ARGUMENTS.getName())) {
 					if (value instanceof List) {
-						js.setArguments((List) value);
+						js.setArguments(stringify((List) value));
 					}
 					else if (value instanceof VariableArguments) {
-						js.setArguments(((VariableArguments) value).getAll());
+						js.setArguments(stringify(((VariableArguments) value).getAll()));
 					}
 					else {
 						js.setArguments(TypeUtil.toString(value));
@@ -237,6 +238,15 @@
 			throw new ExecutionException("Exception caught while submitting job", e);
 		}
 	}
+	
+	private List stringify(List l) {
+	    ArrayList sl = new ArrayList(l.size());
+	    Iterator i = l.iterator();
+	    while (i.hasNext()) {
+	        sl.add(TypeUtil.toString(i.next()));
+	    }
+	    return sl;
+	}
 
 	protected void taskFailed(StatusEvent e, VariableStack stack) throws ExecutionException {
 		Task task = (Task) e.getSource();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ha...@us...> - 2007-02-13 00:47:06
       | 
| Revision: 1576
          http://svn.sourceforge.net/cogkit/?rev=1576&view=rev
Author:   hategan
Date:     2007-02-12 16:47:02 -0800 (Mon, 12 Feb 2007)
Log Message:
-----------
removed extra newlines
Modified Paths:
--------------
    trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
Modified: trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
===================================================================
--- trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java	2007-02-12 23:55:03 UTC (rev 1575)
+++ trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java	2007-02-13 00:47:02 UTC (rev 1576)
@@ -283,10 +283,10 @@
 		if (TypeUtil.toBoolean(A_REDIRECT.getValue(stack))) {
 			Task t = (Task) e.getSource();
 			if (t.getStdOutput() != null) {
-				STDOUT.ret(stack, t.getStdOutput() + '\n');
+				STDOUT.ret(stack, t.getStdOutput());
 			}
 			if (t.getStdError() != null) {
-				STDOUT.ret(stack, t.getStdError() + '\n');
+				STDOUT.ret(stack, t.getStdError());
 			}
 		}
 		super.taskCompleted(e, stack);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ha...@us...> - 2007-08-16 22:47:48
       | 
| Revision: 1678
          http://cogkit.svn.sourceforge.net/cogkit/?rev=1678&view=rev
Author:   hategan
Date:     2007-08-16 15:47:46 -0700 (Thu, 16 Aug 2007)
Log Message:
-----------
stderr goes to stderr
Modified Paths:
--------------
    trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
Modified: trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
===================================================================
--- trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java	2007-08-16 22:47:24 UTC (rev 1677)
+++ trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java	2007-08-16 22:47:46 UTC (rev 1678)
@@ -286,7 +286,7 @@
 				STDOUT.ret(stack, t.getStdOutput());
 			}
 			if (t.getStdError() != null) {
-				STDOUT.ret(stack, t.getStdError());
+				STDERR.ret(stack, t.getStdError());
 			}
 		}
 		super.taskCompleted(e, stack);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ha...@us...> - 2007-08-20 22:39:38
       | 
| Revision: 1696
          http://cogkit.svn.sourceforge.net/cogkit/?rev=1696&view=rev
Author:   hategan
Date:     2007-08-20 15:39:11 -0700 (Mon, 20 Aug 2007)
Log Message:
-----------
added stdoutLocation, stderrLocation, and failOnJobError
Modified Paths:
--------------
    trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
Modified: trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
===================================================================
--- trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java	2007-08-20 22:34:12 UTC (rev 1695)
+++ trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java	2007-08-20 22:39:11 UTC (rev 1696)
@@ -15,9 +15,12 @@
 
 import org.apache.log4j.Logger;
 import org.globus.cog.abstraction.impl.common.StatusEvent;
+import org.globus.cog.abstraction.impl.common.execution.JobException;
 import org.globus.cog.abstraction.impl.common.task.GenericTaskHandler;
 import org.globus.cog.abstraction.impl.common.task.JobSpecificationImpl;
 import org.globus.cog.abstraction.impl.common.task.TaskImpl;
+import org.globus.cog.abstraction.interfaces.FileLocation;
+import org.globus.cog.abstraction.interfaces.JobSpecification;
 import org.globus.cog.abstraction.interfaces.Service;
 import org.globus.cog.abstraction.interfaces.StatusListener;
 import org.globus.cog.abstraction.interfaces.Task;
@@ -43,6 +46,8 @@
 	public static final Arg A_HOST = new Arg.Optional("host");
 	public static final Arg A_STDOUT = new Arg.Optional("stdout");
 	public static final Arg A_STDERR = new Arg.Optional("stderr");
+	public static final Arg A_STDOUTLOCATION = new Arg.Optional("stdoutLocation");
+	public static final Arg A_STDERRLOCATION = new Arg.Optional("stderrLocation");
 	public static final Arg A_STDIN = new Arg.Optional("stdin");
 	public static final Arg A_PROVIDER = new Arg.Optional("provider");
 	public static final Arg A_SECURITY_CONTEXT = new Arg.Optional("securitycontext");
@@ -62,13 +67,14 @@
 	public static final Arg A_DELEGATION = new Arg.Optional("delegation", Boolean.FALSE);
 	public static final Arg.Channel C_ENVIRONMENT = new Arg.Channel("environment");
 	public static final Arg A_ATTRIBUTES = new Arg.Optional("attributes", Collections.EMPTY_MAP);
+	public static final Arg A_FAIL_ON_JOB_ERROR = new Arg.Optional("failonjoberror", Boolean.TRUE);
 
 	static {
 		setArguments(GridExec.class, new Arg[] { A_EXECUTABLE, A_ARGS, A_ARGUMENTS, A_HOST,
-				A_STDOUT, A_STDERR, A_STDIN, A_PROVIDER, A_COUNT, A_JOBTYPE, A_MAXTIME,
-				A_MAXWALLTIME, A_MAXCPUTIME, A_ENVIRONMENT, A_QUEUE, A_PROJECT, A_MINMEMORY,
-				A_MAXMEMORY, A_REDIRECT, A_SECURITY_CONTEXT, A_DIRECTORY, A_NATIVESPEC,
-				A_DELEGATION, A_ATTRIBUTES, C_ENVIRONMENT });
+				A_STDOUT, A_STDERR, A_STDOUTLOCATION, A_STDERRLOCATION, A_STDIN, A_PROVIDER,
+				A_COUNT, A_JOBTYPE, A_MAXTIME, A_MAXWALLTIME, A_MAXCPUTIME, A_ENVIRONMENT, A_QUEUE,
+				A_PROJECT, A_MINMEMORY, A_MAXMEMORY, A_REDIRECT, A_SECURITY_CONTEXT, A_DIRECTORY,
+				A_NATIVESPEC, A_DELEGATION, A_ATTRIBUTES, C_ENVIRONMENT, A_FAIL_ON_JOB_ERROR });
 	}
 
 	public void submitTask(VariableStack stack) throws ExecutionException {
@@ -79,9 +85,10 @@
 			Iterator i = named.getNames();
 			Object host = null;
 			String provider = null;
+			boolean redirect = false;
 			while (i.hasNext()) {
 				String name = (String) i.next();
-	
+
 				Object value = named.getArgument(name);
 				if (name.equals(A_EXECUTABLE.getName())) {
 					js.setExecutable(TypeUtil.toString(value));
@@ -98,7 +105,7 @@
 					}
 				}
 				else if (name.equals(A_REDIRECT.getName())) {
-					js.setRedirected(TypeUtil.toBoolean(value));
+					redirect = TypeUtil.toBoolean(value);
 				}
 				else if (name.equals(A_STDIN.getName())) {
 					js.setStdInput(TypeUtil.toString(value));
@@ -106,9 +113,15 @@
 				else if (name.equals(A_STDOUT.getName())) {
 					js.setStdOutput(TypeUtil.toString(value));
 				}
+                else if (name.equals(A_STDOUTLOCATION.getName())) {
+                    js.setStdOutputLocation(new FileLocation.Impl(TypeUtil.toInt(value)));
+                }
 				else if (name.equals(A_STDERR.getName())) {
 					js.setStdError(TypeUtil.toString(value));
 				}
+                else if (name.equals(A_STDERRLOCATION.getName())) {
+                    js.setStdErrorLocation(new FileLocation.Impl(TypeUtil.toInt(value)));
+                }
 				else if (name.equals(A_DIRECTORY.getName())) {
 					js.setDirectory(TypeUtil.toString(value));
 				}
@@ -165,7 +178,8 @@
 							js.setAttribute((String) e.getKey(), e.getValue());
 						}
 						catch (ClassCastException ex) {
-							throw new ExecutionException("Invalid attribute name (" + e.getKey() + ")", ex);
+							throw new ExecutionException("Invalid attribute name (" + e.getKey()
+									+ ")", ex);
 						}
 					}
 				}
@@ -173,7 +187,12 @@
 					js.setAttribute(name, value);
 				}
 			}
-	
+
+			if (redirect) {
+				js.setStdOutputLocation(FileLocation.MEMORY);
+				js.setStdErrorLocation(FileLocation.MEMORY);
+			}
+
 			VariableArguments env = C_ENVIRONMENT.get(stack);
 			Iterator j = env.iterator();
 			while (j.hasNext()) {
@@ -253,42 +272,50 @@
 			throw new ExecutionException("Exception caught while submitting job", e);
 		}
 	}
-	
+
 	private List stringify(List l) {
-	    ArrayList sl = new ArrayList(l.size());
-	    Iterator i = l.iterator();
-	    while (i.hasNext()) {
-	        sl.add(TypeUtil.toString(i.next()));
-	    }
-	    return sl;
+		ArrayList sl = new ArrayList(l.size());
+		Iterator i = l.iterator();
+		while (i.hasNext()) {
+			sl.add(TypeUtil.toString(i.next()));
+		}
+		return sl;
 	}
 
 	protected void taskFailed(StatusEvent e, VariableStack stack) throws ExecutionException {
 		Task task = (Task) e.getSource();
-		if (task.getStdError() != null) {
-			failImmediately(stack, task.getStdError());
+		returnOutputs(task, stack);
+		Exception ex = e.getStatus().getException();
+		if (ex instanceof JobException && !TypeUtil.toBoolean(A_FAIL_ON_JOB_ERROR.getValue(stack))) {
+			Arg.VARGS.ret(stack, new Integer(((JobException) ex).getExitCode()));
+			super.taskCompleted(e, stack);
 		}
-		else if (e.getStatus().getException() != null) {
-			failImmediately(stack, e.getStatus().getException());
-		}
-		else if (e.getStatus().getMessage() != null) {
-			failImmediately(stack, e.getStatus().getMessage());
-		}
 		else {
-			failImmediately(stack, "Task failed");
+			if (e.getStatus().getException() != null) {
+				failImmediately(stack, e.getStatus().getException());
+			}
+			else if (e.getStatus().getMessage() != null) {
+				failImmediately(stack, e.getStatus().getMessage());
+			}
+			else {
+				failImmediately(stack, "Task failed");
+			}
 		}
 	}
 
 	protected void taskCompleted(StatusEvent e, VariableStack stack) throws ExecutionException {
-		if (TypeUtil.toBoolean(A_REDIRECT.getValue(stack))) {
-			Task t = (Task) e.getSource();
-			if (t.getStdOutput() != null) {
-				STDOUT.ret(stack, t.getStdOutput());
-			}
-			if (t.getStdError() != null) {
-				STDERR.ret(stack, t.getStdError());
-			}
-		}
+		Task t = (Task) e.getSource();
+		returnOutputs(t, stack);
 		super.taskCompleted(e, stack);
 	}
+
+	protected void returnOutputs(Task t, VariableStack stack) throws ExecutionException {
+        JobSpecification spec = (JobSpecification) t.getSpecification();
+		if (t.getStdOutput() != null && FileLocation.MEMORY.overlaps(spec.getStdOutputLocation())) {
+			STDOUT.ret(stack, t.getStdOutput());
+		}
+		if (t.getStdError() != null && FileLocation.MEMORY.overlaps(spec.getStdErrorLocation())) {
+			STDERR.ret(stack, t.getStdError());
+		}
+	}
 }
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ha...@us...> - 2007-08-22 16:58:45
       | 
| Revision: 1704
          http://cogkit.svn.sourceforge.net/cogkit/?rev=1704&view=rev
Author:   hategan
Date:     2007-08-22 09:58:43 -0700 (Wed, 22 Aug 2007)
Log Message:
-----------
also return exit code if failOnJobError is false and the job does not fail
Modified Paths:
--------------
    trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
Modified: trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
===================================================================
--- trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java	2007-08-21 22:22:02 UTC (rev 1703)
+++ trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java	2007-08-22 16:58:43 UTC (rev 1704)
@@ -306,6 +306,9 @@
 	protected void taskCompleted(StatusEvent e, VariableStack stack) throws ExecutionException {
 		Task t = (Task) e.getSource();
 		returnOutputs(t, stack);
+        if (!TypeUtil.toBoolean(A_FAIL_ON_JOB_ERROR.getValue(stack))) {
+            Arg.VARGS.ret(stack, new Integer(0));
+        }
 		super.taskCompleted(e, stack);
 	}
 
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ha...@us...> - 2007-09-19 15:35:09
       | 
| Revision: 1742
          http://cogkit.svn.sourceforge.net/cogkit/?rev=1742&view=rev
Author:   hategan
Date:     2007-09-19 08:35:05 -0700 (Wed, 19 Sep 2007)
Log Message:
-----------
added hostCount and batch arguments
Modified Paths:
--------------
    trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
Modified: trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
===================================================================
--- trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java	2007-09-18 21:45:30 UTC (rev 1741)
+++ trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java	2007-09-19 15:35:05 UTC (rev 1742)
@@ -52,6 +52,7 @@
 	public static final Arg A_PROVIDER = new Arg.Optional("provider");
 	public static final Arg A_SECURITY_CONTEXT = new Arg.Optional("securitycontext");
 	public static final Arg A_COUNT = new Arg.Optional("count");
+	public static final Arg A_HOST_COUNT = new Arg.Optional("hostcount");
 	public static final Arg A_JOBTYPE = new Arg.Optional("jobtype");
 	public static final Arg A_MAXTIME = new Arg.Optional("maxtime");
 	public static final Arg A_MAXWALLTIME = new Arg.Optional("maxwalltime");
@@ -68,13 +69,14 @@
 	public static final Arg.Channel C_ENVIRONMENT = new Arg.Channel("environment");
 	public static final Arg A_ATTRIBUTES = new Arg.Optional("attributes", Collections.EMPTY_MAP);
 	public static final Arg A_FAIL_ON_JOB_ERROR = new Arg.Optional("failonjoberror", Boolean.TRUE);
+	public static final Arg A_BATCH = new Arg.Optional("batch", Boolean.FALSE);
 
 	static {
 		setArguments(GridExec.class, new Arg[] { A_EXECUTABLE, A_ARGS, A_ARGUMENTS, A_HOST,
 				A_STDOUT, A_STDERR, A_STDOUTLOCATION, A_STDERRLOCATION, A_STDIN, A_PROVIDER,
-				A_COUNT, A_JOBTYPE, A_MAXTIME, A_MAXWALLTIME, A_MAXCPUTIME, A_ENVIRONMENT, A_QUEUE,
+				A_COUNT, A_HOST_COUNT, A_JOBTYPE, A_MAXTIME, A_MAXWALLTIME, A_MAXCPUTIME, A_ENVIRONMENT, A_QUEUE,
 				A_PROJECT, A_MINMEMORY, A_MAXMEMORY, A_REDIRECT, A_SECURITY_CONTEXT, A_DIRECTORY,
-				A_NATIVESPEC, A_DELEGATION, A_ATTRIBUTES, C_ENVIRONMENT, A_FAIL_ON_JOB_ERROR });
+				A_NATIVESPEC, A_DELEGATION, A_ATTRIBUTES, C_ENVIRONMENT, A_FAIL_ON_JOB_ERROR, A_BATCH });
 	}
 
 	public void submitTask(VariableStack stack) throws ExecutionException {
@@ -183,6 +185,9 @@
 						}
 					}
 				}
+				else if (name.equals(A_BATCH.getName())) {
+					js.setBatchJob(TypeUtil.toBoolean(value));
+				}
 				else {
 					js.setAttribute(name, value);
 				}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ha...@us...> - 2008-05-12 16:54:39
       | 
| Revision: 2005
          http://cogkit.svn.sourceforge.net/cogkit/?rev=2005&view=rev
Author:   hategan
Date:     2008-05-12 09:54:26 -0700 (Mon, 12 May 2008)
Log Message:
-----------
avoid passing arguments of derived classes as attributes and general cleanup
Modified Paths:
--------------
    trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
Modified: trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
===================================================================
--- trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java	2008-05-12 09:46:36 UTC (rev 2004)
+++ trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java	2008-05-12 16:54:26 UTC (rev 2005)
@@ -74,130 +74,80 @@
 	static {
 		setArguments(GridExec.class, new Arg[] { A_EXECUTABLE, A_ARGS, A_ARGUMENTS, A_HOST,
 				A_STDOUT, A_STDERR, A_STDOUTLOCATION, A_STDERRLOCATION, A_STDIN, A_PROVIDER,
-				A_COUNT, A_HOST_COUNT, A_JOBTYPE, A_MAXTIME, A_MAXWALLTIME, A_MAXCPUTIME, A_ENVIRONMENT, A_QUEUE,
-				A_PROJECT, A_MINMEMORY, A_MAXMEMORY, A_REDIRECT, A_SECURITY_CONTEXT, A_DIRECTORY,
-				A_NATIVESPEC, A_DELEGATION, A_ATTRIBUTES, C_ENVIRONMENT, A_FAIL_ON_JOB_ERROR, A_BATCH });
+				A_COUNT, A_HOST_COUNT, A_JOBTYPE, A_MAXTIME, A_MAXWALLTIME, A_MAXCPUTIME,
+				A_ENVIRONMENT, A_QUEUE, A_PROJECT, A_MINMEMORY, A_MAXMEMORY, A_REDIRECT,
+				A_SECURITY_CONTEXT, A_DIRECTORY, A_NATIVESPEC, A_DELEGATION, A_ATTRIBUTES,
+				C_ENVIRONMENT, A_FAIL_ON_JOB_ERROR, A_BATCH });
 	}
 
 	public void submitTask(VariableStack stack) throws ExecutionException {
 		try {
 			JobSpecificationImpl js = new JobSpecificationImpl();
 			Task task = new TaskImpl();
-			NamedArguments named = ArgUtil.getNamedArguments(stack);
-			Iterator i = named.getNames();
-			Object host = null;
-			String provider = null;
-			boolean redirect = false;
-			while (i.hasNext()) {
-				String name = (String) i.next();
 
-				Object value = named.getArgument(name);
-				if (name.equals(A_EXECUTABLE.getName())) {
-					js.setExecutable(TypeUtil.toString(value));
-				}
-				else if (name.equals(A_ARGS.getName()) || name.equals(A_ARGUMENTS.getName())) {
-					if (value instanceof List) {
-						js.setArguments(stringify((List) value));
-					}
-					else if (value instanceof VariableArguments) {
-						js.setArguments(stringify(((VariableArguments) value).getAll()));
-					}
-					else {
-						js.setArguments(TypeUtil.toString(value));
-					}
-				}
-				else if (name.equals(A_REDIRECT.getName())) {
-					redirect = TypeUtil.toBoolean(value);
-				}
-				else if (name.equals(A_STDIN.getName())) {
-					js.setStdInput(TypeUtil.toString(value));
-				}
-				else if (name.equals(A_STDOUT.getName())) {
-					js.setStdOutput(TypeUtil.toString(value));
-				}
-                else if (name.equals(A_STDOUTLOCATION.getName())) {
-                    js.setStdOutputLocation(new FileLocation.Impl(TypeUtil.toInt(value)));
-                }
-				else if (name.equals(A_STDERR.getName())) {
-					js.setStdError(TypeUtil.toString(value));
-				}
-                else if (name.equals(A_STDERRLOCATION.getName())) {
-                    js.setStdErrorLocation(new FileLocation.Impl(TypeUtil.toInt(value)));
-                }
-				else if (name.equals(A_DIRECTORY.getName())) {
-					js.setDirectory(TypeUtil.toString(value));
-				}
-				else if (name.equals(A_JOBTYPE.getName())) {
-					js.setAttribute("jobType", value);
-				}
-				else if (name.equals(A_NATIVESPEC.getName())) {
-					js.setSpecification(TypeUtil.toString(value));
-				}
-				else if (name.equals(A_PROVIDER.getName())) {
-					provider = TypeUtil.toString(value);
-				}
-				else if (name.equals(A_SECURITY_CONTEXT.getName())) {
-					// set later
-				}
-				else if (name.equals(A_DELEGATION.getName())) {
-					js.setDelegationEnabled(TypeUtil.toBoolean(value));
-				}
-				else if (name.equals(A_HOST.getName())) {
-					host = value;
-				}
-				else if (name.equals(A_ENVIRONMENT.getName())) {
-					if (value instanceof Map) {
-						Iterator j = ((Map) value).entrySet().iterator();
-						while (j.hasNext()) {
-							Map.Entry e = (Map.Entry) j.next();
-							js.addEnvironmentVariable((String) e.getKey(), (String) e.getValue());
-						}
-					}
-					else if (value instanceof String) {
-						StringTokenizer st = new StringTokenizer((String) value, ",");
-						while (st.hasMoreTokens()) {
-							String el = st.nextToken().trim();
-							String[] nv = el.split("=");
-							if (nv.length > 2 || el.length() == 0) {
-								throw new ExecutionException("Invalid environment entry: '" + el
-										+ "'");
-							}
-							else if (nv.length == 1) {
-								js.addEnvironmentVariable(nv[0].trim(), "");
-							}
-							else {
-								js.addEnvironmentVariable(nv[0].trim(), nv[1].trim());
-							}
-						}
-					}
-				}
-				else if (name.equals(A_ATTRIBUTES.getName())) {
-					Map m = (Map) checkClass(A_ATTRIBUTES.getValue(stack), Map.class, "map");
-					Iterator ai = m.entrySet().iterator();
-					while (ai.hasNext()) {
-						Map.Entry e = (Map.Entry) ai.next();
-						try {
-							js.setAttribute((String) e.getKey(), e.getValue());
-						}
-						catch (ClassCastException ex) {
-							throw new ExecutionException("Invalid attribute name (" + e.getKey()
-									+ ")", ex);
-						}
-					}
-				}
-				else if (name.equals(A_BATCH.getName())) {
-					js.setBatchJob(TypeUtil.toBoolean(value));
-				}
-				else {
-					js.setAttribute(name, value);
-				}
+			js.setExecutable(TypeUtil.toString(A_EXECUTABLE.getValue(stack)));
+			if (A_ARGUMENTS.isPresent(stack)) {
+				setArguments(js, A_ARGUMENTS.getValue(stack));
 			}
-
-			if (redirect) {
+			else if (A_ARGS.isPresent(stack)) {
+				setArguments(js, A_ARGS.getValue(stack));
+			}
+			
+			if (TypeUtil.toBoolean(A_REDIRECT.getValue(stack))) {
 				js.setStdOutputLocation(FileLocation.MEMORY);
 				js.setStdErrorLocation(FileLocation.MEMORY);
 			}
 
+			String stmp;
+			int itmp;
+			stmp = TypeUtil.toString(A_STDIN.getValue(stack, null));
+			if (stmp != null) {
+				js.setStdInput(stmp);
+			}
+			stmp = TypeUtil.toString(A_STDOUT.getValue(stack, null));
+			if (stmp != null) {
+				js.setStdOutput(stmp);
+			}
+			stmp = TypeUtil.toString(A_STDERR.getValue(stack, null));
+			if (stmp != null) {
+				js.setStdError(stmp);
+			}
+			if (A_STDOUTLOCATION.isPresent(stack)) {
+				js.setStdOutputLocation(new FileLocation.Impl(
+						TypeUtil.toInt(A_STDOUTLOCATION.getValue(stack))));
+			}
+			if (A_STDERRLOCATION.isPresent(stack)) {
+				js.setStdErrorLocation(new FileLocation.Impl(
+						TypeUtil.toInt(A_STDERRLOCATION.getValue(stack))));
+			}
+			stmp = TypeUtil.toString(A_DIRECTORY.getValue(stack, null));
+			if (stmp != null) {
+				js.setDirectory(stmp);
+			}
+			stmp = TypeUtil.toString(A_JOBTYPE.getValue(stack, null));
+			if (stmp != null) {
+				js.setAttribute("jobType", stmp);
+			}
+			stmp = TypeUtil.toString(A_NATIVESPEC.getValue(stack, null));
+			if (stmp != null) {
+				js.setSpecification(stmp);
+			}
+			js.setDelegationEnabled(TypeUtil.toBoolean(A_DELEGATION.getValue(stack)));
+			if (A_ENVIRONMENT.isPresent(stack)) {
+				setEnvironment(js, A_ENVIRONMENT.getValue(stack));
+			}
+			if (A_ATTRIBUTES.isPresent(stack)) {
+				setAttributes(js, A_ATTRIBUTES.getValue(stack));
+			}
+			if (A_ATTRIBUTES.isPresent(stack)) {
+				setAttributes(js, A_ATTRIBUTES.getValue(stack));
+			}
+			js.setBatchJob(TypeUtil.toBoolean(A_BATCH.getValue(stack)));
+			setMiscAttributes(js, stack);
+
+			Object host = A_HOST.getValue(stack, null);
+			String provider = TypeUtil.toString(A_PROVIDER.getValue(stack, null));
+
 			VariableArguments env = C_ENVIRONMENT.get(stack);
 			Iterator j = env.iterator();
 			while (j.hasNext()) {
@@ -278,6 +228,71 @@
 		}
 	}
 
+	protected void setArguments(JobSpecification js, Object value) {
+		if (value instanceof List) {
+			js.setArguments(stringify((List) value));
+		}
+		else if (value instanceof VariableArguments) {
+			js.setArguments(stringify(((VariableArguments) value).getAll()));
+		}
+		else {
+			js.setArguments(TypeUtil.toString(value));
+		}
+	}
+
+	protected void setEnvironment(JobSpecification js, Object value) throws ExecutionException {
+		if (value instanceof Map) {
+			Iterator j = ((Map) value).entrySet().iterator();
+			while (j.hasNext()) {
+				Map.Entry e = (Map.Entry) j.next();
+				js.addEnvironmentVariable((String) e.getKey(), (String) e.getValue());
+			}
+		}
+		else if (value instanceof String) {
+			StringTokenizer st = new StringTokenizer((String) value, ",");
+			while (st.hasMoreTokens()) {
+				String el = st.nextToken().trim();
+				String[] nv = el.split("=");
+				if (nv.length > 2 || el.length() == 0) {
+					throw new ExecutionException("Invalid environment entry: '" + el + "'");
+				}
+				else if (nv.length == 1) {
+					js.addEnvironmentVariable(nv[0].trim(), "");
+				}
+				else {
+					js.addEnvironmentVariable(nv[0].trim(), nv[1].trim());
+				}
+			}
+		}
+	}
+
+	protected void setAttributes(JobSpecification js, Object value) throws ExecutionException {
+		Map m = (Map) checkClass(value, Map.class, "map");
+		Iterator ai = m.entrySet().iterator();
+		while (ai.hasNext()) {
+			Map.Entry e = (Map.Entry) ai.next();
+			try {
+				js.setAttribute((String) e.getKey(), e.getValue());
+			}
+			catch (ClassCastException ex) {
+				throw new ExecutionException("Invalid attribute name (" + e.getKey() + ")", ex);
+			}
+		}
+	}
+
+	protected final static Arg[] MISC_ATTRS = new Arg[] { A_COUNT, A_HOST_COUNT, A_JOBTYPE,
+			A_MAXTIME, A_MAXWALLTIME, A_MAXCPUTIME, A_QUEUE, A_PROJECT, A_MINMEMORY, A_MAXMEMORY };
+
+	protected void setMiscAttributes(JobSpecification js, VariableStack stack) {
+		for (int i = 0; i < MISC_ATTRS.length; i++) {
+			setAttributeIfPresent(MISC_ATTRS[i], js, stack);
+		}
+	}
+	
+	protected void setAttributeIfPresent(Arg arg, JobSpecification js, VariableStack stack) {
+		
+	}
+
 	private List stringify(List l) {
 		ArrayList sl = new ArrayList(l.size());
 		Iterator i = l.iterator();
@@ -311,14 +326,14 @@
 	protected void taskCompleted(StatusEvent e, VariableStack stack) throws ExecutionException {
 		Task t = (Task) e.getSource();
 		returnOutputs(t, stack);
-        if (!TypeUtil.toBoolean(A_FAIL_ON_JOB_ERROR.getValue(stack))) {
-            Arg.VARGS.ret(stack, new Integer(0));
-        }
+		if (!TypeUtil.toBoolean(A_FAIL_ON_JOB_ERROR.getValue(stack))) {
+			Arg.VARGS.ret(stack, new Integer(0));
+		}
 		super.taskCompleted(e, stack);
 	}
 
 	protected void returnOutputs(Task t, VariableStack stack) throws ExecutionException {
-        JobSpecification spec = (JobSpecification) t.getSpecification();
+		JobSpecification spec = (JobSpecification) t.getSpecification();
 		if (t.getStdOutput() != null && FileLocation.MEMORY.overlaps(spec.getStdOutputLocation())) {
 			STDOUT.ret(stack, t.getStdOutput());
 		}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ha...@us...> - 2008-05-12 16:56:22
       | 
| Revision: 2006
          http://cogkit.svn.sourceforge.net/cogkit/?rev=2006&view=rev
Author:   hategan
Date:     2008-05-12 09:56:13 -0700 (Mon, 12 May 2008)
Log Message:
-----------
cleaned imports and removed unused variable
Modified Paths:
--------------
    trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
Modified: trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
===================================================================
--- trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java	2008-05-12 16:54:26 UTC (rev 2005)
+++ trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java	2008-05-12 16:56:13 UTC (rev 2006)
@@ -26,8 +26,6 @@
 import org.globus.cog.abstraction.interfaces.Task;
 import org.globus.cog.abstraction.interfaces.TaskHandler;
 import org.globus.cog.karajan.arguments.Arg;
-import org.globus.cog.karajan.arguments.ArgUtil;
-import org.globus.cog.karajan.arguments.NamedArguments;
 import org.globus.cog.karajan.arguments.VariableArguments;
 import org.globus.cog.karajan.scheduler.Scheduler;
 import org.globus.cog.karajan.scheduler.TaskConstraints;
@@ -99,7 +97,6 @@
 			}
 
 			String stmp;
-			int itmp;
 			stmp = TypeUtil.toString(A_STDIN.getValue(stack, null));
 			if (stmp != null) {
 				js.setStdInput(stmp);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <ha...@us...> - 2008-05-13 14:59:12
       | 
| Revision: 2019
          http://cogkit.svn.sourceforge.net/cogkit/?rev=2019&view=rev
Author:   hategan
Date:     2008-05-13 07:59:06 -0700 (Tue, 13 May 2008)
Log Message:
-----------
fixed disappearing attributes
Modified Paths:
--------------
    trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
Modified: trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
===================================================================
--- trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java	2008-05-13 13:53:17 UTC (rev 2018)
+++ trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java	2008-05-13 14:59:06 UTC (rev 2019)
@@ -90,7 +90,7 @@
 			else if (A_ARGS.isPresent(stack)) {
 				setArguments(js, A_ARGS.getValue(stack));
 			}
-			
+
 			if (TypeUtil.toBoolean(A_REDIRECT.getValue(stack))) {
 				js.setStdOutputLocation(FileLocation.MEMORY);
 				js.setStdErrorLocation(FileLocation.MEMORY);
@@ -280,14 +280,19 @@
 	protected final static Arg[] MISC_ATTRS = new Arg[] { A_COUNT, A_HOST_COUNT, A_JOBTYPE,
 			A_MAXTIME, A_MAXWALLTIME, A_MAXCPUTIME, A_QUEUE, A_PROJECT, A_MINMEMORY, A_MAXMEMORY };
 
-	protected void setMiscAttributes(JobSpecification js, VariableStack stack) {
+	protected void setMiscAttributes(JobSpecification js, VariableStack stack)
+			throws ExecutionException {
 		for (int i = 0; i < MISC_ATTRS.length; i++) {
 			setAttributeIfPresent(MISC_ATTRS[i], js, stack);
 		}
 	}
-	
-	protected void setAttributeIfPresent(Arg arg, JobSpecification js, VariableStack stack) {
-		
+
+	protected void setAttributeIfPresent(Arg arg, JobSpecification js, VariableStack stack)
+			throws ExecutionException {
+		Object value = arg.getValue(stack, null);
+		if (value != null) {
+			js.setAttribute(arg.getName(), value);
+		}
 	}
 
 	private List stringify(List l) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 |