You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sc...@apache.org on 2016/01/12 16:47:49 UTC

[06/24] airavata git commit: renaming the module

http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/db/dao/FileCollectionDao.java
----------------------------------------------------------------------
diff --git a/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/db/dao/FileCollectionDao.java b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/db/dao/FileCollectionDao.java
new file mode 100644
index 0000000..4914933
--- /dev/null
+++ b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/db/dao/FileCollectionDao.java
@@ -0,0 +1,93 @@
+/*
+ *
+ * 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.data.manager.core.db.dao;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.mongodb.*;
+import com.mongodb.util.JSON;
+import org.apache.airavata.data.manager.core.db.conversion.ModelConversionHelper;
+import org.apache.airavata.data.manager.core.db.utils.MongoUtils;
+import org.apache.airavata.data.manager.cpi.DataManagerConstants;
+import org.apache.airavata.model.data.replica.FileCollectionModel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.UUID;
+
+public class FileCollectionDao {
+    private final static Logger logger = LoggerFactory.getLogger(FileCollectionDao.class);
+
+    private static final String FILE_COLLECTION_COLLECTION_NAME = "collection-models";
+    private DBCollection collection;
+    private ModelConversionHelper modelConversionHelper;
+
+    private static final String COLLECTION_ID = "collection_id";
+
+    public FileCollectionDao() throws IOException {
+        collection = MongoUtils.getFileManagerRegistry().getCollection(FILE_COLLECTION_COLLECTION_NAME);
+        modelConversionHelper = new ModelConversionHelper();
+        collection.dropIndexes();
+        initIndexes();
+    }
+
+    /**
+     * If indexes are already defined this will simply ignore them
+     */
+    private void initIndexes() {
+        collection.createIndex(new BasicDBObject(COLLECTION_ID, 1), new BasicDBObject("unique", true));
+    }
+
+    public String createFileCollection(FileCollectionModel fileCollectionModel) throws JsonProcessingException {
+        fileCollectionModel.setCollectionId(DataManagerConstants.AIRAVATA_COLLECTION_ID_PREFIX + UUID.randomUUID().toString());
+        WriteResult result = collection.insert((DBObject) JSON.parse(
+                modelConversionHelper.serializeObject(fileCollectionModel)));
+        logger.debug("No of inserted results " + result.getN());
+        return fileCollectionModel.getCollectionId();
+    }
+
+    public void updateFileCollection(FileCollectionModel fileCollectionModel) throws JsonProcessingException {
+        DBObject query = BasicDBObjectBuilder.start().add(
+                COLLECTION_ID, fileCollectionModel.getCollectionId()).get();
+        WriteResult result = collection.update(query, (DBObject) JSON.parse(
+                modelConversionHelper.serializeObject(fileCollectionModel)));
+        logger.debug("No of updated results " + result.getN());
+    }
+
+    public void deleteFileCollection(String collectionId){
+        DBObject query = BasicDBObjectBuilder.start().add(
+                COLLECTION_ID,collectionId).get();
+        WriteResult result = collection.remove(query);
+        logger.debug("No of removed file model requests " + result.getN());
+    }
+
+    public FileCollectionModel getFileCollection(String collectionId) throws IOException {
+
+        DBObject criteria = new BasicDBObject(COLLECTION_ID, collectionId);
+        DBObject doc = collection.findOne(criteria);
+        if (doc != null) {
+            String json = doc.toString();
+            return (FileCollectionModel) modelConversionHelper.deserializeObject(
+                    FileCollectionModel.class, json);
+        }
+        return null;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/db/dao/FileDao.java
----------------------------------------------------------------------
diff --git a/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/db/dao/FileDao.java b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/db/dao/FileDao.java
new file mode 100644
index 0000000..bb7ded7
--- /dev/null
+++ b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/db/dao/FileDao.java
@@ -0,0 +1,93 @@
+/*
+ *
+ * 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.data.manager.core.db.dao;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.mongodb.*;
+import com.mongodb.util.JSON;
+import org.apache.airavata.data.manager.core.db.conversion.ModelConversionHelper;
+import org.apache.airavata.data.manager.core.db.utils.MongoUtils;
+import org.apache.airavata.data.manager.cpi.DataManagerConstants;
+import org.apache.airavata.model.data.replica.FileModel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.UUID;
+
+public class FileDao {
+    private final static Logger logger = LoggerFactory.getLogger(FileDao.class);
+
+    private static final String FILE_MODELS_COLLECTION_NAME = "file-models";
+    private DBCollection collection;
+    private ModelConversionHelper modelConversionHelper;
+
+    private static final String FILE_ID = "file_id";
+
+    public FileDao() throws IOException {
+        collection = MongoUtils.getFileManagerRegistry().getCollection(FILE_MODELS_COLLECTION_NAME);
+        modelConversionHelper = new ModelConversionHelper();
+        collection.dropIndexes();
+        initIndexes();
+    }
+
+    /**
+     * If indexes are already defined this will simply ignore them
+     */
+    private void initIndexes() {
+        collection.createIndex(new BasicDBObject(FILE_ID, 1), new BasicDBObject("unique", true));
+    }
+
+    public String createFile(FileModel fileModel) throws JsonProcessingException {
+        fileModel.setFileId(DataManagerConstants.AIRAVATA_FILE_ID_PREFIX + UUID.randomUUID().toString());
+        WriteResult result = collection.insert((DBObject) JSON.parse(
+                modelConversionHelper.serializeObject(fileModel)));
+        logger.debug("No of inserted results " + result.getN());
+        return fileModel.getFileId();
+    }
+
+    public void updateFile(FileModel fileModel) throws JsonProcessingException {
+        DBObject query = BasicDBObjectBuilder.start().add(
+                FILE_ID, fileModel.getFileId()).get();
+        WriteResult result = collection.update(query, (DBObject) JSON.parse(
+                modelConversionHelper.serializeObject(fileModel)));
+        logger.debug("No of updated results " + result.getN());
+    }
+
+    public void deleteFile(String fileId){
+        DBObject query = BasicDBObjectBuilder.start().add(
+                FILE_ID,fileId).get();
+        WriteResult result = collection.remove(query);
+        logger.debug("No of removed file model requests " + result.getN());
+    }
+
+    public FileModel getFile(String fileId) throws IOException {
+
+        DBObject criteria = new BasicDBObject(FILE_ID, fileId);
+        DBObject doc = collection.findOne(criteria);
+        if (doc != null) {
+            String json = doc.toString();
+            return (FileModel) modelConversionHelper.deserializeObject(
+                    FileModel.class, json);
+        }
+        return null;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/db/dao/FileTransferRequestDao.java
----------------------------------------------------------------------
diff --git a/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/db/dao/FileTransferRequestDao.java b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/db/dao/FileTransferRequestDao.java
new file mode 100644
index 0000000..92cae27
--- /dev/null
+++ b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/db/dao/FileTransferRequestDao.java
@@ -0,0 +1,92 @@
+/*
+ *
+ * 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.data.manager.core.db.dao;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.mongodb.*;
+import com.mongodb.util.JSON;
+import org.apache.airavata.data.manager.core.db.conversion.ModelConversionHelper;
+import org.apache.airavata.data.manager.core.db.utils.MongoUtils;
+import org.apache.airavata.model.data.transfer.FileTransferRequestModel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.UUID;
+
+public class FileTransferRequestDao {
+    private final static Logger logger = LoggerFactory.getLogger(FileTransferRequestDao.class);
+
+    private static final String FILE_TRANSFER_REQUESTS_COLLECTION_NAME = "file-transfer-requests";
+    private DBCollection collection;
+    private ModelConversionHelper modelConversionHelper;
+
+    private static final String TRANSFER_ID = "transfer_id";
+
+    public FileTransferRequestDao() throws IOException {
+        collection = MongoUtils.getFileManagerRegistry().getCollection(FILE_TRANSFER_REQUESTS_COLLECTION_NAME);
+        modelConversionHelper = new ModelConversionHelper();
+        collection.dropIndexes();
+        initIndexes();
+    }
+
+    /**
+     * If indexes are already defined this will simply ignore them
+     */
+    private void initIndexes() {
+        collection.createIndex(new BasicDBObject(TRANSFER_ID, 1), new BasicDBObject("unique", true));
+    }
+
+    public String createFileTransferRequest(FileTransferRequestModel fileTransferRequestModel) throws JsonProcessingException {
+        fileTransferRequestModel.setTransferId(UUID.randomUUID().toString());
+        WriteResult result = collection.insert((DBObject) JSON.parse(
+                modelConversionHelper.serializeObject(fileTransferRequestModel)));
+        logger.debug("No of inserted results " + result.getN());
+        return fileTransferRequestModel.getTransferId();
+    }
+
+    public void updateFileTransferRequest(FileTransferRequestModel fileTransferRequestModel) throws JsonProcessingException {
+        DBObject query = BasicDBObjectBuilder.start().add(
+                TRANSFER_ID, fileTransferRequestModel.getTransferId()).get();
+        WriteResult result = collection.update(query, (DBObject) JSON.parse(
+                modelConversionHelper.serializeObject(fileTransferRequestModel)));
+        logger.debug("No of updated results " + result.getN());
+    }
+
+    public void deleteFileTransferRequest(String trasnferId){
+        DBObject query = BasicDBObjectBuilder.start().add(
+                TRANSFER_ID, trasnferId).get();
+        WriteResult result = collection.remove(query);
+        logger.debug("No of removed file transfer requests " + result.getN());
+    }
+
+    public FileTransferRequestModel getFileTransferRequest(String transferId) throws IOException {
+
+        DBObject criteria = new BasicDBObject(TRANSFER_ID, transferId);
+        DBObject doc = collection.findOne(criteria);
+        if (doc != null) {
+            String json = doc.toString();
+            return (FileTransferRequestModel) modelConversionHelper.deserializeObject(
+                    FileTransferRequestModel.class, json);
+        }
+        return null;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/db/dao/MetadataDao.java
----------------------------------------------------------------------
diff --git a/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/db/dao/MetadataDao.java b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/db/dao/MetadataDao.java
new file mode 100644
index 0000000..c9c4951
--- /dev/null
+++ b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/db/dao/MetadataDao.java
@@ -0,0 +1,93 @@
+/*
+ *
+ * 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.data.manager.core.db.dao;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.mongodb.*;
+import com.mongodb.util.JSON;
+import org.apache.airavata.data.manager.core.db.conversion.ModelConversionHelper;
+import org.apache.airavata.data.manager.core.db.utils.MongoUtils;
+import org.apache.airavata.data.manager.cpi.DataManagerConstants;
+import org.apache.airavata.model.data.metadata.MetadataModel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.UUID;
+
+public class MetadataDao {
+    private final static Logger logger = LoggerFactory.getLogger(MetadataDao.class);
+
+    private static final String METADATA_COLLECTION_NAME = "metadata-models";
+    private DBCollection collection;
+    private ModelConversionHelper modelConversionHelper;
+
+    private static final String METADATA_ID = "metadata_id";
+
+    public MetadataDao() throws IOException {
+        collection = MongoUtils.getFileManagerRegistry().getCollection(METADATA_COLLECTION_NAME);
+        modelConversionHelper = new ModelConversionHelper();
+        collection.dropIndexes();
+        initIndexes();
+    }
+
+    /**
+     * If indexes are already defined this will simply ignore them
+     */
+    private void initIndexes() {
+        collection.createIndex(new BasicDBObject(METADATA_ID, 1), new BasicDBObject("unique", true));
+    }
+
+    public String createMetadata(MetadataModel metadataModel) throws JsonProcessingException {
+        metadataModel.setMetadataId(DataManagerConstants.AIRAVATA_METADATA_ID_PREFIX + UUID.randomUUID().toString());
+        WriteResult result = collection.insert((DBObject) JSON.parse(
+                modelConversionHelper.serializeObject(metadataModel)));
+        logger.debug("No of inserted results " + result.getN());
+        return metadataModel.getMetadataId();
+    }
+
+    public void updateMetadata(MetadataModel metadataModel) throws JsonProcessingException {
+        DBObject query = BasicDBObjectBuilder.start().add(
+                METADATA_ID, metadataModel.getMetadataId()).get();
+        WriteResult result = collection.update(query, (DBObject) JSON.parse(
+                modelConversionHelper.serializeObject(metadataModel)));
+        logger.debug("No of updated results " + result.getN());
+    }
+
+    public void deleteMetadata(String metadataId){
+        DBObject query = BasicDBObjectBuilder.start().add(
+                METADATA_ID,metadataId).get();
+        WriteResult result = collection.remove(query);
+        logger.debug("No of removed metadata model requests " + result.getN());
+    }
+
+    public MetadataModel getMetadata(String metadataId) throws IOException {
+
+        DBObject criteria = new BasicDBObject(METADATA_ID, metadataId);
+        DBObject doc = collection.findOne(criteria);
+        if (doc != null) {
+            String json = doc.toString();
+            return (MetadataModel) modelConversionHelper.deserializeObject(
+                    MetadataModel.class, json);
+        }
+        return null;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/db/utils/MongoUtils.java
----------------------------------------------------------------------
diff --git a/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/db/utils/MongoUtils.java b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/db/utils/MongoUtils.java
new file mode 100644
index 0000000..28eb6f1
--- /dev/null
+++ b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/db/utils/MongoUtils.java
@@ -0,0 +1,69 @@
+/*
+ *
+ * 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.data.manager.core.db.utils;
+
+import org.apache.airavata.data.manager.core.utils.FileManagerConstants;
+import org.apache.airavata.data.manager.core.utils.FileManagerProperties;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.mongodb.DB;
+import com.mongodb.MongoClient;
+
+import java.io.IOException;
+
+public class MongoUtils {
+    private final static Logger logger = LoggerFactory.getLogger(MongoUtils.class);
+
+    private static int port;
+    private static String host;
+    private static MongoClient mongoClient = null;
+    private static DB fileManagerRegistry;
+    private static String FILE_MANAGER_REGISTRY_NAME;
+
+    public static MongoClient getMongoClient() throws IOException {
+        if (mongoClient == null) {
+            FileManagerProperties fileManagerProperties = FileManagerProperties.getInstance();
+            host = fileManagerProperties.getProperty(FileManagerConstants.MONGODB_HOST, "localhost");
+            port = Integer.parseInt(fileManagerProperties.getProperty(FileManagerConstants.MONGODB_PORT, "27017"));
+            FILE_MANAGER_REGISTRY_NAME = fileManagerProperties.getProperty(FileManagerConstants.MONGODB_DB_NAME,
+                    "file-manager-db");
+            mongoClient = new MongoClient(host, port);
+            logger.debug("New Mongo Client created with [" + host + "] and ["
+                    + port + "]");
+
+        }
+        return mongoClient;
+    }
+
+    public static DB getFileManagerRegistry() throws IOException {
+        if (fileManagerRegistry == null) {
+            fileManagerRegistry = getMongoClient().getDB(FILE_MANAGER_REGISTRY_NAME);
+        }
+        return fileManagerRegistry;
+    }
+
+    public static void dropFileManagerRegistry() throws IOException {
+        getMongoClient().dropDatabase(FILE_MANAGER_REGISTRY_NAME);
+        logger.debug("Dropped File Manager Registry");
+
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/RemoteStorageClient.java
----------------------------------------------------------------------
diff --git a/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/RemoteStorageClient.java b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/RemoteStorageClient.java
new file mode 100644
index 0000000..d8d5139
--- /dev/null
+++ b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/RemoteStorageClient.java
@@ -0,0 +1,107 @@
+/*
+ *
+ * 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.data.manager.core.remote.client;
+
+import org.apache.airavata.model.data.transfer.LSEntryModel;
+
+import java.io.File;
+import java.util.List;
+
+public interface RemoteStorageClient {
+
+    /**
+     * Reads a remote file, write it to local temporary directory and returns a file pointer to it
+     * @param filePath
+     * @return
+     * @throws Exception
+     */
+    File readFile(String filePath) throws Exception;
+
+    /**
+     * Writes the source file in the local storage to specified path in the remote storage
+     * @param sourceFile
+     * @return
+     * @throws Exception
+     */
+    void writeFile(File sourceFile, String filePath) throws Exception;
+
+    /**
+     * Returns a directory listing of the specified directory
+     * @param directoryPath
+     * @return
+     * @throws Exception
+     */
+    List<LSEntryModel> getDirectoryListing(String directoryPath) throws Exception;
+
+    /**
+     * Move the specified file from source to destination within the same storage resource
+     * @param currentPath
+     * @param newPath
+     * @throws Exception
+     */
+    void moveFile(String currentPath, String newPath) throws Exception;
+
+    /**
+     *
+     * @param sourcePath
+     * @param destinationPath
+     * @throws Exception
+     */
+    void copyFile(String sourcePath, String destinationPath) throws Exception;
+
+    /**
+     * Rename file with the given name
+     * @param filePath
+     * @param newFileName
+     * @throws Exception
+     */
+    void renameFile(String filePath, String newFileName) throws Exception;
+
+    /**
+     * Delete the specified file
+     * @param filePath
+     * @throws Exception
+     */
+    void deleteFile(String filePath) throws Exception;
+
+    /**
+     * Create new directory in the specified file
+     * @param newDirPath
+     * @throws Exception
+     */
+    void mkdir(String newDirPath) throws Exception;
+
+    /**
+     * Checks whether specified file exists in the remote storage system
+     * @param filePath
+     * @return
+     * @throws Exception
+     */
+    boolean checkFileExists(String filePath) throws Exception;
+
+    /**
+     * Checks whether the given path is a directory
+     * @param filePath
+     * @return
+     * @throws Exception
+     */
+    boolean checkIsDirectory(String filePath) throws Exception;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/ExecutionContext.java
----------------------------------------------------------------------
diff --git a/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/ExecutionContext.java b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/ExecutionContext.java
new file mode 100644
index 0000000..903dec6
--- /dev/null
+++ b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/ExecutionContext.java
@@ -0,0 +1,184 @@
+/*
+ *
+ * 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.data.manager.core.remote.client.gridftp;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Properties;
+
+@SuppressWarnings("UnusedDeclaration")
+public class ExecutionContext {
+
+    private String testingHost;
+
+    private String loneStarGridFTP;
+    private String rangerGridFTP;
+    private String trestlesGridFTP;
+
+    private String gridFTPServerSource;
+    private String sourceDataLocation;
+    private String gridFTPServerDestination;
+    private String destinationDataLocation;
+    private String uploadingFilePath;
+
+    public static final String PROPERTY_FILE = "airavata-myproxy-client.properties";
+
+    public ExecutionContext() throws IOException {
+        loadConfigurations();
+    }
+
+    private void loadConfigurations() throws IOException {
+        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+        InputStream propertyStream = classLoader.getResourceAsStream(PROPERTY_FILE);
+
+        Properties properties = new Properties();
+        if (propertyStream != null) {
+            properties.load(propertyStream);
+
+            String testingHost = properties.getProperty(GridFTPConstants.TESTINGHOST);
+
+            String loneStarGridFtp = properties.getProperty(GridFTPConstants.LONESTARGRIDFTPEPR);
+            String rangerGridFtp = properties.getProperty(GridFTPConstants.RANGERGRIDFTPEPR);
+            String trestlesGridFtp = properties.getProperty(GridFTPConstants.TRESTLESGRIDFTPEPR);
+
+            String gridFTPServerSource = properties.getProperty(GridFTPConstants.GRIDFTPSERVERSOURCE);
+            String gridFTPSourcePath = properties.getProperty(GridFTPConstants.GRIDFTPSOURCEPATH);
+            String gridFTPServerDestination = properties.getProperty(GridFTPConstants.GRIDFTPSERVERDEST);
+            String gridFTPDestinationPath = properties.getProperty(GridFTPConstants.GRIDFTPDESTPATH);
+            String gridFTPUploadingPath = properties.getProperty(GridFTPConstants.UPLOADING_FILE_PATH);
+
+            if (testingHost != null) {
+                this.testingHost = testingHost;
+            }
+
+            if (loneStarGridFtp != null) {
+                this.loneStarGridFTP = loneStarGridFtp;
+            }
+            if (rangerGridFtp != null) {
+                this.rangerGridFTP= rangerGridFtp;
+            }
+            if (trestlesGridFtp != null) {
+                this.trestlesGridFTP = trestlesGridFtp;
+            }
+
+            if (gridFTPServerSource != null && !gridFTPServerSource.isEmpty()) {
+                this.gridFTPServerSource = gridFTPServerSource;
+            }
+            if (gridFTPSourcePath != null && !gridFTPSourcePath.isEmpty()) {
+                this.sourceDataLocation = gridFTPSourcePath;
+            }
+            if (gridFTPServerDestination != null && !gridFTPServerDestination.isEmpty()) {
+                this.gridFTPServerDestination = gridFTPServerDestination;
+            }
+            if (gridFTPDestinationPath != null && !gridFTPDestinationPath.isEmpty()) {
+                this.destinationDataLocation = gridFTPDestinationPath;
+            }
+            if (gridFTPUploadingPath != null && !gridFTPUploadingPath.isEmpty()) {
+                this.uploadingFilePath = gridFTPUploadingPath;
+            }
+
+        }
+    }
+
+    public String getTestingHost() {
+        return testingHost;
+    }
+
+    public void setTestingHost(String testingHost) {
+        this.testingHost = testingHost;
+    }
+
+    public String getLoneStarGridFTP() {
+        return loneStarGridFTP;
+    }
+
+    public void setLoneStarGridFTP(String loneStarGridFTP) {
+        this.loneStarGridFTP = loneStarGridFTP;
+    }
+
+    public String getRangerGridFTP() {
+        return rangerGridFTP;
+    }
+
+    public void setRangerGridFTP(String rangerGridFTP) {
+        this.rangerGridFTP = rangerGridFTP;
+    }
+
+    public String getTrestlesGridFTP() {
+        return trestlesGridFTP;
+    }
+
+    public void setTrestlesGridFTP(String trestlesGridFTP) {
+        this.trestlesGridFTP = trestlesGridFTP;
+    }
+
+    public String getGridFTPServerSource() {
+        return gridFTPServerSource;
+    }
+
+    public void setGridFTPServerSource(String gridFTPServerSource) {
+        this.gridFTPServerSource = gridFTPServerSource;
+    }
+
+    public URI getSourceDataFileUri() throws URISyntaxException {
+        String file = gridFTPServerSource + getSourceDataLocation();
+        return new URI(file);
+    }
+
+    public URI getUploadingFilePathUri() throws URISyntaxException {
+        String file = gridFTPServerSource + getUploadingFilePath();
+        return new URI(file);
+    }
+
+    public String getUploadingFilePath() {
+        return uploadingFilePath;
+    }
+
+    public void setUploadingFilePath(String uploadingFilePath) {
+        this.uploadingFilePath = uploadingFilePath;
+    }
+
+    public String getSourceDataLocation() {
+        return sourceDataLocation;
+    }
+
+    public void setSourceDataLocation(String sourceDataLocation) {
+        this.sourceDataLocation = sourceDataLocation;
+    }
+
+    public String getGridFTPServerDestination() {
+        return gridFTPServerDestination;
+    }
+
+    public void setGridFTPServerDestination(String gridFTPServerDestination) {
+        this.gridFTPServerDestination = gridFTPServerDestination;
+    }
+
+    public String getDestinationDataLocation() {
+        return destinationDataLocation;
+    }
+
+    public void setDestinationDataLocation(String destinationDataLocation) {
+        this.destinationDataLocation = destinationDataLocation;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/GridFTP.java
----------------------------------------------------------------------
diff --git a/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/GridFTP.java b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/GridFTP.java
new file mode 100644
index 0000000..37c4d21
--- /dev/null
+++ b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/GridFTP.java
@@ -0,0 +1,430 @@
+/*
+ *
+ * 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.data.manager.core.remote.client.gridftp;
+
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import org.apache.log4j.Logger;
+import org.globus.ftp.DataChannelAuthentication;
+import org.globus.ftp.DataSourceStream;
+import org.globus.ftp.GridFTPClient;
+import org.globus.ftp.HostPort;
+import org.globus.ftp.Marker;
+import org.globus.ftp.MarkerListener;
+import org.globus.ftp.Session;
+import org.globus.ftp.exception.ClientException;
+import org.globus.ftp.exception.ServerException;
+import org.globus.gsi.gssapi.auth.HostAuthorization;
+import org.ietf.jgss.GSSCredential;
+
+/**
+ * GridFTP tools
+ */
+public class GridFTP {
+
+    public static final String GSIFTP_SCHEME = "gsiftp";
+    private static final Logger log = Logger.getLogger(GridFTP.class);
+
+    /**
+     * Make directory at remote location
+     *
+     * @param destURI Directory name and server location to create the directory.
+     * @param gssCred Credentials to authenticate with remote server.
+     * @throws ServerException If an error occurred while authenticating.
+     * @throws IOException If an error occurred while creating the directory.
+     */
+    public void makeDir(URI destURI, GSSCredential gssCred) throws Exception {
+        GridFTPClient destClient = null;
+        GridFTPContactInfo destHost = new GridFTPContactInfo(destURI.getHost(), destURI.getPort());
+        try {
+
+            String destPath = destURI.getPath();
+            log.info(("Creating Directory = " + destHost + "=" + destPath));
+
+            destClient = new GridFTPClient(destHost.hostName, destHost.port);
+
+            int tryCount = 0;
+            while (true) {
+                try {
+                    destClient.setAuthorization(new HostAuthorization("host"));
+                    destClient.authenticate(gssCred);
+                    destClient.setDataChannelAuthentication(DataChannelAuthentication.SELF);
+
+                    if (!destClient.exists(destPath)) {
+                        destClient.makeDir(destPath);
+                    }
+                    break;
+                } catch (ServerException e) {
+                    tryCount++;
+                    if (tryCount >= 3) {
+                        throw new Exception(e.getMessage(), e);
+                    }
+                    Thread.sleep(10000);
+                } catch (IOException e) {
+                    tryCount++;
+                    if (tryCount >= 3) {
+                        throw new Exception(e.getMessage(), e);
+                    }
+                    Thread.sleep(10000);
+                }
+            }
+        } catch (ServerException e) {
+            throw new Exception("Cannot Create GridFTP Client to:" + destHost.toString(), e);
+        } catch (IOException e) {
+            throw new Exception("Cannot Create GridFTP Client to:" + destHost.toString(), e);
+        } catch (InterruptedException e) {
+            throw new Exception("Internal Error cannot sleep", e);
+        } finally {
+            if (destClient != null) {
+                try {
+                    destClient.close();
+                } catch (Exception e) {
+                    log.info("Cannot close GridFTP client connection");
+                }
+            }
+        }
+    }
+
+    /**
+     * Upload file from stream
+     *
+     * @param destURI Name of the file to be uploaded.
+     * @param gsCredential Credentials to authenticate.
+     */
+    public void updateFile(URI destURI, GSSCredential gsCredential, InputStream io) throws Exception {
+        GridFTPClient ftpClient = null;
+        GridFTPContactInfo contactInfo = new GridFTPContactInfo(destURI.getHost(), destURI.getPort());
+
+        try {
+
+            String remoteFile = destURI.getPath();
+            log.info("The remote file is " + remoteFile);
+
+            log.info("Setup GridFTP Client");
+
+            ftpClient = new GridFTPClient(contactInfo.hostName, contactInfo.port);
+            ftpClient.setAuthorization(new HostAuthorization("host"));
+            ftpClient.authenticate(gsCredential);
+            ftpClient.setDataChannelAuthentication(DataChannelAuthentication.SELF);
+
+            log.info("Uploading file");
+
+            ftpClient.put(remoteFile, new DataSourceStream(io), new MarkerListener() {
+                public void markerArrived(Marker marker) {
+                }
+            });
+
+            log.info("Upload file to:" + remoteFile + " is done");
+
+        } catch (ServerException e) {
+            throw new Exception("Cannot upload file to GridFTP:" + contactInfo.toString(), e);
+        } catch (IOException e) {
+            throw new Exception("Cannot upload file to GridFTP:" + contactInfo.toString(), e);
+        } catch (ClientException e) {
+            throw new Exception("Cannot upload file to GridFTP:" + contactInfo.toString(), e);
+        } finally {
+            if (ftpClient != null) {
+                try {
+                    ftpClient.close();
+                } catch (Exception e) {
+                    log.info("Cannot close GridFTP client connection");
+                }
+            }
+        }
+    }
+
+    /**
+     * Upload file to remote location
+     *
+     * @param destURI Name of the file to be uploaded.
+     * @param gsCredential Credentials used to upload the file.
+     * @param localFile Local file to be uploaded.
+     */
+    public void updateFile(URI destURI, GSSCredential gsCredential, File localFile) throws Exception {
+        GridFTPClient ftpClient = null;
+        GridFTPContactInfo contactInfo = new GridFTPContactInfo(destURI.getHost(), destURI.getPort());
+        try {
+
+            String remoteFile = destURI.getPath();
+
+            log.info("The local temp file is " + localFile);
+            log.info("the remote file is " + remoteFile);
+
+            log.info("Setup GridFTP Client");
+
+            ftpClient = new GridFTPClient(contactInfo.hostName, contactInfo.port);
+            ftpClient.setAuthorization(new HostAuthorization("host"));
+            ftpClient.authenticate(gsCredential);
+            ftpClient.setDataChannelAuthentication(DataChannelAuthentication.SELF);
+
+            log.info("Uploading file");
+
+            ftpClient.put(localFile, remoteFile, false);
+
+
+            log.info("Upload file to:" + remoteFile + " is done");
+
+        } catch (ServerException e) {
+            throw new Exception("Cannot upload file to GridFTP:" + contactInfo.toString(), e);
+        } catch (IOException e) {
+            throw new Exception("Cannot upload file to GridFTP:" + contactInfo.toString(), e);
+        } catch (ClientException e) {
+            throw new Exception("Cannot upload file to GridFTP:" + contactInfo.toString(), e);
+        } finally {
+            if (ftpClient != null) {
+                try {
+                    ftpClient.close();
+                } catch (Exception e) {
+                    log.info("Cannot close GridFTP client connection");
+                }
+            }
+        }
+    }
+
+    /**
+     * Download File from remote location
+     *
+     * @param destURI  File to be downloaded.
+     * @param gsCredential To authenticate user to remote machine.
+     * @param localFile The downloaded file name.
+     */
+    public void downloadFile(URI destURI, GSSCredential gsCredential, File localFile) throws Exception {
+        GridFTPClient ftpClient = null;
+        GridFTPContactInfo contactInfo = new GridFTPContactInfo(destURI.getHost(), destURI.getPort());
+        try {
+            String remoteFile = destURI.getPath();
+
+            log.info("The local temp file is " + localFile);
+            log.info("the remote file is " + remoteFile);
+
+            log.info("Setup GridFTP Client");
+
+            ftpClient = new GridFTPClient(contactInfo.hostName, contactInfo.port);
+            ftpClient.setAuthorization(new HostAuthorization("host"));
+            ftpClient.authenticate(gsCredential);
+            ftpClient.setDataChannelAuthentication(DataChannelAuthentication.SELF);
+
+            log.info("Downloading file");
+
+            ftpClient.get(remoteFile, localFile);
+
+            log.info("Download file to:" + remoteFile + " is done");
+
+        } catch (ServerException e) {
+            throw new Exception("Cannot download file from GridFTP:" + contactInfo.toString(), e);
+        } catch (IOException e) {
+            throw new Exception("Cannot download file from GridFTP:" + contactInfo.toString(), e);
+        } catch (ClientException e) {
+            throw new Exception("Cannot download file from GridFTP:" + contactInfo.toString(), e);
+        } finally {
+            if (ftpClient != null) {
+                try {
+                    ftpClient.close();
+                } catch (Exception e) {
+                    log.info("Cannot close GridFTP client connection");
+                }
+            }
+        }
+    }
+
+    /**
+     * Checks whether files exists.
+     *
+     * @param destURI Name of the file to check existence.
+     * @param gsCredential Credentials to authenticate user.
+     */
+    public boolean exists(URI destURI, GSSCredential gsCredential) throws Exception {
+        GridFTPClient ftpClient = null;
+        GridFTPContactInfo contactInfo = new GridFTPContactInfo(destURI.getHost(), destURI.getPort());
+        try {
+            String remoteFile = destURI.getPath();
+
+            log.info("the remote file is " + remoteFile);
+
+            log.info("Setup GridFTP Client");
+
+            ftpClient = new GridFTPClient(contactInfo.hostName, contactInfo.port);
+            ftpClient.setAuthorization(new HostAuthorization("host"));
+            ftpClient.authenticate(gsCredential);
+            ftpClient.setDataChannelAuthentication(DataChannelAuthentication.SELF);
+
+            log.info("Checking whether file exists");
+
+            return ftpClient.exists(destURI.getPath());
+
+        } catch (ServerException e) {
+            throw new Exception("Cannot download file from GridFTP:" + contactInfo.toString(), e);
+        } catch (IOException e) {
+            throw new Exception("Cannot download file from GridFTP:" + contactInfo.toString(), e);
+        } finally {
+            if (ftpClient != null) {
+                try {
+                    ftpClient.close();
+                } catch (Exception e) {
+                    log.info("Cannot close GridFTP client connection");
+                }
+            }
+        }
+    }
+
+    /**
+     * Stream remote file
+     *
+     * @param destURI Remote file to be read.
+     * @param gsCredential Credentials to authenticate user.
+     * @param localFile Downloaded local file name.
+     * @return  The content of the downloaded file.
+     */
+    public String readRemoteFile(URI destURI, GSSCredential gsCredential, File localFile) throws Exception {
+        BufferedReader instream = null;
+        File localTempfile = null;
+        try {
+
+            if (localFile == null) {
+                localTempfile = File.createTempFile("stderr", "err");
+            } else {
+                localTempfile = localFile;
+            }
+
+            log.info("Loca temporary file:" + localTempfile);
+
+            downloadFile(destURI, gsCredential, localTempfile);
+
+            instream = new BufferedReader(new FileReader(localTempfile));
+            StringBuffer buff = new StringBuffer();
+            String temp = null;
+            while ((temp = instream.readLine()) != null) {
+                buff.append(temp);
+                buff.append(System.getProperty("line.separator"));
+            }
+
+            log.info("finish read file:" + localTempfile);
+
+            return buff.toString();
+        } catch (FileNotFoundException e) {
+            throw new Exception("Cannot read localfile file:" + localTempfile, e);
+        } catch (IOException e) {
+            throw new Exception("Cannot read localfile file:" + localTempfile, e);
+        } finally {
+            if (instream != null) {
+                try {
+                    instream.close();
+                } catch (Exception e) {
+                    log.info("Cannot close GridFTP client connection");
+                }
+            }
+        }
+    }
+
+    /**
+     * Transfer data from one GridFTp Endpoint to another GridFTP Endpoint
+     *
+     * @param srchost Source file and host.
+     * @param desthost Destination file and host.
+     * @param gssCred Credentials to be authenticate user.
+     * @param srcActive Tells source to be active. i.e. asking src to connect destination.
+     * @throws ServerException If an error occurred while transferring data.
+     * @throws ClientException If an error occurred while transferring data.
+     * @throws IOException If an error occurred while transferring data.
+     */
+    public void transfer(URI srchost, URI desthost, GSSCredential gssCred, boolean srcActive) throws Exception {
+        GridFTPClient destClient = null;
+        GridFTPClient srcClient = null;
+
+        try {
+            destClient = new GridFTPClient(desthost.getHost(), desthost.getPort());
+            destClient.setAuthorization(new HostAuthorization("host"));
+            destClient.authenticate(gssCred);
+            destClient.setType(Session.TYPE_IMAGE);
+
+            srcClient = new GridFTPClient(srchost.getHost(), srchost.getPort());
+            srcClient.setAuthorization(new HostAuthorization("host"));
+            srcClient.authenticate(gssCred);
+            srcClient.setType(Session.TYPE_IMAGE);
+
+            if (srcActive) {
+                log.info("Set src active");
+                HostPort hp = destClient.setPassive();
+                srcClient.setActive(hp);
+            } else {
+                log.info("Set dst active");
+                HostPort hp = srcClient.setPassive();
+                destClient.setActive(hp);
+            }
+
+            log.info("Start transfer file from GridFTP:" + srchost.toString() + " to " + desthost.toString());
+
+            /**
+             * Transfer a file. The transfer() function blocks until the transfer is complete.
+             */
+            srcClient.transfer(srchost.getPath(), destClient, desthost.getPath(), false, null);
+            if (srcClient.getSize(srchost.getPath()) == destClient.getSize(desthost.getPath())) {
+                log.info("CHECK SUM OK");
+            } else {
+                log.info("****CHECK SUM FAILED****");
+            }
+
+        } catch (ServerException e) {
+            throw new Exception("Cannot transfer file from GridFTP:" + srchost.toString() + " to "
+                    + desthost.toString(), e);
+        } catch (IOException e) {
+            throw new Exception("Cannot transfer file from GridFTP:" + srchost.toString() + " to "
+                    + desthost.toString(), e);
+        } catch (ClientException e) {
+            throw new Exception("Cannot transfer file from GridFTP:" + srchost.toString() + " to "
+                    + desthost.toString(), e);
+        } finally {
+            if (destClient != null) {
+                try {
+                    destClient.close();
+                } catch (Exception e) {
+                    log.info("Cannot close GridFTP client connection at Desitnation:" + desthost.toString());
+                }
+            }
+            if (srcClient != null) {
+                try {
+                    srcClient.close();
+                } catch (Exception e) {
+                    log.info("Cannot close GridFTP client connection at Source:" + srchost.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());
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/GridFTPConstants.java
----------------------------------------------------------------------
diff --git a/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/GridFTPConstants.java b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/GridFTPConstants.java
new file mode 100644
index 0000000..e41a266
--- /dev/null
+++ b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/GridFTPConstants.java
@@ -0,0 +1,45 @@
+/*
+ *
+ * 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.data.manager.core.remote.client.gridftp;
+
+public class GridFTPConstants {
+
+    public static final String MYPROXY_SERVER = "myproxyServer";
+    public static final String MYPROXY_PORT = "myproxyPort";
+    public static final String MYPROXY_LIFETIME = "myproxy_lifetime";
+    public static final String MYPROXY_USERNAME = "myproxyUserName";
+    public static final String MYPROXY_PASSWD = "myproxyPasswd";
+    public static final String TRUSTED_CERTS_FILE = "trustedCertsFile";
+    public static final String HOSTCERTS_KEY_FILE = "hostcertsKeyFile";
+
+    public static final String TESTINGHOST = "testing.host";
+
+    public static final String LONESTARGRIDFTPEPR = "lonestar.gridftp.endpoint";
+    public static final String RANGERGRIDFTPEPR = "ranger.gridftp.endpoint";
+    public static final String TRESTLESGRIDFTPEPR = "trestles.gridftp.endpoint";
+
+    public static final String GRIDFTPSERVERSOURCE = "gridftpserverSource";
+    public static final String GRIDFTPSOURCEPATH = "gridftpSourcePath";
+    public static final String GRIDFTPSERVERDEST = "gridftpserverDest";
+    public static final String GRIDFTPDESTPATH = "gridftpDestPath";
+    public static final String UPLOADING_FILE_PATH = "gridftpUploadingFilePath";
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/GridFTPContactInfo.java
----------------------------------------------------------------------
diff --git a/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/GridFTPContactInfo.java b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/GridFTPContactInfo.java
new file mode 100644
index 0000000..d6b6e37
--- /dev/null
+++ b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/GridFTPContactInfo.java
@@ -0,0 +1,60 @@
+/*
+ *
+ * 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.data.manager.core.remote.client.gridftp;
+
+/**
+* Class represents GridFTP Endpoint
+*
+*/
+public class GridFTPContactInfo {
+    public static final int DEFAULT_GSI_FTP_PORT = 2811;
+    public String hostName;
+    public int port;
+
+    public GridFTPContactInfo(String hostName, int port) {
+        if (port <= 0 || port == 80) {
+            port = 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();
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/myproxy/CertificateManager.java
----------------------------------------------------------------------
diff --git a/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/myproxy/CertificateManager.java b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/myproxy/CertificateManager.java
new file mode 100644
index 0000000..7e69b9a
--- /dev/null
+++ b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/myproxy/CertificateManager.java
@@ -0,0 +1,87 @@
+/*
+ *
+ * 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.data.manager.core.remote.client.gridftp.myproxy;
+
+import java.io.InputStream;
+import java.security.GeneralSecurityException;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.globus.gsi.util.CertificateLoadUtil;
+import org.globus.util.ClassLoaderUtils;
+
+public class CertificateManager {
+
+    private static X509Certificate[] trustedCertificates;
+
+    /**
+     * Load CA certificates from a file included in the XBaya jar.
+     *
+     * @return The trusted certificates.
+     */
+    public static X509Certificate[] getTrustedCertificate(String certificate) {
+        if (trustedCertificates != null) {
+            return trustedCertificates;
+        }
+
+        List<X509Certificate> extremeTrustedCertificates = getTrustedCertificates(certificate);
+
+        List<X509Certificate> allTrustedCertificates = new ArrayList<X509Certificate>();
+        allTrustedCertificates.addAll(extremeTrustedCertificates);
+
+        trustedCertificates = allTrustedCertificates.toArray(new X509Certificate[allTrustedCertificates.size()]);
+        return trustedCertificates;
+    }
+
+    private static List<X509Certificate> getTrustedCertificates(String pass) {
+        // ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); //**
+        // InputStream stream = classLoader.getResourceAsStream(pass); //**
+        InputStream stream = ClassLoaderUtils.getResourceAsStream(pass); // **
+        if (stream == null) {
+            throw new RuntimeException("Failed to get InputStream to " + pass);
+        }
+        return readTrustedCertificates(stream);
+    }
+
+    /**
+     * @param stream
+     * @return List of X509Certificate
+     */
+    public static List<X509Certificate> readTrustedCertificates(InputStream stream) {
+        ArrayList<X509Certificate> certificates = new ArrayList<X509Certificate>();
+        while (true) {
+            X509Certificate certificate;
+            try {
+                certificate = CertificateLoadUtil.loadCertificate(stream);
+            } catch (GeneralSecurityException e) {
+                String message = "Certificates are invalid";
+                throw new RuntimeException(message, e);
+            }
+            if (certificate == null) {
+                break;
+            }
+            certificates.add(certificate);
+        }
+        return certificates;
+    }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/myproxy/MyProxyCredentials.java
----------------------------------------------------------------------
diff --git a/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/myproxy/MyProxyCredentials.java b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/myproxy/MyProxyCredentials.java
new file mode 100644
index 0000000..cbb3f9e
--- /dev/null
+++ b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/myproxy/MyProxyCredentials.java
@@ -0,0 +1,296 @@
+/*
+ *
+ * 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.data.manager.core.remote.client.gridftp.myproxy;
+
+import java.io.*;
+import java.security.PrivateKey;
+import java.security.cert.X509Certificate;
+
+import org.apache.log4j.Logger;
+import org.globus.gsi.X509Credential;
+import org.globus.gsi.gssapi.GlobusGSSCredentialImpl;
+import org.globus.myproxy.GetParams;
+import org.globus.myproxy.MyProxy;
+import org.ietf.jgss.GSSCredential;
+
+/**
+ * Class to manipulate my proxy credentials. Responsible for retrieving, creating
+ * my proxy credentials.
+ */
+public class MyProxyCredentials implements Serializable {
+
+    private static final long serialVersionUID = -2471014486509046212L;
+    protected String myProxyHostname;
+    protected String myProxyUserName;
+    protected String myProxyPassword;
+    protected int myProxyPortNumber;
+    protected int myProxyLifeTime = 14400;
+    protected String trustedCertificatePath;
+
+    private static final Logger log = Logger.getLogger(MyProxyCredentials.class);
+
+    /**
+     * Default constructor.
+     */
+    public MyProxyCredentials() {
+    }
+
+    /**
+     * Constructor.
+     * @param myProxyServer Ip address of the my proxy server.
+     * @param myProxyPort Port which my proxy server is running.
+     * @param myProxyUsername User name to connect to my proxy server.
+     * @param myProxyPassPhrase Password for my proxy authentication.
+     * @param myProxyLifetime Lifetime of the retrieving credentials.
+     * @param trustedCerts Trusted certificate location for SSL communication.
+     */
+    public MyProxyCredentials(String myProxyServer, int myProxyPort, String myProxyUsername, String myProxyPassPhrase,
+                              int myProxyLifetime, String trustedCerts) {
+
+        this.myProxyHostname = myProxyServer;
+        this.myProxyPortNumber = myProxyPort;
+        this.myProxyUserName = myProxyUsername;
+        this.myProxyPassword = myProxyPassPhrase;
+        this.myProxyLifeTime = myProxyLifetime;
+        this.trustedCertificatePath = trustedCerts;
+
+        init();
+
+    }
+
+    /**
+     * Gets the default proxy certificate.
+     * @return Default my proxy credentials.
+     * @throws Exception If an error occurred while retrieving credentials.
+     */
+    public GSSCredential getDefaultCredentials() throws Exception {
+        MyProxy myproxy = new MyProxy(this.myProxyHostname, this.myProxyPortNumber);
+        return myproxy.get(this.myProxyUserName, this.myProxyPassword, this.myProxyLifeTime);
+    }
+
+    /**
+     * Gets a new proxy certificate given current credentials.
+     * @param credential The new proxy credentials.
+     * @return The short lived GSSCredentials
+     * @throws Exception If an error is occurred while retrieving credentials.
+     */
+    public GSSCredential getProxyCredentials(GSSCredential credential) throws Exception {
+
+        MyProxy myproxy = new MyProxy(this.myProxyHostname, this.myProxyPortNumber);
+        return myproxy.get(credential, this.myProxyUserName, this.myProxyPassword, this.myProxyLifeTime);
+    }
+
+    /**
+     * Renew GSSCredentials.
+     * @param credential Credentials to be renewed.
+     * @return  Renewed credentials.
+     * @throws Exception If an error occurred while renewing credentials.
+     */
+    public GSSCredential renewCredentials(GSSCredential credential) throws Exception {
+        MyProxy myproxy = new MyProxy(this.myProxyHostname, this.myProxyPortNumber);
+
+        GetParams getParams = new GetParams();
+        getParams.setAuthzCreds(credential);
+        getParams.setUserName(this.myProxyUserName);
+        getParams.setLifetime(this.getMyProxyLifeTime());
+
+        return myproxy.get(credential, getParams);
+    }
+
+    public GSSCredential createCredentials(X509Certificate[] x509Certificates, PrivateKey privateKey) throws Exception {
+        X509Credential newCredential = new X509Credential(privateKey,
+                x509Certificates);
+
+        return new GlobusGSSCredentialImpl(newCredential,
+                GSSCredential.INITIATE_AND_ACCEPT);
+
+    }
+
+    public GSSCredential createCredentials(X509Certificate x509Certificate, PrivateKey privateKey) throws Exception {
+
+        X509Certificate[] x509Certificates = new X509Certificate[1];
+        x509Certificates[0] = x509Certificate;
+
+        return createCredentials(x509Certificates, privateKey);
+
+    }
+
+    public void init() {
+        validateTrustedCertificatePath();
+    }
+
+    private void validateTrustedCertificatePath() {
+
+        File file = new File(this.trustedCertificatePath);
+
+        if (!file.exists() || !file.canRead()) {
+            File f = new File(".");
+            System.out.println("Current directory " + f.getAbsolutePath());
+            throw new RuntimeException("Cannot read trusted certificate path " + this.trustedCertificatePath);
+        } else {
+            System.setProperty("X509_CERT_DIR", file.getAbsolutePath());
+        }
+    }
+
+
+    /**
+     * @return the myProxyHostname
+     */
+    public String getMyProxyHostname() {
+        return myProxyHostname;
+    }
+
+    /**
+     * @param myProxyHostname the myProxyHostname to set
+     */
+    public void setMyProxyHostname(String myProxyHostname) {
+        this.myProxyHostname = myProxyHostname;
+    }
+
+    /**
+     * @return the myProxyUserName
+     */
+    public String getMyProxyUserName() {
+        return myProxyUserName;
+    }
+
+    /**
+     * @param myProxyUserName the myProxyUserName to set
+     */
+    public void setMyProxyUserName(String myProxyUserName) {
+        this.myProxyUserName = myProxyUserName;
+    }
+
+    /**
+     * @return the myProxyPassword
+     */
+    public String getMyProxyPassword() {
+        return myProxyPassword;
+    }
+
+    /**
+     * @param myProxyPassword the myProxyPassword to set
+     */
+    public void setMyProxyPassword(String myProxyPassword) {
+        this.myProxyPassword = myProxyPassword;
+    }
+
+    /**
+     * @return the myProxyLifeTime
+     */
+    public int getMyProxyLifeTime() {
+        return myProxyLifeTime;
+    }
+
+    /**
+     * @param myProxyLifeTime the myProxyLifeTime to set
+     */
+    public void setMyProxyLifeTime(int myProxyLifeTime) {
+        this.myProxyLifeTime = myProxyLifeTime;
+    }
+
+    /**
+     * @return the myProxyPortNumber
+     */
+    public int getMyProxyPortNumber() {
+        return myProxyPortNumber;
+    }
+
+    /**
+     * @param myProxyPortNumber the myProxyPortNumber to set
+     */
+    public void setMyProxyPortNumber(int myProxyPortNumber) {
+        this.myProxyPortNumber = myProxyPortNumber;
+    }
+
+    public String getTrustedCertificatePath() {
+        return trustedCertificatePath;
+    }
+
+    public void setTrustedCertificatePath(String trustedCertificatePath) {
+        this.trustedCertificatePath = trustedCertificatePath;
+    }
+
+    /**
+     * @return the portalUserName
+     */
+    /*public String getPortalUserName() {
+        return portalUserName;
+    }*/
+
+    /**
+     * @param portalUserName
+     *            the portalUserName to set
+     */
+    /*public void setPortalUserName(String portalUserName) {
+        this.portalUserName = portalUserName;
+    }*/
+
+    /**
+     * Returns the initialized.
+     *
+     * @return The initialized
+     */
+    /*public boolean isInitialized() {
+        return this.initialized;
+    }*/
+
+    /**
+     * Sets initialized.
+     *
+     * @param initialized
+     *            The initialized to set.
+     */
+   /* public void setInitialized(boolean initialized) {
+        this.initialized = initialized;
+    }*/
+
+    /**
+     * @param hostcertsKeyFile
+     *            the hostcertsKeyFile to set
+     */
+    /*public void setHostcertsKeyFile(String hostcertsKeyFile) {
+        this.hostcertsKeyFile = hostcertsKeyFile;
+    }*/
+
+    /**
+     * @return the hostcertsKeyFile
+     */
+    /*public String getHostcertsKeyFile() {
+        return hostcertsKeyFile;
+    }*/
+
+    /**
+     * @param trustedCertsFile
+     *            the trustedCertsFile to set
+     */
+    /*public void setTrustedCertsFile(String trustedCertsFile) {
+        this.trustedCertsFile = trustedCertsFile;
+    }*/
+
+    /**
+     * @return the trustedCertsFile
+     */
+    /*public String getTrustedCertsFile() {
+        return trustedCertsFile;
+    }*/
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/myproxy/SecurityContext.java
----------------------------------------------------------------------
diff --git a/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/myproxy/SecurityContext.java b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/myproxy/SecurityContext.java
new file mode 100644
index 0000000..f45d32f
--- /dev/null
+++ b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/gridftp/myproxy/SecurityContext.java
@@ -0,0 +1,211 @@
+/*
+ *
+ * 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.data.manager.core.remote.client.gridftp.myproxy;
+
+import java.io.File;
+import java.io.InputStream;
+import java.util.Properties;
+
+import org.apache.airavata.data.manager.core.remote.client.gridftp.GridFTPConstants;
+import org.apache.log4j.Logger;
+import org.globus.myproxy.MyProxy;
+import org.ietf.jgss.GSSCredential;
+
+public class SecurityContext {
+
+    /**
+     *
+     */
+    public static final String GRIDFTP_CLIENT_PROPERTY = "gridftp-client.properties";
+    private Properties properties;
+    protected GSSCredential gssCredential;
+
+    private MyProxyCredentials myProxyCredentials;
+    private static final Logger log = Logger.getLogger(SecurityContext.class);
+
+    private String userName = null;
+    private String password = null;
+
+    /**
+     *
+     * Constructs a ApplicationGlobalContext.
+     *
+     * @throws Exception
+     */
+
+    public SecurityContext() throws Exception {
+        log.setLevel(org.apache.log4j.Level.INFO);
+        loadConfiguration();
+
+    }
+
+    public SecurityContext(String user, String pwd) throws Exception {
+
+        this.userName = user;
+        this.password = pwd;
+
+        log.setLevel(org.apache.log4j.Level.INFO);
+        loadConfiguration();
+
+    }
+
+    /**
+     *
+     * @throws Exception
+     */
+    public void login() throws Exception {
+        gssCredential = myProxyCredentials.getDefaultCredentials();
+    }
+
+    public GSSCredential getProxyCredentials(GSSCredential credential) throws Exception {
+        return myProxyCredentials.getProxyCredentials(credential);
+    }
+
+    public GSSCredential renewCredentials(GSSCredential credential) throws Exception {
+        return myProxyCredentials.renewCredentials(credential);
+    }
+
+    public static String getProperty(String name) {
+        try {
+            SecurityContext context = new SecurityContext();
+            return context.getProperties().getProperty(name);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+
+    }
+
+    /**
+     * Load the configration file
+     *
+     * @throws Exception
+     */
+    private void loadConfiguration() throws Exception {
+        try {
+
+            System.out.println("In the load configurations method .....");
+
+            if (properties == null) {
+                ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+
+                InputStream propertyStream = classLoader.getResourceAsStream(GRIDFTP_CLIENT_PROPERTY);
+                properties = new Properties();
+                if (myProxyCredentials == null) {
+                    this.myProxyCredentials = new MyProxyCredentials();
+                }
+                if (propertyStream != null) {
+                    properties.load(propertyStream);
+                    String myproxyServerTmp = properties.getProperty(GridFTPConstants.MYPROXY_SERVER);
+                    if (myproxyServerTmp != null) {
+                        this.myProxyCredentials.setMyProxyHostname(myproxyServerTmp.trim());
+                    }
+                    String myproxyPortTemp = properties.getProperty(GridFTPConstants.MYPROXY_PORT);
+                    if (myproxyPortTemp != null && myproxyPortTemp.trim().length() > 0) {
+                        this.myProxyCredentials.setMyProxyPortNumber(Integer.parseInt(myproxyPortTemp.trim()));
+                    } else {
+                        this.myProxyCredentials.setMyProxyPortNumber(MyProxy.DEFAULT_PORT);
+                    }
+
+                    this.myProxyCredentials.setMyProxyUserName(userName);
+                    this.myProxyCredentials.setMyProxyPassword(password);
+
+                    String myproxytime = properties.getProperty(GridFTPConstants.MYPROXY_LIFETIME);
+                    if (myproxytime != null) {
+                        this.myProxyCredentials.setMyProxyLifeTime(Integer.parseInt(myproxytime));
+                    }
+
+                    String currentDirectory = System.getProperty("projectDirectory");
+                    String certificatePath = currentDirectory + File.separatorChar
+                            + properties.getProperty(GridFTPConstants.TRUSTED_CERTS_FILE);
+
+                    this.myProxyCredentials.setTrustedCertificatePath(certificatePath);
+
+                    System.out.println("Certificate path - " + certificatePath);
+
+                    this.myProxyCredentials.init();
+                }
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error(e.getLocalizedMessage());
+            throw new Exception(e);
+        }
+
+    }
+
+    /**
+     * @return the properties
+     */
+    public Properties getProperties() {
+        return properties;
+    }
+
+    /**
+     * @param properties
+     *            the properties to set
+     */
+    public void setProperties(Properties properties) {
+        this.properties = properties;
+    }
+
+    /**
+     * Returns the raw gssCredential, without creating a proxy.
+     *
+     * @return The gssCredential
+     */
+    public GSSCredential getRawCredential() throws Exception{
+
+        return gssCredential;
+    }
+
+    /**
+     * Returns the gssCredential.
+     *
+     * @return The gssCredential
+     */
+    public GSSCredential getGssCredential() throws Exception{
+
+        if (this.gssCredential == null)
+            return null;
+
+        return renewCredentials(gssCredential);
+    }
+
+    /**
+     * Sets gssCredential.
+     *
+     * @param gssCredential
+     *            The gssCredential to set.
+     */
+    public void setGssCredential(GSSCredential gssCredential) {
+        this.gssCredential = gssCredential;
+    }
+
+    public MyProxyCredentials getMyProxyCredentials() {
+        return myProxyCredentials;
+    }
+
+    public void setMyProxyCredentials(MyProxyCredentials myProxyCredentials) {
+        this.myProxyCredentials = myProxyCredentials;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/http/HTTPStorageClient.java
----------------------------------------------------------------------
diff --git a/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/http/HTTPStorageClient.java b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/http/HTTPStorageClient.java
new file mode 100644
index 0000000..ba324cd
--- /dev/null
+++ b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/http/HTTPStorageClient.java
@@ -0,0 +1,215 @@
+/*
+ *
+ * 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.data.manager.core.remote.client.http;
+
+import org.apache.airavata.data.manager.core.remote.client.RemoteStorageClient;
+import org.apache.airavata.model.data.transfer.LSEntryModel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.net.URL;
+import java.net.URLConnection;
+import java.nio.channels.Channels;
+import java.nio.channels.ReadableByteChannel;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.util.List;
+import java.util.UUID;
+
+public class HTTPStorageClient implements RemoteStorageClient {
+    private final static Logger logger = LoggerFactory.getLogger(HTTPStorageClient.class);
+
+    public static enum Protocol {
+        HTTP, HTTPS
+    }
+
+    private String host;
+    private int port;
+    private Protocol protocol;
+
+    public HTTPStorageClient(Protocol protocol, String host, int port) throws KeyManagementException, NoSuchAlgorithmException {
+        this.protocol = protocol;
+        this.host = host;
+        this.port = port;
+
+        // Create a new trust manager that trust all certificates
+        TrustManager[] trustAllCerts = new TrustManager[]{
+                new X509TrustManager() {
+                    public java.security.cert.X509Certificate[] getAcceptedIssuers() {
+                        return null;
+                    }
+
+                    public void checkClientTrusted(
+                            java.security.cert.X509Certificate[] certs, String authType) {
+                    }
+
+                    public void checkServerTrusted(
+                            java.security.cert.X509Certificate[] certs, String authType) {
+                    }
+                }
+        };
+
+        // Activate the new trust manager
+        SSLContext sc = SSLContext.getInstance("SSL");
+        sc.init(null, trustAllCerts, new java.security.SecureRandom());
+        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
+    }
+
+    /**
+     * Reads a remote file, write it to local temporary directory and returns a file pointer to it
+     *
+     * @param filePath
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public File readFile(String filePath) throws Exception {
+        String url = "";
+        if (protocol == Protocol.HTTP)
+            url += "http://";
+        else
+            url += "https://";
+        url += host + ":" + port;
+        if (!filePath.startsWith("/"))
+            filePath += "/" + filePath;
+        url += filePath;
+
+        URL fileUrl = new URL(url);
+        URLConnection urlConnection = fileUrl.openConnection();
+        ReadableByteChannel rbc = Channels.newChannel(urlConnection.getInputStream());
+        String localFilePath = System.getProperty("java.io.tmpdir") + File.separator + UUID.randomUUID().toString();
+        FileOutputStream fos = new FileOutputStream(localFilePath);
+        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
+
+        return new File(localFilePath);
+    }
+
+    /**
+     * Writes the source file in the local storage to specified path in the remote storage
+     *
+     * @param sourceFile
+     * @param filePath
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public void writeFile(File sourceFile, String filePath) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Returns a directory listing of the specified directory
+     *
+     * @param directoryPath
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public List<LSEntryModel> getDirectoryListing(String directoryPath) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Move the specified file from source to destination within the same storage resource
+     *
+     * @param currentPath
+     * @param newPath
+     * @throws Exception
+     */
+    @Override
+    public void moveFile(String currentPath, String newPath) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * @param sourcePath
+     * @param destinationPath
+     * @throws Exception
+     */
+    @Override
+    public void copyFile(String sourcePath, String destinationPath) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Rename file with the given name
+     *
+     * @param filePath
+     * @param newFileName
+     * @throws Exception
+     */
+    @Override
+    public void renameFile(String filePath, String newFileName) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Delete the specified file
+     *
+     * @param filePath
+     * @throws Exception
+     */
+    @Override
+    public void deleteFile(String filePath) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Create new directory in the specified file
+     *
+     * @param newDirPath
+     * @throws Exception
+     */
+    @Override
+    public void mkdir(String newDirPath) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Checks whether specified file exists in the remote storage system
+     *
+     * @param filePath
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public boolean checkFileExists(String filePath) throws Exception {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * Checks whether the given path is a directory
+     *
+     * @param filePath
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public boolean checkIsDirectory(String filePath) throws Exception {
+        return false;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/1ad9ae5d/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/scp/CommandOutput.java
----------------------------------------------------------------------
diff --git a/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/scp/CommandOutput.java b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/scp/CommandOutput.java
new file mode 100644
index 0000000..cf9f6b2
--- /dev/null
+++ b/modules/data-manager/data-manager-core/src/main/java/org/apache/airavata/data/manager/core/remote/client/scp/CommandOutput.java
@@ -0,0 +1,34 @@
+/*
+ *
+ * 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.data.manager.core.remote.client.scp;
+
+import com.jcraft.jsch.Channel;
+import java.io.OutputStream;
+
+public interface CommandOutput {
+    void onOutput(Channel var1);
+
+    OutputStream getStandardError();
+
+    void exitCode(int var1);
+
+    int getExitCode();
+}