You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by la...@apache.org on 2013/01/29 04:57:42 UTC
svn commit: r1439743 [2/2] - in /airavata/trunk/modules/gfac-core: ./
src/main/java/org/apache/airavata/gfac/
src/main/java/org/apache/airavata/gfac/context/
src/main/java/org/apache/airavata/gfac/handler/
src/main/java/org/apache/airavata/gfac/notific...
Added: airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/GFacUtils.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/GFacUtils.java?rev=1439743&view=auto
==============================================================================
--- airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/GFacUtils.java (added)
+++ airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/GFacUtils.java Tue Jan 29 03:57:41 2013
@@ -0,0 +1,396 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.airavata.gfac.utils;
+
+import org.apache.airavata.commons.gfac.type.ActualParameter;
+import org.apache.airavata.gfac.Constants;
+import org.apache.airavata.schemas.gfac.*;
+import org.apache.axiom.om.OMElement;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.*;
+import java.net.InetAddress;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.UnknownHostException;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.UUID;
+
+public class GFacUtils {
+ private final static Logger log = LoggerFactory.getLogger(GFacUtils.class);
+
+ private GFacUtils() {
+ }
+
+ /**
+ * Read data from inputStream and convert it to String.
+ *
+ * @param in
+ * @return String read from inputStream
+ * @throws java.io.IOException
+ */
+ public static String readFromStream(InputStream in) throws IOException {
+ try {
+ StringBuffer wsdlStr = new StringBuffer();
+
+ int read;
+
+ byte[] buf = new byte[1024];
+ while ((read = in.read(buf)) > 0) {
+ wsdlStr.append(new String(buf, 0, read));
+ }
+ return wsdlStr.toString();
+ } finally {
+ if (in != null) {
+ try {
+ in.close();
+ } catch (IOException e) {
+ log.warn("Cannot close InputStream: " + in.getClass().getName(), e);
+ }
+ }
+ }
+ }
+
+ public static String readFileToString(String file) throws FileNotFoundException, IOException {
+ BufferedReader instream = null;
+ try {
+
+ instream = new BufferedReader(new FileReader(file));
+ StringBuffer buff = new StringBuffer();
+ String temp = null;
+ while ((temp = instream.readLine()) != null) {
+ buff.append(temp);
+ buff.append(Constants.NEWLINE);
+ }
+ return buff.toString();
+ } finally {
+ if (instream != null) {
+ try {
+ instream.close();
+ } catch (IOException e) {
+ log.warn("Cannot close FileinputStream", e);
+ }
+ }
+ }
+ }
+
+ public static boolean isLocalHost(String appHost) throws UnknownHostException {
+ String localHost = InetAddress.getLocalHost().getCanonicalHostName();
+ return (localHost.equals(appHost) || Constants.LOCALHOST.equals(appHost) || Constants._127_0_0_1
+ .equals(appHost));
+ }
+
+ public static String createUniqueNameForService(String serviceName) {
+ String date = new Date().toString();
+ date = date.replaceAll(" ", "_");
+ date = date.replaceAll(":", "_");
+ return serviceName + "_" + date + "_" + UUID.randomUUID();
+ }
+
+ public static URI createGsiftpURI(GridFTPContactInfo host, String localPath) throws URISyntaxException {
+ StringBuffer buf = new StringBuffer();
+
+ if (!host.hostName.startsWith("gsiftp://"))
+ buf.append("gsiftp://");
+ buf.append(host).append(":").append(host.port);
+ if (!host.hostName.endsWith("/"))
+ buf.append("/");
+ buf.append(localPath);
+ return new URI(buf.toString());
+ }
+
+ public static URI createGsiftpURI(String host, String localPath) throws URISyntaxException {
+ StringBuffer buf = new StringBuffer();
+ if (!host.startsWith("gsiftp://"))
+ buf.append("gsiftp://");
+ buf.append(host);
+ if (!host.endsWith("/"))
+ buf.append("/");
+ buf.append(localPath);
+ return new URI(buf.toString());
+ }
+
+ public static ActualParameter getInputActualParameter(Parameter parameter, OMElement element) {
+ OMElement innerelement = null;
+ ActualParameter actualParameter = new ActualParameter();
+ if ("String".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(StringParameterType.type);
+ if (!"".equals(element.getText())) {
+ ((StringParameterType) actualParameter.getType()).setValue(element.getText());
+ } else if (element.getChildrenWithLocalName("value").hasNext()) {
+ innerelement = (OMElement) element.getChildrenWithLocalName("value").next();
+ ((StringParameterType) actualParameter.getType()).setValue(innerelement.getText());
+ } else {
+ ((StringParameterType) actualParameter.getType()).setValue("");
+ }
+ } else if ("Double".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(DoubleParameterType.type);
+ if (!"".equals(element.getText())) {
+ ((DoubleParameterType) actualParameter.getType()).setValue(new Double(innerelement.getText()));
+ } else {
+ innerelement = (OMElement) element.getChildrenWithLocalName("value").next();
+ ((DoubleParameterType) actualParameter.getType()).setValue(new Double(innerelement.getText()));
+ }
+ } else if ("Integer".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(IntegerParameterType.type);
+ if (!"".equals(element.getText())) {
+ ((IntegerParameterType) actualParameter.getType()).setValue(new Integer(element.getText()));
+ } else {
+ innerelement = (OMElement) element.getChildrenWithLocalName("value").next();
+ ((IntegerParameterType) actualParameter.getType()).setValue(new Integer(innerelement.getText()));
+ }
+ } else if ("Float".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(FloatParameterType.type);
+ if (!"".equals(element.getText())) {
+ ((FloatParameterType) actualParameter.getType()).setValue(new Float(element.getText()));
+ } else {
+ innerelement = (OMElement) element.getChildrenWithLocalName("value").next();
+ ((FloatParameterType) actualParameter.getType()).setValue(new Float(innerelement.getText()));
+ }
+ } else if ("Boolean".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(BooleanParameterType.type);
+ if (!"".equals(element.getText())) {
+ ((BooleanParameterType) actualParameter.getType()).setValue(new Boolean(element.getText()));
+ } else {
+ innerelement = (OMElement) element.getChildrenWithLocalName("value").next();
+ ((BooleanParameterType) actualParameter.getType()).setValue(Boolean.parseBoolean(innerelement.getText()));
+ }
+ } else if ("File".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(FileParameterType.type);
+ if (!"".equals(element.getText())) {
+ ((FileParameterType) actualParameter.getType()).setValue(element.getText());
+ } else {
+ innerelement = (OMElement) element.getChildrenWithLocalName("value").next();
+ ((FileParameterType) actualParameter.getType()).setValue(innerelement.getText());
+ }
+ } else if ("URI".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(URIParameterType.type);
+ if (!"".equals(element.getText())) {
+ ((URIParameterType) actualParameter.getType()).setValue(element.getText());
+ } else if (element.getChildrenWithLocalName("value").hasNext()) {
+ innerelement = (OMElement) element.getChildrenWithLocalName("value").next();
+ System.out.println(actualParameter.getType().toString());
+ log.debug(actualParameter.getType().toString());
+ ((URIParameterType) actualParameter.getType()).setValue(innerelement.getText());
+ } else {
+ ((URIParameterType) actualParameter.getType()).setValue("");
+ }
+ } else if ("StringArray".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(StringArrayType.type);
+ Iterator value = element.getChildrenWithLocalName("value");
+ int i = 0;
+ if (!"".equals(element.getText())) {
+ String[] list = element.getText().split(",");
+ for (String arrayValue : list) {
+ ((StringArrayType) actualParameter.getType()).insertValue(i++, arrayValue);
+ }
+ } else {
+ while (value.hasNext()) {
+ innerelement = (OMElement) value.next();
+ ((StringArrayType) actualParameter.getType()).insertValue(i++, innerelement.getText());
+ }
+ }
+ } else if ("DoubleArray".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(DoubleArrayType.type);
+ Iterator value = element.getChildrenWithLocalName("value");
+ int i = 0;
+ if (!"".equals(element.getText())) {
+ String[] list = element.getText().split(",");
+ for (String arrayValue : list) {
+ ((DoubleArrayType) actualParameter.getType()).insertValue(i++, new Double(arrayValue));
+ }
+ } else {
+ while (value.hasNext()) {
+ innerelement = (OMElement) value.next();
+ ((DoubleArrayType) actualParameter.getType()).insertValue(i++, new Double(innerelement.getText()));
+ }
+ }
+
+ } else if ("IntegerArray".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(IntegerArrayType.type);
+ Iterator value = element.getChildrenWithLocalName("value");
+ int i = 0;
+ if (!"".equals(element.getText())) {
+ String[] list = element.getText().split(",");
+ for (String arrayValue : list) {
+ ((IntegerArrayType) actualParameter.getType()).insertValue(i++, new Integer(arrayValue));
+ }
+ } else {
+ while (value.hasNext()) {
+ innerelement = (OMElement) value.next();
+ ((IntegerArrayType) actualParameter.getType()).insertValue(i++, new Integer(innerelement.getText()));
+ }
+ }
+ } else if ("FloatArray".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(FloatArrayType.type);
+ Iterator value = element.getChildrenWithLocalName("value");
+ int i = 0;
+ if (!"".equals(element.getText())) {
+ String[] list = element.getText().split(",");
+ for (String arrayValue : list) {
+ ((FloatArrayType) actualParameter.getType()).insertValue(i++, new Float(arrayValue));
+ }
+ } else {
+
+ while (value.hasNext()) {
+ innerelement = (OMElement) value.next();
+ ((FloatArrayType) actualParameter.getType()).insertValue(i++, new Float(innerelement.getText()));
+ }
+ }
+ } else if ("BooleanArray".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(BooleanArrayType.type);
+ Iterator value = element.getChildrenWithLocalName("value");
+ int i = 0;
+ if (!"".equals(element.getText())) {
+ String[] list = element.getText().split(",");
+ for (String arrayValue : list) {
+ ((BooleanArrayType) actualParameter.getType()).insertValue(i++, new Boolean(arrayValue));
+ }
+ } else {
+
+ while (value.hasNext()) {
+ innerelement = (OMElement) value.next();
+ ((BooleanArrayType) actualParameter.getType()).insertValue(i++, new Boolean(innerelement.getText()));
+ }
+ }
+ } else if ("FileArray".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(FileArrayType.type);
+ Iterator value = element.getChildrenWithLocalName("value");
+ int i = 0;
+ if (!"".equals(element.getText())) {
+ String[] list = element.getText().split(",");
+ for (String arrayValue : list) {
+ ((FileArrayType) actualParameter.getType()).insertValue(i++, arrayValue);
+ }
+ } else {
+
+ while (value.hasNext()) {
+ innerelement = (OMElement) value.next();
+ ((FileArrayType) actualParameter.getType()).insertValue(i++, innerelement.getText());
+ }
+ }
+ } else if ("URIArray".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(URIArrayType.type);
+ Iterator value = element.getChildrenWithLocalName("value");
+ int i = 0;
+ if (!"".equals(element.getText())) {
+ String[] list = element.getText().split(",");
+ for (String arrayValue : list) {
+ ((URIArrayType) actualParameter.getType()).insertValue(i++, arrayValue);
+ }
+ } else {
+
+ while (value.hasNext()) {
+ innerelement = (OMElement) value.next();
+ ((URIArrayType) actualParameter.getType()).insertValue(i++, innerelement.getText());
+ }
+ }
+ }
+ return actualParameter;
+ }
+
+ public static ActualParameter getInputActualParameter(Parameter parameter, String inputVal) {
+ OMElement innerelement = null;
+ ActualParameter actualParameter = new ActualParameter();
+ if ("String".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(StringParameterType.type);
+ ((StringParameterType) actualParameter.getType()).setValue(inputVal);
+ } else if ("Double".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(DoubleParameterType.type);
+ ((DoubleParameterType) actualParameter.getType()).setValue(new Double(inputVal));
+ } else if ("Integer".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(IntegerParameterType.type);
+ ((IntegerParameterType) actualParameter.getType()).setValue(new Integer(inputVal));
+ } else if ("Float".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(FloatParameterType.type);
+ ((FloatParameterType) actualParameter.getType()).setValue(new Float(inputVal));
+ } else if ("Boolean".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(BooleanParameterType.type);
+ ((BooleanParameterType) actualParameter.getType()).setValue(new Boolean(inputVal));
+ } else if ("File".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(FileParameterType.type);
+ ((FileParameterType) actualParameter.getType()).setValue(inputVal);
+ } else if ("URI".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(URIParameterType.type);
+ ((URIParameterType) actualParameter.getType()).setValue(inputVal);
+ } else if ("StringArray".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(StringArrayType.type);
+ Iterator iterator = Arrays.asList(inputVal.split(",")).iterator();
+ int i = 0;
+ while (iterator.hasNext()) {
+ innerelement = (OMElement) iterator.next();
+ ((StringArrayType) actualParameter.getType()).insertValue(i++, innerelement.getText());
+ }
+ } else if ("DoubleArray".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(DoubleArrayType.type);
+ Iterator value = Arrays.asList(inputVal.split(",")).iterator();
+ int i = 0;
+ while (value.hasNext()) {
+ innerelement = (OMElement) value.next();
+ ((DoubleArrayType) actualParameter.getType()).insertValue(i++, new Double(innerelement.getText()));
+ }
+ } else if ("IntegerArray".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(IntegerArrayType.type);
+ Iterator value = Arrays.asList(inputVal.split(",")).iterator();
+ int i = 0;
+ while (value.hasNext()) {
+ innerelement = (OMElement) value.next();
+ ((IntegerArrayType) actualParameter.getType()).insertValue(i++, new Integer(innerelement.getText()));
+ }
+ } else if ("FloatArray".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(FloatArrayType.type);
+ Iterator value = Arrays.asList(inputVal.split(",")).iterator();
+ int i = 0;
+ while (value.hasNext()) {
+ innerelement = (OMElement) value.next();
+ ((FloatArrayType) actualParameter.getType()).insertValue(i++, new Float(innerelement.getText()));
+ }
+ } else if ("BooleanArray".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(BooleanArrayType.type);
+ Iterator value = Arrays.asList(inputVal.split(",")).iterator();
+ int i = 0;
+ while (value.hasNext()) {
+ innerelement = (OMElement) value.next();
+ ((BooleanArrayType) actualParameter.getType()).insertValue(i++, new Boolean(innerelement.getText()));
+ }
+ } else if ("FileArray".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(FileArrayType.type);
+ Iterator value = Arrays.asList(inputVal.split(",")).iterator();
+ int i = 0;
+ while (value.hasNext()) {
+ innerelement = (OMElement) value.next();
+ ((FileArrayType) actualParameter.getType()).insertValue(i++, innerelement.getText());
+ }
+ } else if ("URIArray".equals(parameter.getParameterType().getName())) {
+ actualParameter = new ActualParameter(URIArrayType.type);
+ Iterator value = Arrays.asList(inputVal.split(",")).iterator();
+ int i = 0;
+ while (value.hasNext()) {
+ innerelement = (OMElement) value.next();
+ ((URIArrayType) actualParameter.getType()).insertValue(i++, innerelement.getText());
+ }
+ }
+ return actualParameter;
+ }
+}
Added: airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/GridFTPContactInfo.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/GridFTPContactInfo.java?rev=1439743&view=auto
==============================================================================
--- airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/GridFTPContactInfo.java (added)
+++ airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/GridFTPContactInfo.java Tue Jan 29 03:57:41 2013
@@ -0,0 +1,61 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.airavata.gfac.utils;
+
+import org.apache.airavata.gfac.Constants;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class GridFTPContactInfo {
+ protected final static Logger log = LoggerFactory.getLogger(GridFTPContactInfo.class);
+ public String hostName;
+ public int port;
+
+ public GridFTPContactInfo(String hostName, int port) {
+ if (port <= 0 || port == 80) {
+ log.debug(hostName + "port recived " + port + " setting it to " + Constants.DEFAULT_GSI_FTP_PORT);
+ port = Constants.DEFAULT_GSI_FTP_PORT;
+ }
+ this.hostName = hostName;
+ this.port = port;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof GridFTPContactInfo) {
+ return hostName.equals(((GridFTPContactInfo) obj).hostName) && port == ((GridFTPContactInfo) obj).port;
+ } else {
+ return false;
+ }
+ }
+
+ @Override
+ public int hashCode() {
+ return hostName.hashCode();
+ }
+
+ @Override
+ public String toString() {
+ StringBuffer buf = new StringBuffer();
+ buf.append(hostName).append(":").append(port);
+ return buf.toString();
+ }
+}
Added: airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/InputStreamToFileWriter.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/InputStreamToFileWriter.java?rev=1439743&view=auto
==============================================================================
--- airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/InputStreamToFileWriter.java (added)
+++ airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/InputStreamToFileWriter.java Tue Jan 29 03:57:41 2013
@@ -0,0 +1,68 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.airavata.gfac.utils;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.*;
+
+public class InputStreamToFileWriter extends Thread{
+ protected final Logger log = LoggerFactory.getLogger(this.getClass());
+
+ private BufferedReader in;
+ private BufferedWriter out;
+
+ public InputStreamToFileWriter(InputStream in, String out) throws IOException {
+ this.in = new BufferedReader(new InputStreamReader(in));
+ this.out = new BufferedWriter(new FileWriter(out));
+ }
+
+ public void run() {
+ try {
+ String line = null;
+ while ((line = in.readLine()) != null) {
+ if (log.isDebugEnabled()) {
+ log.debug(line);
+ }
+ out.write(line);
+ out.newLine();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if (in != null) {
+ try {
+ in.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ if (out != null) {
+ try {
+ out.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+}
Added: airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/InputUtils.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/InputUtils.java?rev=1439743&view=auto
==============================================================================
--- airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/InputUtils.java (added)
+++ airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/InputUtils.java Tue Jan 29 03:57:41 2013
@@ -0,0 +1,39 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.airavata.gfac.utils;
+
+import java.util.List;
+
+public class InputUtils {
+ private static final String SPACE = " ";
+
+ private InputUtils() {
+ }
+
+ public static String buildCommand(List<String> cmdList) {
+ StringBuffer buff = new StringBuffer();
+ for (String string : cmdList) {
+ buff.append(string);
+ buff.append(SPACE);
+ }
+ return buff.toString();
+ }
+}
Added: airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/LocalProviderUtil.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/LocalProviderUtil.java?rev=1439743&view=auto
==============================================================================
--- airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/LocalProviderUtil.java (added)
+++ airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/LocalProviderUtil.java Tue Jan 29 03:57:41 2013
@@ -0,0 +1,54 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.airavata.gfac.utils;
+
+import org.apache.airavata.gfac.context.JobExecutionContext;
+import org.apache.airavata.gfac.provider.GFacProviderException;
+import org.apache.airavata.schemas.gfac.ApplicationDeploymentDescriptionType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+
+public class LocalProviderUtil {
+ private static final Logger log = LoggerFactory.getLogger(LocalProviderUtil.class);
+
+ private void makeFileSystemDir(String dir, JobExecutionContext jobExecutionContext) throws GFacProviderException {
+ File f = new File(dir);
+ if (f.isDirectory() && f.exists()) {
+ return;
+ } else if (!new File(dir).mkdir()) {
+ throw new GFacProviderException("Cannot make directory " + dir, jobExecutionContext);
+ }
+ }
+
+ public void makeDirectory(JobExecutionContext jobExecutionContext) throws GFacProviderException {
+ ApplicationDeploymentDescriptionType app = jobExecutionContext.
+ getApplicationContext().getApplicationDeploymentDescription().getType();
+ log.info("working diectroy = " + app.getStaticWorkingDirectory());
+ log.info("temp directory = " + app.getScratchWorkingDirectory());
+ makeFileSystemDir(app.getStaticWorkingDirectory(), jobExecutionContext);
+ makeFileSystemDir(app.getScratchWorkingDirectory(), jobExecutionContext);
+ makeFileSystemDir(app.getInputDataDirectory(), jobExecutionContext);
+ makeFileSystemDir(app.getOutputDataDirectory(), jobExecutionContext);
+ }
+
+}
Added: airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/OutputUtils.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/OutputUtils.java?rev=1439743&view=auto
==============================================================================
--- airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/OutputUtils.java (added)
+++ airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/utils/OutputUtils.java Tue Jan 29 03:57:41 2013
@@ -0,0 +1,86 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.airavata.gfac.utils;
+
+import org.apache.airavata.commons.gfac.type.ActualParameter;
+import org.apache.airavata.commons.gfac.type.MappingFactory;
+import org.apache.airavata.gfac.context.JobExecutionContext;
+import org.apache.airavata.gfac.context.MessageContext;
+import org.apache.airavata.schemas.gfac.OutputParameterType;
+import org.apache.airavata.schemas.gfac.StdErrParameterType;
+import org.apache.airavata.schemas.gfac.StdOutParameterType;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class OutputUtils {
+ private OutputUtils() {
+ }
+
+ public static Map<String, ActualParameter> fillOutputFromStdout(JobExecutionContext context, String stdout, String stderr) throws Exception {
+
+ Map<String, ActualParameter> result = new HashMap<String, ActualParameter>();
+ OutputParameterType[] outputParametersArray = context.getApplicationContext().
+ getServiceDescription().getType().getOutputParametersArray();
+ MessageContext outMessageContext = context.getOutMessageContext();
+ for (OutputParameterType outparamType : outputParametersArray) {
+ String parameterName = outparamType.getParameterName();
+ ActualParameter actual = (ActualParameter)outMessageContext.getParameter(outparamType.getParameterName());
+ // if parameter value is not already set, we let it go
+ if (actual == null) {
+ continue;
+ }
+ if ("StdOut".equals(actual.getType().getType().toString())) {
+ ((StdOutParameterType) actual.getType()).setValue(stdout);
+ result.put(parameterName, actual);
+ } else if ("StdErr".equals(actual.getType().getType().toString())) {
+ ((StdErrParameterType) actual.getType()).setValue(stderr);
+ result.put(parameterName, actual);
+ } else {
+ String parseStdout = parseStdout(stdout, parameterName);
+ if (parseStdout != null) {
+ MappingFactory.fromString(actual, parseStdout);
+ result.put(parameterName, actual);
+ }
+ }
+ }
+ return result;
+ }
+
+ private static String parseStdout(String stdout, String outParam) throws Exception {
+ String regex = Pattern.quote(outParam) + "\\s*=\\s*([^\\[\\s'\"][^\\s]*|\"[^\"]*\"|'[^']*'|\\[[^\\[]*\\])";
+ String match = null;
+ Pattern pattern = Pattern.compile(regex);
+ Matcher matcher = pattern.matcher(stdout);
+ while (matcher.find()) {
+ match = matcher.group(1);
+ }
+ if (match != null) {
+ match = match.trim();
+ return match;
+ } else {
+ throw new Exception("Data for the output parameter '" + outParam + "' was not found");
+ }
+ }
+}