You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ms...@apache.org on 2015/07/14 20:15:36 UTC

airavata git commit: avoid modifying output param if the value has a url pattern

Repository: airavata
Updated Branches:
  refs/heads/airavata-0.15-release-branch 567657b85 -> c3039e136


avoid modifying output param if the value has a url pattern

Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/c3039e13
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/c3039e13
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/c3039e13

Branch: refs/heads/airavata-0.15-release-branch
Commit: c3039e136d9f2d24f67be5c3a19883d3588d1f1b
Parents: 567657b
Author: msmemon <sh...@gmail.com>
Authored: Tue Jul 14 20:15:17 2015 +0200
Committer: msmemon <sh...@gmail.com>
Committed: Tue Jul 14 20:15:17 2015 +0200

----------------------------------------------------------------------
 .../airavata/gfac/core/cpi/BetterGfacImpl.java  | 35 ++++++++++++++------
 1 file changed, 25 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/c3039e13/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java
index d6f68be..8d30bb5 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java
@@ -71,12 +71,16 @@ import org.xml.sax.SAXException;
 
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.xpath.XPathExpressionException;
+
 import java.io.File;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * This is the GFac CPI class for external usage, this simply have a single method to submit a job to
@@ -367,18 +371,21 @@ public class BetterGfacImpl implements GFac {
         for (OutputDataObjectType objectType : taskOutputs) {
             if (objectType.getType() == DataType.URI && objectType.getValue() != null) {
                 String filePath = objectType.getValue();
+                boolean isUrl = isURL(filePath);
+ 
                 // if output is not in working folder
-                if (objectType.getLocation() != null && !objectType.getLocation().isEmpty()) {
-                    if (objectType.getLocation().startsWith(File.separator)) {
-                        filePath = objectType.getLocation() + File.separator + filePath;
-                    } else {
-                        filePath = jobExecutionContext.getOutputDir() + File.separator + objectType.getLocation() + File.separator + filePath;
-                    }
-                } else {
-                    filePath = jobExecutionContext.getOutputDir() + File.separator + filePath;
+                if(!isUrl) {
+	                if (objectType.getLocation() != null && !objectType.getLocation().isEmpty()) {
+	                    if (objectType.getLocation().startsWith(File.separator)) {
+	                        filePath = objectType.getLocation() + File.separator + filePath;
+	                    } else {
+	                        filePath = jobExecutionContext.getOutputDir() + File.separator + objectType.getLocation() + File.separator + filePath;
+	                    }
+	                } else {
+	                    filePath = jobExecutionContext.getOutputDir() + File.separator + filePath;
+	                }
+	                objectType.setValue(filePath);
                 }
-                objectType.setValue(filePath);
-
             }
             if (objectType.getType() == DataType.STDOUT) {
                	String stdout = objectType.getValue();
@@ -409,6 +416,14 @@ public class BetterGfacImpl implements GFac {
         return jobExecutionContext;
     }
 
+    private boolean isURL(String path) {
+	    String pattern =  "^(https?|ftp|file|gsiftp|rns)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";
+	    Pattern p = Pattern.compile(pattern);
+		Matcher m = p.matcher(path);
+		return m.matches();
+    }
+
+    
     private void setUpWorkingLocation(JobExecutionContext jobExecutionContext, ApplicationInterfaceDescription applicationInterface, String scratchLocation) {
         /**
          * Scratch location