You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ra...@apache.org on 2012/09/10 15:46:25 UTC
svn commit: r1382838 - in
/incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac:
provider/impl/GramProvider.java utils/OutputUtils.java
Author: raminder
Date: Mon Sep 10 13:46:25 2012
New Revision: 1382838
URL: http://svn.apache.org/viewvc?rev=1382838&view=rev
Log:
AIRAVATA-548. Added stringarray to handle multiple outputs in STDOUT
Modified:
incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/impl/GramProvider.java
incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/utils/OutputUtils.java
Modified: incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/impl/GramProvider.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/impl/GramProvider.java?rev=1382838&r1=1382837&r2=1382838&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/impl/GramProvider.java (original)
+++ incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/impl/GramProvider.java Mon Sep 10 13:46:25 2012
@@ -54,6 +54,7 @@ import org.apache.airavata.core.gfac.uti
import org.apache.airavata.core.gfac.utils.OutputUtils;
import org.apache.airavata.schemas.gfac.ApplicationDeploymentDescriptionType;
import org.apache.airavata.schemas.gfac.GlobusHostType;
+import org.apache.airavata.schemas.gfac.StringArrayType;
import org.apache.airavata.schemas.gfac.URIArrayType;
import org.apache.airavata.schemas.gfac.URIParameterType;
import org.apache.airavata.schemas.wec.WorkflowOutputDataHandlingDocument;
@@ -304,6 +305,13 @@ public class GramProvider extends Abstra
stringMap.put(paramName, actualParameter);
invocationContext.getExecutionContext().getNotifier().output(invocationContext, actualParameter.toString());
}
+ if ("StringArray".equals(actualParameter.getType().getType().toString())) {
+ String[] valueList = OutputUtils.parseStdoutArray(stdout, paramName);
+ ((StringArrayType) actualParameter.getType()).setValueArray(valueList);
+ stringMap = new HashMap<String, ActualParameter>();
+ stringMap.put(paramName, actualParameter);
+ invocationContext.getExecutionContext().getNotifier().output(invocationContext, actualParameter.toString());
+ }
else{
// This is to handle exception during the output parsing.
stringMap = OutputUtils.fillOutputFromStdout(invocationContext.<ActualParameter>getOutput(), stdout,stderr);
Modified: incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/utils/OutputUtils.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/utils/OutputUtils.java?rev=1382838&r1=1382837&r2=1382838&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/utils/OutputUtils.java (original)
+++ incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/utils/OutputUtils.java Mon Sep 10 13:46:25 2012
@@ -30,13 +30,14 @@ import java.util.regex.Pattern;
import org.apache.airavata.commons.gfac.type.ActualParameter;
import org.apache.airavata.commons.gfac.type.MappingFactory;
import org.apache.airavata.core.gfac.context.message.MessageContext;
-import org.apache.airavata.schemas.gfac.DataType;
import org.apache.airavata.schemas.gfac.StdErrParameterType;
import org.apache.airavata.schemas.gfac.StdOutParameterType;
-import org.apache.xmlbeans.XmlException;
public class OutputUtils {
+ private static String regexPattern = "\\s*=\\s*([^\\[\\s'\"][^\\s]*|\"[^\"]*\"|'[^']*'|\\[[^\\[]*\\])";
+
+
private OutputUtils() {
}
@@ -73,7 +74,7 @@ public class OutputUtils {
}
private static String parseStdout(String stdout, String outParam)throws Exception {
- String regex = Pattern.quote(outParam) + "\\s*=\\s*([^\\[\\s'\"][^\\s]*|\"[^\"]*\"|'[^']*'|\\[[^\\[]*\\])";
+ String regex = Pattern.quote(outParam) + regexPattern;
String match = null;
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(stdout);
@@ -87,4 +88,18 @@ public class OutputUtils {
throw new Exception("Data for the output parameter '"+outParam+"' was not found");
}
}
+ public static String[] parseStdoutArray(String stdout, String outParam)throws NullPointerException {
+ String regex = Pattern.quote(outParam) + regexPattern;
+ StringBuffer match = new StringBuffer();
+ Pattern pattern = Pattern.compile(regex);
+ Matcher matcher = pattern.matcher(stdout);
+ while (matcher.find()) {
+ match.append(matcher.group(1)+",");
+ }
+ if (match != null) {
+ return match.toString().split(",");
+ } else {
+ throw new NullPointerException();
+ }
+ }
}