Added dataType to the task details, Added LocalInHandler and GaussianHandler , 
updated gfac-congif.xml to run Gaussian application


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

Branch: refs/heads/master
Commit: db45699774f8a7afdf85ec3bfc1980c0c0b27975
Parents: bfaac64
Author: shamrath <[email protected]>
Authored: Thu Dec 11 22:47:59 2014 -0500
Committer: shamrath <[email protected]>
Committed: Thu Dec 11 22:47:59 2014 -0500

----------------------------------------------------------------------
 .../server/src/main/resources/gfac-config.xml   |   6 +
 modules/distribution/gfac-server/pom.xml        |   5 +
 modules/distribution/server/pom.xml             |   5 +
 .../gfac-application-specific-handlers/pom.xml  |  22 +++
 .../gaussian/handler/GaussianHandler.java       | 158 +++++++++++++++++++
 .../apache/airavata/gfac/GFacConfiguration.java |  18 ++-
 .../gfac/local/handler/LocalInputHandler.java   |  93 +++++++++++
 modules/gfac/pom.xml                            |   1 +
 .../engine/interpretor/WorkflowInterpreter.java |  18 ++-
 .../engine/invoker/WorkflowInputUtil.java       |   5 +-
 .../model/component/ComponentDataPort.java      |  10 +-
 .../amazon/InstanceComponentDataPort.java       |   3 +-
 .../component/dynamic/DynamicComponentPort.java |   5 +-
 .../model/component/ws/WSComponent.java         |   4 +-
 .../component/ws/WSComponentApplication.java    |  28 ++--
 .../ws/WSComponentApplicationParameter.java     |  31 ++--
 .../model/component/ws/WSComponentPort.java     |   5 +-
 .../model/gpel/script/WorkflowWSDL.java         |   4 +-
 .../airavata/workflow/model/graph/DataPort.java |   3 +-
 .../airavata/workflow/model/graph/EPRPort.java  |   7 +-
 .../model/graph/amazon/InstanceDataPort.java    |   5 +-
 .../model/graph/dynamic/DynamicPort.java        |   5 +-
 .../model/graph/system/ConstantNode.java        |  10 +-
 .../model/graph/system/DifferedInputNode.java   |  11 +-
 .../model/graph/system/EndBlockNode.java        |   9 +-
 .../model/graph/system/EndDoWhileNode.java      |  11 +-
 .../model/graph/system/EndForEachNode.java      |  11 +-
 .../workflow/model/graph/system/EndifNode.java  |   9 +-
 .../model/graph/system/ForEachNode.java         |  11 +-
 .../workflow/model/graph/system/InputNode.java  |  24 ++-
 .../workflow/model/graph/system/OutputNode.java |   7 +-
 .../model/graph/system/ParameterNode.java       |  11 +-
 .../model/graph/system/S3InputNode.java         |  11 +-
 .../model/graph/system/SystemDataPort.java      |   9 +-
 .../workflow/model/graph/system/SystemNode.java |   5 +-
 .../workflow/model/graph/util/GraphUtil.java    |   5 +-
 .../workflow/model/graph/ws/WSPort.java         |   7 +-
 .../airavata/workflow/model/wf/Workflow.java    |   2 +-
 .../workflow/model/wf/WorkflowInput.java        |  10 +-
 .../xbaya/invoker/WorkflowInputUtil.java        |  22 +--
 .../graph/dynamic/DynamicNodeWindow.java        |   3 +-
 .../system/ConstantConfigurationDialog.java     |  37 ++---
 .../DifferedInputConfigurationDialog.java       |  52 ++----
 .../graph/system/InputConfigurationDialog.java  |  52 ++----
 .../ui/experiment/LaunchApplicationWindow.java  |  44 +-----
 .../WorkflowInterpreterLaunchWindow.java        |   6 +-
 46 files changed, 519 insertions(+), 301 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/configuration/server/src/main/resources/gfac-config.xml
----------------------------------------------------------------------
diff --git a/modules/configuration/server/src/main/resources/gfac-config.xml 
b/modules/configuration/server/src/main/resources/gfac-config.xml
index c80f90b..4cc1a55 100644
--- a/modules/configuration/server/src/main/resources/gfac-config.xml
+++ b/modules/configuration/server/src/main/resources/gfac-config.xml
@@ -25,6 +25,7 @@
     <Provider 
class="org.apache.airavata.gfac.local.provider.impl.LocalProvider" 
submission="LOCAL">
         <InHandlers>
             <Handler 
class="org.apache.airavata.gfac.local.handler.LocalDirectorySetupHandler"/>
+            <Handler 
class="org.apache.airavata.gfac.local.handler.LocalInputHandler"/>
         </InHandlers>
     </Provider>
    <Provider class="org.apache.airavata.gfac.gram.provider.impl.GramProvider" 
submission="GLOBUS" security="GSI">
@@ -64,6 +65,11 @@
             <Handler 
class="org.apache.airavata.gfac.gram.handler.GridFTPOutputHandler"/>
         </OutHandlers>
     </Application>
+    <Application name="Gaussian">
+        <InHandlers>
+            <Handler 
class="org.apache.airavata.application.gaussian.handler.GaussianHandler"/>
+        </InHandlers>
+    </Application>
 
      <Provider class="org.apache.airavata.gfac.ssh.provider.impl.SSHProvider" 
submission="SSH" executionMode="async">
          <InHandlers>

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/distribution/gfac-server/pom.xml
----------------------------------------------------------------------
diff --git a/modules/distribution/gfac-server/pom.xml 
b/modules/distribution/gfac-server/pom.xml
index d5cf56f..8c2be18 100644
--- a/modules/distribution/gfac-server/pom.xml
+++ b/modules/distribution/gfac-server/pom.xml
@@ -173,6 +173,11 @@
             <artifactId>airavata-gfac-service</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            
<artifactId>airavata-gfac-application-specific-handlers</artifactId>
+            <version>${project.version}</version>
+        </dependency>
     </dependencies>
 
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/distribution/server/pom.xml
----------------------------------------------------------------------
diff --git a/modules/distribution/server/pom.xml 
b/modules/distribution/server/pom.xml
index fb018a0..7e510c6 100644
--- a/modules/distribution/server/pom.xml
+++ b/modules/distribution/server/pom.xml
@@ -326,6 +326,11 @@
         </dependency>
         <dependency>
             <groupId>org.apache.airavata</groupId>
+            
<artifactId>airavata-gfac-application-specific-handlers</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
             <artifactId>airavata-gfac-gsissh</artifactId>
             <version>${project.version}</version>
         </dependency>

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/gfac/gfac-application-specific-handlers/pom.xml
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-application-specific-handlers/pom.xml 
b/modules/gfac/gfac-application-specific-handlers/pom.xml
new file mode 100644
index 0000000..0a58857
--- /dev/null
+++ b/modules/gfac/gfac-application-specific-handlers/pom.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <parent>
+        <artifactId>gfac</artifactId>
+        <groupId>org.apache.airavata</groupId>
+        <version>0.14-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>airavata-gfac-application-specific-handlers</artifactId>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>airavata-gfac-core</artifactId>
+            <version>0.14-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/gfac/gfac-application-specific-handlers/src/main/java/org/apache/airavata/application/gaussian/handler/GaussianHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-application-specific-handlers/src/main/java/org/apache/airavata/application/gaussian/handler/GaussianHandler.java
 
b/modules/gfac/gfac-application-specific-handlers/src/main/java/org/apache/airavata/application/gaussian/handler/GaussianHandler.java
new file mode 100644
index 0000000..248a687
--- /dev/null
+++ 
b/modules/gfac/gfac-application-specific-handlers/src/main/java/org/apache/airavata/application/gaussian/handler/GaussianHandler.java
@@ -0,0 +1,158 @@
+/*
+ *
+ * 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.application.gaussian.handler;
+
+import org.apache.airavata.gfac.core.context.JobExecutionContext;
+import org.apache.airavata.gfac.core.handler.AbstractRecoverableHandler;
+import org.apache.airavata.gfac.core.handler.GFacHandlerException;
+import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
+import 
org.apache.airavata.model.workspace.experiment.ComputationalResourceScheduling;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+public class GaussianHandler extends AbstractRecoverableHandler {
+
+    private static final Logger logger = 
LoggerFactory.getLogger(GaussianHandler.class);
+    public static final String LINK_SECTION = "%";
+    public static final String ROUTE_SECTION = "#";
+    public static final String PROC_SHARED = "procshared";
+    public static final String MEM = "mem";
+    public static final String CHK = "chk";
+    public static final String PROC = "proc";
+
+    public static final String EQUAL = "=";
+    public static final String OPEN_PARENTHESES = "(";
+    public static final String CLOSE_PARENTHESES = ")";
+
+    private String mainInputFilePath;
+    @Override
+    public void invoke(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
+        super.invoke(jobExecutionContext);
+        Map<String, String> configurations;
+        Map<String, Object> parameters = 
jobExecutionContext.getInMessageContext().getParameters();
+        // only get first input file, which is the main input file
+        for (Object paraValue : parameters.values()) {
+            if (paraValue instanceof InputDataObjectType) {
+                InputDataObjectType inputDataObjectType = 
(InputDataObjectType) paraValue;
+                mainInputFilePath = inputDataObjectType.getValue();
+                break;
+            }
+        }
+        if (mainInputFilePath != null) {
+            File mainInputFile = new File(mainInputFilePath);
+            if (mainInputFile.exists()) {
+                try {
+                    configurations = parseGaussianInputFile(mainInputFile);
+                    ComputationalResourceScheduling taskScheduling = 
jobExecutionContext.getTaskData().getTaskScheduling();
+                    for (Map.Entry<String, String> inputConfig : 
configurations.entrySet()) {
+                        if (inputConfig.getKey().equals(PROC_SHARED)) {
+                            
taskScheduling.setTotalCPUCount(Integer.parseInt(inputConfig.getValue()));
+                        } else if (inputConfig.getKey().equals(MEM)) {
+                            
taskScheduling.setTotalPhysicalMemory(Integer.parseInt(inputConfig.getValue()));
+                        } else if (inputConfig.getKey().equals(PROC)) {
+                            
taskScheduling.setTotalCPUCount(Integer.parseInt(inputConfig.getValue()));
+                        } else {
+                            // TODO - handle other input configurations
+                        }
+                        logger.info("$$$$$$$$ " + inputConfig.getKey() + " --> 
" + inputConfig.getValue() + " $$$$$$$$$$$");
+                    }
+                } catch (IOException e) {
+                    System.out.println("IO exception occurs 
$$$$$$$$$$$$$$$$$$$$$$$$$");
+                    e.printStackTrace();
+                    // TODO handle this
+                }
+            } else {
+//                System.out.println("main input file is not exists 
$$$$$$$$$$$$$$$$$$$$$$$$$$$");
+                // TODO - handle this scenario
+            }
+        } else {
+//            System.out.println("Main input file path is null 
$$$$$$$$$$$$$$$$$$$$");
+            // TODO - handle this scenario
+        }
+
+    }
+
+    /*   %procshared=6  , put this line to the map key:procshared , value:6
+       keyword = option
+       keyword(option)
+       keyword=(option1, option2, …)
+       keyword(option1, option2, …)*/
+    // TODO - make this method private
+    public Map<String, String> parseGaussianInputFile(File mainInputFile) 
throws IOException {
+        Map<String, String> configs = new HashMap<String, String>();
+        BufferedReader br = new BufferedReader(new FileReader(mainInputFile));
+        String line = br.readLine();
+        while (line != null) {
+            line = line.trim();
+            String keyword = null;
+            String withoutKeyword = null;
+            String option = null;
+            if (line.startsWith(LINK_SECTION)) {
+                int equalIndex = line.indexOf(EQUAL);
+                int openParenthesesIndex = line.indexOf(OPEN_PARENTHESES);
+                // read the keyword
+                if (equalIndex > 0) {
+                    keyword = line.substring(1, equalIndex).trim();
+                    withoutKeyword = line.substring(equalIndex + 1, 
line.length()); // remove up to = sign
+                } else if (openParenthesesIndex > 0) {
+                    keyword = line.substring(1, openParenthesesIndex).trim();
+                    withoutKeyword = line.substring(openParenthesesIndex, 
line.length()); // remove left side of ( sign
+                } else {
+                    // TODO - malformed input configuration
+                }
+                // read the option
+                if (openParenthesesIndex > 0) {
+                    if (withoutKeyword.endsWith(CLOSE_PARENTHESES)) {
+                        option = withoutKeyword.substring(1, 
withoutKeyword.length() - 1);
+                    } else {
+                        //TODO -  malformed input configuration
+                    }
+                } else {
+                    option = withoutKeyword.trim();
+                }
+                configs.put(keyword, option);
+            } else if (line.startsWith(ROUTE_SECTION)) {
+                // parse the line
+            }
+            line = br.readLine();
+        }
+        return configs;
+    }
+
+    @Override
+    public void initProperties(Properties properties) throws 
GFacHandlerException {
+
+    }
+
+    @Override
+    public void recover(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
+        // Implement this method if we need safe recover steps before rerun 
the task.
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/GFacConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/GFacConfiguration.java
 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/GFacConfiguration.java
index 901efda..042f036 100644
--- 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/GFacConfiguration.java
+++ 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/GFacConfiguration.java
@@ -214,16 +214,18 @@ public class GFacConfiguration {
         String className = "";
         for (int i = 0; i < nl.getLength(); i++) {
             className = ((Element) nl.item(i)).getAttribute(attribute);
-            NodeList childNodes = (nl.item(i)).getChildNodes();
-            for (int j = 0; j < childNodes.getLength(); j++) {
-                if 
(Constants.PROPERTY.equals(childNodes.item(j).getNodeName())) {
-                    String name = ((Element) 
childNodes.item(j)).getAttribute(Constants.NAME);
-                    String value = ((Element) 
childNodes.item(j)).getAttribute(Constants.VALUE);
-                    properties.put(name, value);
+            if (className != null && !className.equals("")) {
+                NodeList childNodes = (nl.item(i)).getChildNodes();
+                for (int j = 0; j < childNodes.getLength(); j++) {
+                    if 
(Constants.PROPERTY.equals(childNodes.item(j).getNodeName())) {
+                        String name = ((Element) 
childNodes.item(j)).getAttribute(Constants.NAME);
+                        String value = ((Element) 
childNodes.item(j)).getAttribute(Constants.VALUE);
+                        properties.put(name, value);
+                    }
                 }
+                GFacProviderConfig gFacProviderConfig = new 
GFacProviderConfig(properties,className);
+                gFacProviderConfigs.add(gFacProviderConfig);
             }
-            GFacProviderConfig gFacProviderConfig = new 
GFacProviderConfig(properties,className);
-            gFacProviderConfigs.add(gFacProviderConfig);
         }
         return gFacProviderConfigs;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/handler/LocalInputHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/handler/LocalInputHandler.java
 
b/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/handler/LocalInputHandler.java
new file mode 100644
index 0000000..d085fbf
--- /dev/null
+++ 
b/modules/gfac/gfac-local/src/main/java/org/apache/airavata/gfac/local/handler/LocalInputHandler.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.gfac.local.handler;
+
+import org.apache.airavata.gfac.GFacException;
+import org.apache.airavata.gfac.core.context.JobExecutionContext;
+import org.apache.airavata.gfac.core.handler.AbstractRecoverableHandler;
+import org.apache.airavata.gfac.core.handler.GFacHandlerException;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
+import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
+import org.apache.commons.io.FileUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Map;
+import java.util.Properties;
+
+
+public class LocalInputHandler extends AbstractRecoverableHandler {
+    private static final Logger logger = 
LoggerFactory.getLogger(LocalInputHandler.class);
+    @Override
+    public void invoke(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
+        super.invoke(jobExecutionContext);
+        Map<String, Object> inputParameters = 
jobExecutionContext.getInMessageContext().getParameters();
+        for (Map.Entry<String, Object> inputParamEntry : 
inputParameters.entrySet()) {
+            if (inputParamEntry.getValue() instanceof InputDataObjectType) {
+                InputDataObjectType inputDataObject = (InputDataObjectType) 
inputParamEntry.getValue();
+                if (inputDataObject.getType() == DataType.URI
+                        && inputDataObject != null
+                        && !inputDataObject.getValue().equals("")) {
+                    try {
+                        
inputDataObject.setValue(stageFile(jobExecutionContext.getInputDir(), 
inputDataObject.getValue()));
+                    } catch (IOException e) {
+                        throw new GFacHandlerException("Error while data 
staging sourceFile= " + inputDataObject.getValue());
+                    }
+                }
+            }
+        }
+    }
+
+    private String stageFile(String inputDir, String sourceFilePath) throws 
IOException {
+        int i = sourceFilePath.lastIndexOf(File.separator);
+        String substring = sourceFilePath.substring(i + 1);
+        if (inputDir.endsWith("/")) {
+            inputDir = inputDir.substring(0, inputDir.length() - 1);
+        }
+        String targetFilePath = inputDir + File.separator + substring;
+
+        if (sourceFilePath.startsWith("file")) {
+            sourceFilePath = 
sourceFilePath.substring(sourceFilePath.indexOf(":") + 1, 
sourceFilePath.length());
+        }
+
+        File sourceFile = new File(sourceFilePath);
+        File targetFile = new File(targetFilePath);
+        if (targetFile.exists()) {
+            targetFile.delete();
+        }
+        logger.info("staging source file : " + sourceFilePath + " to target 
file : " + targetFilePath);
+        FileUtils.copyFile(sourceFile, targetFile);
+
+        return targetFilePath;
+    }
+
+    @Override
+    public void recover(JobExecutionContext jobExecutionContext) throws 
GFacHandlerException {
+
+    }
+
+    @Override
+    public void initProperties(Properties properties) throws 
GFacHandlerException {
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/gfac/pom.xml
----------------------------------------------------------------------
diff --git a/modules/gfac/pom.xml b/modules/gfac/pom.xml
index 2e7df07..e85ef7d 100644
--- a/modules/gfac/pom.xml
+++ b/modules/gfac/pom.xml
@@ -42,6 +42,7 @@
                 <module>gfac-monitor</module>
                 <module>airavata-gfac-service</module>
                 <module>airavata-gfac-stubs</module>
+                <module>gfac-application-specific-handlers</module>
             </modules>
         </profile>
     </profiles>

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-engine/src/main/java/org/apache/airavata/workflow/engine/interpretor/WorkflowInterpreter.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-engine/src/main/java/org/apache/airavata/workflow/engine/interpretor/WorkflowInterpreter.java
 
b/modules/workflow-model/workflow-engine/src/main/java/org/apache/airavata/workflow/engine/interpretor/WorkflowInterpreter.java
index 1f23601..c236e7d 100644
--- 
a/modules/workflow-model/workflow-engine/src/main/java/org/apache/airavata/workflow/engine/interpretor/WorkflowInterpreter.java
+++ 
b/modules/workflow-model/workflow-engine/src/main/java/org/apache/airavata/workflow/engine/interpretor/WorkflowInterpreter.java
@@ -31,6 +31,7 @@ import org.apache.airavata.common.utils.XMLUtil;
 import org.apache.airavata.common.utils.listener.AbstractActivityListener;
 import org.apache.airavata.messaging.core.MessageContext;
 import org.apache.airavata.messaging.core.Publisher;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
 import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
 import org.apache.airavata.model.messaging.event.ExperimentStatusChangeEvent;
@@ -256,11 +257,13 @@ public class WorkflowInterpreter implements 
AbstractActivityListener{
                                
notifyViaInteractor(WorkflowExecutionMessage.NODE_STATE_CHANGED, null);
                                String portId= ((InputNode) node).getID();
                                Object portValue = ((InputNode) 
node).getDefaultValue();
-                //Saving workflow input Node data before running the workflow
+                               DataType dataType = ((InputNode) 
node).getDataType();
+                               //Saving workflow input Node data before 
running the workflow
                                WorkflowNodeDetails workflowNode = 
createWorkflowNodeDetails(node);
                 InputDataObjectType elem = new InputDataObjectType();
                                elem.setName(portId);
-                               
elem.setValue(portValue==null?null:portValue.toString());
+                               elem.setValue(portValue == null ? null : 
portValue.toString());
+                               elem.setType(dataType);
                                workflowNode.addToNodeInputs(elem);
                                
getRegistry().update(RegistryModelType.WORKFLOW_NODE_DETAIL, workflowNode, 
workflowNode.getNodeInstanceId());
                                updateWorkflowNodeStatus(workflowNode, 
WorkflowNodeState.COMPLETED);
@@ -734,16 +737,16 @@ public class WorkflowInterpreter implements 
AbstractActivityListener{
                         * type is array
                         */
                        Node fromNode = dataPort.getFromNode();
-                       QName type = null;
+                       DataType type = null;
                        if (fromNode instanceof InputNode) {
-                               type = BasicTypeMapping.STRING_QNAME;
+                               type = DataType.STRING;
                        } else if (fromNode instanceof ConstantNode) {
                                type = ((ConstantNode) fromNode).getType();
                        } else if ((dataPort.getFromPort() instanceof WSPort)
                                        && 
BasicTypeMapping.isArrayType(((WSPort) 
dataPort.getFromPort()).getComponentPort().getElement())) {
                                Invoker fromInvoker = 
this.invokerMap.get(fromNode);
-                               inputVal = 
BasicTypeMapping.getOutputArray(XmlConstants.BUILDER.parseFragmentFromString(fromInvoker.getOutputs().toString()),
 dataPort
-                                               .getFromPort().getName(), 
BasicTypeMapping.getSimpleTypeIndex(((DataPort) 
dataPort.getFromPort()).getType()));
+//                             inputVal = 
BasicTypeMapping.getOutputArray(XmlConstants.BUILDER.parseFragmentFromString(fromInvoker.getOutputs().toString()),
 dataPort
+//                                             .getFromPort().getName(), 
BasicTypeMapping.getSimpleTypeIndex(((DataPort) 
dataPort.getFromPort()).getType()));
                                type = ((DataPort) 
dataPort.getFromPort()).getType();
                        } else {
                                type = ((DataPort) 
dataPort.getFromPort()).getType();
@@ -752,7 +755,7 @@ public class WorkflowInterpreter implements 
AbstractActivityListener{
                        if (null == inputVal) {
                                throw new WorkFlowInterpreterException("Unable 
to find inputs for the node:" + node.getID());
                        }
-                       inputs.add(BasicTypeMapping.getObjectOfType(type, 
inputVal));
+//                     inputs.add(BasicTypeMapping.getObjectOfType(type, 
inputVal));
 
                }
 
@@ -1067,6 +1070,7 @@ public class WorkflowInterpreter implements 
AbstractActivityListener{
                                
elem.setInputOrder(port.getComponentPort().getInputOrder());
                                elem.setApplicationArgument(
                                                
(port.getComponentPort().getApplicationArgument() != null ? 
port.getComponentPort().getApplicationArgument() : ""));
+                               elem.setType(port.getType());
                        }
 
                        nodeDetails.addToNodeInputs(elem);

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-engine/src/main/java/org/apache/airavata/workflow/engine/invoker/WorkflowInputUtil.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-engine/src/main/java/org/apache/airavata/workflow/engine/invoker/WorkflowInputUtil.java
 
b/modules/workflow-model/workflow-engine/src/main/java/org/apache/airavata/workflow/engine/invoker/WorkflowInputUtil.java
index 13eb884..c1a048b 100644
--- 
a/modules/workflow-model/workflow-engine/src/main/java/org/apache/airavata/workflow/engine/invoker/WorkflowInputUtil.java
+++ 
b/modules/workflow-model/workflow-engine/src/main/java/org/apache/airavata/workflow/engine/invoker/WorkflowInputUtil.java
@@ -21,12 +21,13 @@
 package org.apache.airavata.workflow.engine.invoker;
 
 import org.apache.airavata.common.utils.StringUtil;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.workflow.model.component.ws.WSComponentPort;
 
 public class WorkflowInputUtil {
 
     public static String createInputForGFacService(WSComponentPort port,String 
input){
-        String paramType = port.getType().getLocalPart();
+        DataType paramType = port.getType();
         StringBuffer inputString = new StringBuffer("<");
         if("StringParameterType".equals(paramType) || 
"URIParameterType".equals(paramType) ||
                 "DoubleParameterType".equals(paramType) || 
"IntegerParameterType".equals(paramType)
@@ -34,7 +35,7 @@ public class WorkflowInputUtil {
                 || "FileParameterType".equals(paramType)){
             inputString.append(port.getName()).append(">").
                     
append(getValueElement(input)).append("</").append(port.getName()).append(">");
-        }else if(paramType.endsWith("ArrayType")){
+        }else if(paramType.toString().equals("ArrayType")){
             inputString.append(port.getName()).append(">");
             String[] valueList = StringUtil.getElementsFromString(input);
             for(String inputValue:valueList){

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ComponentDataPort.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ComponentDataPort.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ComponentDataPort.java
index fea2666..198a3e2 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ComponentDataPort.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ComponentDataPort.java
@@ -23,12 +23,12 @@ package org.apache.airavata.workflow.model.component;
 
 import javax.xml.namespace.QName;
 
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.workflow.model.graph.DataPort;
 
 public abstract class ComponentDataPort extends ComponentPort {
 
-    protected QName type;
-
+    protected DataType type;
     /**
      * Constructs a ComponentDataPort.
      * 
@@ -46,12 +46,16 @@ public abstract class ComponentDataPort extends 
ComponentPort {
         super(name);
     }
 
+    public void setType(DataType type) {
+        this.type = type;
+    }
+
     /**
      * Returns the type.
      * 
      * @return The type
      */
-    public QName getType() {
+    public DataType getType() {
         return this.type;
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/amazon/InstanceComponentDataPort.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/amazon/InstanceComponentDataPort.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/amazon/InstanceComponentDataPort.java
index d4a3904..85e7e4a 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/amazon/InstanceComponentDataPort.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/amazon/InstanceComponentDataPort.java
@@ -24,6 +24,7 @@ package org.apache.airavata.workflow.model.component.amazon;
 import javax.xml.namespace.QName;
 
 import org.apache.airavata.common.utils.WSConstants;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.workflow.model.component.ComponentDataPort;
 import org.apache.airavata.workflow.model.graph.DataPort;
 import org.apache.airavata.workflow.model.graph.amazon.InstanceDataPort;
@@ -42,7 +43,7 @@ public class InstanceComponentDataPort extends 
ComponentDataPort {
      */
     public InstanceComponentDataPort(String name) {
         super(name);
-        this.type = new QName(WSConstants.XSD_NS_URI, "string", 
WSConstants.XSD_NS_PREFIX);
+        this.type = DataType.STRING;
         setName(PORT_NAME);
         setDescription(PORT_DESCRIPTION);
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/dynamic/DynamicComponentPort.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/dynamic/DynamicComponentPort.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/dynamic/DynamicComponentPort.java
index 06f5700..0adc686 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/dynamic/DynamicComponentPort.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/dynamic/DynamicComponentPort.java
@@ -23,6 +23,7 @@ package org.apache.airavata.workflow.model.component.dynamic;
 
 import javax.xml.namespace.QName;
 
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.workflow.model.component.ComponentDataPort;
 import org.apache.airavata.workflow.model.graph.DataPort;
 import org.apache.airavata.workflow.model.graph.dynamic.DynamicPort;
@@ -35,7 +36,7 @@ public class DynamicComponentPort extends ComponentDataPort {
     public DynamicComponentPort(DynamicComponent component) {
         super();
         this.component = component;
-        this.type = WSConstants.XSD_ANY_TYPE;
+        this.type = DataType.STRING;
     }
 
     /**
@@ -49,7 +50,7 @@ public class DynamicComponentPort extends ComponentDataPort {
         return port;
     }
 
-    public void setType(QName type) {
+    public void setType(DataType type) {
         this.type = type;
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ws/WSComponent.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ws/WSComponent.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ws/WSComponent.java
index bf37ea9..9c2f97f 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ws/WSComponent.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ws/WSComponent.java
@@ -93,6 +93,7 @@ public class WSComponent extends Component {
             port.setDefaultValue(inputDataObjectType.getDefaultValue());
             
port.setApplicationArgument(inputDataObjectType.getApplicationArgument());
             port.setInputOrder(inputDataObjectType.getInputOrder());
+            port.setType(inputDataObjectType.getType());
                        inputs.add(port);
                }
 
@@ -101,6 +102,7 @@ public class WSComponent extends Component {
             WSComponentPort port = new 
WSComponentPort(outputDataObjectType.getName(),outputDataObjectType.getType() , 
this);
             port.setDescription(outputDataObjectType.getDescription());
             port.setDefaultValue(outputDataObjectType.getDefaultValue());
+            port.setType(outputDataObjectType.getType());
                        outputs.add(port);
                }
 
@@ -225,7 +227,7 @@ public class WSComponent extends Component {
         buf.append("<dl>\n");
         for (WSComponentPort port : ports) {
             buf.append("<dt><strong>" + port.getName() + "</strong></dt>\n");
-            buf.append("<dd>Type: " + port.getType().getLocalPart() + 
"</dd>\n");
+            buf.append("<dd>Type: " + port.getType().toString()+ "</dd>\n");
             if (port.getDescription() != null && 
!port.getDescription().equals("")) {
                 buf.append("<dd>Description: " + port.getDescription() + 
"</dd>\n");
             }

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ws/WSComponentApplication.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ws/WSComponentApplication.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ws/WSComponentApplication.java
index ac4c5cb..0447906 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ws/WSComponentApplication.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ws/WSComponentApplication.java
@@ -42,6 +42,7 @@ import com.google.gson.JsonObject;
 import org.apache.airavata.common.utils.WSConstants;
 import org.apache.airavata.common.utils.XMLUtil;
 import 
org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
 import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
 import org.apache.airavata.workflow.model.utils.WorkflowConstants;
@@ -67,9 +68,9 @@ public class WSComponentApplication {
                app.setApplicationId("dsfds");
                app.setName("dfd");
                app.setDescription("sdfdsfds");
-               app.addInputParameter(new 
WSComponentApplicationParameter("asas", new QName("sdf"), null, "sdfds", 1));
-               app.addOutputParameter(new 
WSComponentApplicationParameter("9842", new QName("sdv99304"), null, null));
-               app.addOutputParameter(new 
WSComponentApplicationParameter("AAAAA", new QName("sdfd"), "sdfsdf", "243bs sd 
fsd fs f dfd"));
+               app.addInputParameter(new 
WSComponentApplicationParameter("asas", DataType.STRING, null, "sdfds", 1));
+               app.addOutputParameter(new 
WSComponentApplicationParameter("9842", DataType.STRING, null, null));
+               app.addOutputParameter(new 
WSComponentApplicationParameter("AAAAA", DataType.STRING, "sdfsdf", "243bs sd 
fsd fs f dfd"));
              ByteArrayOutputStream byteArrayOutputStream = new 
ByteArrayOutputStream();
                try {
                      JAXBContext context = 
JAXBContext.newInstance(WSComponentApplication.class);
@@ -124,7 +125,7 @@ public class WSComponentApplication {
                                        
inputParameter.setDefaultValue(inputObject.getAsJsonPrimitive(WorkflowConstants.APPLICATION_DATA_DEFAULT_VALUE).getAsString());
                                        
inputParameter.setDescription(inputObject.getAsJsonPrimitive(WorkflowConstants.APPLICATION_DATA_DESCRIPTION).getAsString());
                                        
inputParameter.setName(inputObject.getAsJsonPrimitive(WorkflowConstants.APPLICATION_DATA_NAME).getAsString());
-                                       
inputParameter.setType(QName.valueOf(inputObject.getAsJsonPrimitive(WorkflowConstants.APPLICATION_DATA_DATA_TYPE).getAsString()));
+                                       
inputParameter.setType(DataType.valueOf(inputObject.getAsJsonPrimitive(WorkflowConstants.APPLICATION_DATA_DATA_TYPE).getAsString()));
                                        
inputParameter.setInputOrder(inputObject.getAsJsonPrimitive(WorkflowConstants.APPLICATION_DATA_INPUT_ORDER).getAsInt());
                                        if 
(inputObject.getAsJsonPrimitive(WorkflowConstants.APPLICATION_DATA_APP_ARGUMENT)
 != null) {
                                                
inputParameter.setApplicationArgument(inputObject.getAsJsonPrimitive(WorkflowConstants.APPLICATION_DATA_APP_ARGUMENT).getAsString());
@@ -144,7 +145,7 @@ public class WSComponentApplication {
                     outputParameter = new WSComponentApplicationParameter();
                     
outputParameter.setDescription(outputObject.getAsJsonPrimitive(WorkflowConstants.APPLICATION_DATA_DESCRIPTION).getAsString());
                     
outputParameter.setName(outputObject.getAsJsonPrimitive(WorkflowConstants.APPLICATION_DATA_NAME).getAsString());
-                    
outputParameter.setType(QName.valueOf(outputObject.getAsJsonPrimitive(WorkflowConstants.APPLICATION_DATA_DATA_TYPE).getAsString()));
+                    
outputParameter.setType(DataType.valueOf(outputObject.getAsJsonPrimitive(WorkflowConstants.APPLICATION_DATA_DATA_TYPE).getAsString()));
                     wsComponentApplication.addOutputParameter(outputParameter);
                 }
             }
@@ -211,26 +212,15 @@ public class WSComponentApplication {
                 
         List<InputDataObjectType> applicationInputs = 
application.getApplicationInputs();
         for (InputDataObjectType inputDataObjectType : applicationInputs) {
-               String typeName = 
inputDataObjectType.getType().toString().toLowerCase();
-            XmlNamespace namespace = null;
-            namespace = XmlConstants.BUILDER.newNamespace("xsd", 
WSConstants.XSD_NS_URI);
-            String prefix = "xsd";
-            QName type = new QName(namespace.getName(), typeName, prefix);
-
-                       addInputParameter(new 
WSComponentApplicationParameter(inputDataObjectType.getName(), type,
+                       addInputParameter(new 
WSComponentApplicationParameter(inputDataObjectType.getName(), 
inputDataObjectType.getType(),
                                        
inputDataObjectType.getUserFriendlyDescription(), 
inputDataObjectType.getValue(),
                                        
inputDataObjectType.getApplicationArgument(), 
inputDataObjectType.getInputOrder()));
                }
 
         List<OutputDataObjectType> applicationOutputs = 
application.getApplicationOutputs();
         for (OutputDataObjectType outputDataObjectType : applicationOutputs) {
-               String typeName = 
outputDataObjectType.getType().toString().toLowerCase();
-            XmlNamespace namespace = null;
-            namespace = XmlConstants.BUILDER.newNamespace("xsd", 
WSConstants.XSD_NS_URI);
-            String prefix = "xsd";
-            QName type = new QName(namespace.getName(), typeName, prefix);
-            
-                       addOutputParameter(new 
WSComponentApplicationParameter(outputDataObjectType.getName(),type 
,outputDataObjectType.getName(), outputDataObjectType.getValue()));
+                       addOutputParameter(new 
WSComponentApplicationParameter(outputDataObjectType.getName(),
+                                       outputDataObjectType.getType() 
,outputDataObjectType.getName(), outputDataObjectType.getValue()));
                }
        }
        

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ws/WSComponentApplicationParameter.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ws/WSComponentApplicationParameter.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ws/WSComponentApplicationParameter.java
index d472991..9f505b2 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ws/WSComponentApplicationParameter.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ws/WSComponentApplicationParameter.java
@@ -21,41 +21,43 @@
 
 package org.apache.airavata.workflow.model.component.ws;
 
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
+
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.XmlValue;
-import javax.xml.namespace.QName;
 
 @XmlRootElement(name="Parameter")
 @XmlType(propOrder = {"name", "type", "description", "defaultValue", 
"applicationArgument", "inputOrder"})
 public class WSComponentApplicationParameter {
        private String name;
-       private QName type;
+//     private QName type;
        private String description;
        private String defaultValue;
        private String applicationArgument;
        private int inputOrder;
+       private DataType type;
 
        public WSComponentApplicationParameter() {
        }
 
-       public WSComponentApplicationParameter(String name, QName type, String 
description, String defaultValue) {
+       public WSComponentApplicationParameter(String name, DataType type, 
String description, String defaultValue) {
                this(name, type, description, defaultValue, "", -1);
        }
 
-       public WSComponentApplicationParameter(String name, QName type, String 
description, String defaultValue, int inputOrder) {
+       public WSComponentApplicationParameter(String name, DataType type, 
String description, String defaultValue, int inputOrder) {
                this(name, type, description, defaultValue, "", inputOrder);
        }
 
-       public WSComponentApplicationParameter(String name, QName type,
+       public WSComponentApplicationParameter(String name, DataType type,
                        String description, String defaultValue, String 
applicationArgument, int inputOrder) {
                this.name = name;
-               this.type = type;
                this.description = description;
                this.defaultValue = defaultValue;
                this.applicationArgument = applicationArgument;
                this.inputOrder = inputOrder;
+               this.type = type;
        }
 
        @XmlAttribute (required = true)
@@ -66,14 +68,6 @@ public class WSComponentApplicationParameter {
                this.name = name;
        }
 
-       @XmlAttribute (required = true)
-       public QName getType() {
-               return type;
-       }
-       public void setType(QName type) {
-               this.type = type;
-       }
-
        @XmlAttribute (required = false)
        public String getDescription() {
                return description;
@@ -107,4 +101,13 @@ public class WSComponentApplicationParameter {
        public void setInputOrder(int inputOrder) {
                this.inputOrder = inputOrder;
        }
+
+       @XmlAttribute
+       public DataType getType() {
+               return type;
+       }
+
+       public void setType(DataType type) {
+               this.type = type;
+       }
 }

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ws/WSComponentPort.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ws/WSComponentPort.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ws/WSComponentPort.java
index 49dbd26..b216b3d 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ws/WSComponentPort.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/component/ws/WSComponentPort.java
@@ -25,6 +25,7 @@ import javax.xml.namespace.QName;
 
 import org.apache.airavata.common.utils.WSConstants;
 import org.apache.airavata.common.utils.XMLUtil;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.workflow.model.component.ComponentDataPort;
 import org.apache.airavata.workflow.model.component.ComponentException;
 import org.apache.airavata.workflow.model.graph.ws.WSPort;
@@ -68,7 +69,7 @@ public class WSComponentPort extends ComponentDataPort {
      *            The type
      * @param component
      */
-    public WSComponentPort(String name, QName type, WSComponent component) {
+    public WSComponentPort(String name, DataType type, WSComponent component) {
         super(name);
         this.component = component;
         this.type = type;
@@ -195,7 +196,7 @@ public class WSComponentPort extends ComponentDataPort {
         if (typeQNameString == null) {
             // Type might be defined inline.
             // TODO fix this.
-            this.type = WSConstants.XSD_ANY_TYPE;
+//            this.type = WSConstants.XSD_ANY_TYPE;
         } else {
             
         }

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/gpel/script/WorkflowWSDL.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/gpel/script/WorkflowWSDL.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/gpel/script/WorkflowWSDL.java
index 1ad3a0d..d4dcac8 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/gpel/script/WorkflowWSDL.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/gpel/script/WorkflowWSDL.java
@@ -407,7 +407,7 @@ public class WorkflowWSDL {
 
     private XmlElement addParameter(Node node, SystemDataPort port, XmlElement 
sequence, XmlElement schema) {
         XmlElement element = sequence.addElement(WSConstants.ELEMENT_TAG);
-        element.setAttributeValue(WSConstants.NAME_ATTRIBUTE, node.getID());
+        /*element.setAttributeValue(WSConstants.NAME_ATTRIBUTE, node.getID());
 
         //
         // type
@@ -458,7 +458,7 @@ public class WorkflowWSDL {
         } else {
             // The normal case.
             setTypeAttribute(element, type);
-        }
+        }*/
         return element;
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/DataPort.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/DataPort.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/DataPort.java
index 02e5922..4266007 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/DataPort.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/DataPort.java
@@ -26,6 +26,7 @@ import java.util.List;
 import javax.xml.namespace.QName;
 
 import com.google.gson.JsonObject;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.workflow.model.graph.impl.PortImpl;
 import org.xmlpull.infoset.XmlElement;
 
@@ -64,7 +65,7 @@ public abstract class DataPort extends PortImpl {
     /**
      * @return The type QName.
      */
-    public abstract QName getType();
+    public abstract DataType getType();
 
     /**
      * @param port

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/EPRPort.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/EPRPort.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/EPRPort.java
index fd86577..09d3fda 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/EPRPort.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/EPRPort.java
@@ -21,9 +21,8 @@
 
 package org.apache.airavata.workflow.model.graph;
 
-import javax.xml.namespace.QName;
-
 import org.apache.airavata.common.utils.WSConstants;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.xmlpull.infoset.XmlElement;
 
 public class EPRPort extends DataPort {
@@ -59,8 +58,8 @@ public class EPRPort extends DataPort {
      * @see org.apache.airavata.workflow.model.graph.DataPort#getType()
      */
     @Override
-    public QName getType() {
-        return WSConstants.XSD_ANY_TYPE;
+    public DataType getType() {
+        return DataType.STRING;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/amazon/InstanceDataPort.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/amazon/InstanceDataPort.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/amazon/InstanceDataPort.java
index e3f7426..80a8e26 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/amazon/InstanceDataPort.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/amazon/InstanceDataPort.java
@@ -25,6 +25,7 @@ import javax.xml.namespace.QName;
 
 import com.google.gson.JsonObject;
 import org.apache.airavata.common.utils.WSConstants;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.workflow.model.graph.DataPort;
 import org.apache.airavata.workflow.model.graph.GraphException;
 import org.apache.airavata.workflow.model.graph.GraphSchema;
@@ -60,8 +61,8 @@ public class InstanceDataPort extends DataPort {
      * @see org.apache.airavata.workflow.model.graph.DataPort#getType()
      */
     @Override
-    public QName getType() {
-        return STRING_TYPE;
+    public DataType getType() {
+        return DataType.STRING;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/dynamic/DynamicPort.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/dynamic/DynamicPort.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/dynamic/DynamicPort.java
index 50a297b..6b4a3ad 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/dynamic/DynamicPort.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/dynamic/DynamicPort.java
@@ -21,8 +21,7 @@
 
 package org.apache.airavata.workflow.model.graph.dynamic;
 
-import javax.xml.namespace.QName;
-
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.workflow.model.component.ComponentPort;
 import 
org.apache.airavata.workflow.model.component.dynamic.DynamicComponentPort;
 import org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException;
@@ -56,7 +55,7 @@ public class DynamicPort extends DataPort {
      * @return The typeQName
      */
     @Override
-    public QName getType() {
+    public DataType getType() {
         return getComponentPort().getType();
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/ConstantNode.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/ConstantNode.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/ConstantNode.java
index 3b0aebe..b69fcae 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/ConstantNode.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/ConstantNode.java
@@ -26,6 +26,7 @@ import java.util.List;
 import javax.xml.namespace.QName;
 
 import org.apache.airavata.common.utils.WSConstants;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.workflow.model.component.Component;
 import org.apache.airavata.workflow.model.component.system.ConstantComponent;
 import org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException;
@@ -48,7 +49,7 @@ public class ConstantNode extends SystemNode {
 
     private static final Logger logger = 
LoggerFactory.getLogger(ConstantNode.class);
 
-    private QName type;
+    private DataType type;
 
     private Object value;
 
@@ -114,7 +115,7 @@ public class ConstantNode extends SystemNode {
      * 
      * @return The type of the parameter (e.g. string, int)
      */
-    public QName getType() {
+    public DataType getType() {
         return this.type;
     }
 
@@ -185,7 +186,7 @@ public class ConstantNode extends SystemNode {
 
         if (edge instanceof DataEdge) {
             DataPort toDataPort = (DataPort) toPort;
-            QName toType = toDataPort.getType();
+            DataType toType = toDataPort.getType();
 
             List edges = getEdges();
             if (edges.size() == 1) {
@@ -243,7 +244,8 @@ public class ConstantNode extends SystemNode {
         if (typeElement != null) {
             String qnameText = typeElement.requiredText();
             if (qnameText != null && !qnameText.equals("")) {
-                this.type = QName.valueOf(qnameText);
+                this.type = DataType.valueOf(qnameText);
+//                this.type = QName.valueOf(qnameText);
             }
         }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/DifferedInputNode.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/DifferedInputNode.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/DifferedInputNode.java
index ea18bc0..5ef7b1c 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/DifferedInputNode.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/DifferedInputNode.java
@@ -25,6 +25,7 @@ import java.util.List;
 import javax.xml.namespace.QName;
 
 import org.apache.airavata.common.utils.WSConstants;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.workflow.model.component.Component;
 import 
org.apache.airavata.workflow.model.component.system.DifferedInputComponent;
 import org.apache.airavata.workflow.model.component.system.InputComponent;
@@ -89,9 +90,9 @@ public class DifferedInputNode extends ParameterNode {
      * @return The type of the parameter (e.g. string, int)
      */
     @Override
-    public QName getParameterType() {
+    public DataType getParameterType() {
         List<DataEdge> edges = getEdges();
-        QName parameterType = super.getParameterType();
+        DataType parameterType = super.getParameterType();
         if (parameterType == null && getEdges().size() > 0) {
             // This happens when the graph XML doesn't have parameterType.
             DataEdge edge = edges.get(0);
@@ -172,7 +173,7 @@ public class DifferedInputNode extends ParameterNode {
         if (edge instanceof DataEdge) {
             DataEdge dataEdge = (DataEdge) edge;
             DataPort toPort = dataEdge.getToPort();
-            QName toType = toPort.getType();
+            DataType toType = toPort.getType();
 
             List<DataEdge> edges = getEdges();
             if (edges.size() == 1) {
@@ -185,7 +186,7 @@ public class DifferedInputNode extends ParameterNode {
                 }
             } else if (edges.size() > 1) {
                 // Not the first edge.
-                QName parameterType = getParameterType();
+                DataType parameterType = getParameterType();
                 if (!toType.equals(WSConstants.XSD_ANY_TYPE)
                         && !parameterType.equals(toType)) {
                     throw new GraphException(
@@ -225,7 +226,7 @@ public class DifferedInputNode extends ParameterNode {
             Edge edge = edges.get(0);
             Port toPort = edge.getToPort();
             WSPort toWsPort = (WSPort) toPort;
-            QName toType = toWsPort.getType();
+            DataType toType = toWsPort.getType();
             setParameterType(toType);
 
             if (!isConfigured()) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/EndBlockNode.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/EndBlockNode.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/EndBlockNode.java
index c6bb3f9..c515f63 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/EndBlockNode.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/EndBlockNode.java
@@ -26,6 +26,7 @@ import java.util.List;
 import javax.xml.namespace.QName;
 
 import org.apache.airavata.common.utils.WSConstants;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.workflow.model.component.ComponentDataPort;
 import org.apache.airavata.workflow.model.component.system.EndBlockComponent;
 import org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException;
@@ -140,11 +141,11 @@ public class EndBlockNode extends SystemNode {
         DataPort inputPort2 = inputPorts.get(size + index);
         DataPort outputPort = outputPorts.get(index);
 
-        QName inputType1 = inputPort1.getType();
-        QName inputType2 = inputPort2.getType();
-        QName outputType = outputPort.getType();
+        DataType inputType1 = inputPort1.getType();
+        DataType inputType2 = inputPort2.getType();
+        DataType outputType = outputPort.getType();
 
-        QName portType = port.getType();
+        DataType portType = port.getType();
         if (portType == null || portType.equals(WSConstants.XSD_ANY_TYPE)) {
             // Do nothing
             return;

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/EndDoWhileNode.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/EndDoWhileNode.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/EndDoWhileNode.java
index f7cffd4..6c763aa 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/EndDoWhileNode.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/EndDoWhileNode.java
@@ -26,6 +26,7 @@ import java.util.List;
 import javax.xml.namespace.QName;
 
 import org.apache.airavata.common.utils.WSConstants;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.workflow.model.component.ComponentDataPort;
 import org.apache.airavata.workflow.model.component.system.EndDoWhileComponent;
 import org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException;
@@ -140,8 +141,8 @@ public class EndDoWhileNode extends SystemNode {
             DataPort fromDataPort = (DataPort) fromPort;
             DataPort toDataPort = (DataPort) toPort;
 
-            QName fromType = fromDataPort.getType();
-            QName toType = toDataPort.getType();
+            DataType fromType = fromDataPort.getType();
+            DataType toType = toDataPort.getType();
 
             if (fromDataPort.getNode() == this) {
                 if (!(toType == null || 
toType.equals(WSConstants.XSD_ANY_TYPE))) {
@@ -180,10 +181,10 @@ public class EndDoWhileNode extends SystemNode {
         SystemDataPort inputPort = (SystemDataPort) inputPorts.get(index);
         SystemDataPort outputPort = (SystemDataPort) outputPorts.get(index);
 
-        QName inputType = inputPort.getType();
-        QName outputType = outputPort.getType();
+        DataType inputType = inputPort.getType();
+        DataType outputType = outputPort.getType();
 
-        QName portType = port.getType();
+        DataType portType = port.getType();
         if (portType == null || portType.equals(WSConstants.XSD_ANY_TYPE)) {
             // Do nothing
             return;

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/EndForEachNode.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/EndForEachNode.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/EndForEachNode.java
index 6727406..feb07c0 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/EndForEachNode.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/EndForEachNode.java
@@ -26,6 +26,7 @@ import java.util.List;
 import javax.xml.namespace.QName;
 
 import org.apache.airavata.common.utils.WSConstants;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.workflow.model.component.ComponentDataPort;
 import org.apache.airavata.workflow.model.component.system.EndForEachComponent;
 import org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException;
@@ -140,8 +141,8 @@ public class EndForEachNode extends SystemNode {
             DataPort fromDataPort = (DataPort) fromPort;
             DataPort toDataPort = (DataPort) toPort;
 
-            QName fromType = fromDataPort.getType();
-            QName toType = toDataPort.getType();
+            DataType fromType = fromDataPort.getType();
+            DataType toType = toDataPort.getType();
 
             if (fromDataPort.getNode() == this) {
                 if (!(toType == null || 
toType.equals(WSConstants.XSD_ANY_TYPE))) {
@@ -180,10 +181,10 @@ public class EndForEachNode extends SystemNode {
         SystemDataPort inputPort = (SystemDataPort) inputPorts.get(index);
         SystemDataPort outputPort = (SystemDataPort) outputPorts.get(index);
 
-        QName inputType = inputPort.getType();
-        QName outputType = outputPort.getType();
+        DataType inputType = inputPort.getType();
+        DataType outputType = outputPort.getType();
 
-        QName portType = port.getType();
+        DataType portType = port.getType();
         if (portType == null || portType.equals(WSConstants.XSD_ANY_TYPE)) {
             // Do nothing
             return;

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/EndifNode.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/EndifNode.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/EndifNode.java
index d397887..63c26d6 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/EndifNode.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/EndifNode.java
@@ -26,6 +26,7 @@ import java.util.List;
 import javax.xml.namespace.QName;
 
 import org.apache.airavata.common.utils.WSConstants;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.workflow.model.component.ComponentDataPort;
 import org.apache.airavata.workflow.model.component.system.EndifComponent;
 import org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException;
@@ -141,11 +142,11 @@ public class EndifNode extends SystemNode {
         DataPort inputPort2 = inputPorts.get(size + index);
         DataPort outputPort = outputPorts.get(index);
 
-        QName inputType1 = inputPort1.getType();
-        QName inputType2 = inputPort2.getType();
-        QName outputType = outputPort.getType();
+        DataType inputType1 = inputPort1.getType();
+        DataType inputType2 = inputPort2.getType();
+        DataType outputType = outputPort.getType();
 
-        QName portType = port.getType();
+        DataType portType = port.getType();
         if (portType == null || portType.equals(WSConstants.XSD_ANY_TYPE)) {
             // Do nothing
             return;

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/ForEachNode.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/ForEachNode.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/ForEachNode.java
index d102260..86dcdef 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/ForEachNode.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/ForEachNode.java
@@ -26,6 +26,7 @@ import java.util.List;
 import javax.xml.namespace.QName;
 
 import org.apache.airavata.common.utils.WSConstants;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.workflow.model.component.ComponentDataPort;
 import org.apache.airavata.workflow.model.component.system.ForEachComponent;
 import org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException;
@@ -155,8 +156,8 @@ public class ForEachNode extends SystemNode implements 
PortAddable{
             DataPort fromDataPort = (DataPort) fromPort;
             DataPort toDataPort = (DataPort) toPort;
 
-            QName fromType = fromDataPort.getType();
-            QName toType = toDataPort.getType();
+            DataType fromType = fromDataPort.getType();
+            DataType toType = toDataPort.getType();
 
             if (fromDataPort.getNode() == this) {
                 if (!(toType == null || 
toType.equals(WSConstants.XSD_ANY_TYPE))) {
@@ -199,10 +200,10 @@ public class ForEachNode extends SystemNode implements 
PortAddable{
         SystemDataPort inputPort = (SystemDataPort) inputPorts.get(index);
         SystemDataPort outputPort = (SystemDataPort) outputPorts.get(index);
 
-        QName inputType = inputPort.getType();
-        QName outputType = outputPort.getType();
+        DataType inputType = inputPort.getType();
+        DataType outputType = outputPort.getType();
 
-        QName portType = port.getType();
+        DataType portType = port.getType();
         if (portType == null || portType.equals(WSConstants.XSD_ANY_TYPE)) {
             // Do nothing
             return;

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/InputNode.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/InputNode.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/InputNode.java
index 745ad28..ffe017f 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/InputNode.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/InputNode.java
@@ -28,6 +28,7 @@ import javax.xml.namespace.QName;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import org.apache.airavata.common.utils.WSConstants;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.workflow.model.component.Component;
 import org.apache.airavata.workflow.model.component.system.InputComponent;
 import org.apache.airavata.workflow.model.component.ws.WSComponentPort;
@@ -60,6 +61,8 @@ public class InputNode extends ParameterNode {
 
     private int inputOrder;
 
+    private DataType dataType;
+
     /**
      * Creates an InputNode.
      * 
@@ -109,6 +112,14 @@ public class InputNode extends ParameterNode {
         this.inputOrder = inputOrder;
     }
 
+    public DataType getDataType() {
+        return dataType;
+    }
+
+    public void setDataType(DataType dataType) {
+        this.dataType = dataType;
+    }
+
     /**
      * @see 
org.apache.airavata.workflow.model.graph.impl.NodeImpl#getComponent()
      */
@@ -129,14 +140,14 @@ public class InputNode extends ParameterNode {
      * @return The type of the parameter (e.g. string, int)
      */
     @Override
-    public QName getParameterType() {
+    public DataType getParameterType() {
         List<DataEdge> edges = getEdges();
-        QName parameterType = super.getParameterType();
+        DataType parameterType = super.getParameterType();
         if (parameterType == null && getEdges().size() > 0) {
             // This happens when the graph XML doesn't have parameterType.
             DataEdge edge = edges.get(0);
             DataPort toPort = edge.getToPort();
-            parameterType = toPort.getType();
+//            parameterType = toPort.getType();
         }
         return parameterType;
     }
@@ -210,7 +221,7 @@ public class InputNode extends ParameterNode {
         if (edge instanceof DataEdge) {
             DataEdge dataEdge = (DataEdge) edge;
             DataPort toPort = dataEdge.getToPort();
-            QName toType = toPort.getType();
+            DataType toType = toPort.getType();
 
             List<DataEdge> edges = getEdges();
             if (edges.size() == 1) {
@@ -223,7 +234,7 @@ public class InputNode extends ParameterNode {
                 }
             } else if (edges.size() > 1) {
                 // Not the first edge.
-                QName parameterType = getParameterType();
+                DataType parameterType = getParameterType();
                 if (!toType.equals(WSConstants.XSD_ANY_TYPE) && 
!parameterType.equals(toType)) {
                     throw new GraphException("Cannot connect ports with 
different types.");
                 }
@@ -260,7 +271,7 @@ public class InputNode extends ParameterNode {
             Edge edge = edges.get(0);
             Port toPort = edge.getToPort();
             WSPort toWsPort = (WSPort) toPort;
-            QName toType = toWsPort.getType();
+            DataType toType = toWsPort.getType();
             setParameterType(toType);
 
             if (!isConfigured()) {
@@ -386,6 +397,7 @@ public class InputNode extends ParameterNode {
         setMetadata(componentPort.getAppinfo());
         setApplicationArgument(componentPort.getApplicationArgument());
         setInputOrder(componentPort.getInputOrder());
+        setDataType(componentPort.getType());
     }
 
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/OutputNode.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/OutputNode.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/OutputNode.java
index 6e58200..f69c86b 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/OutputNode.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/OutputNode.java
@@ -26,6 +26,7 @@ import java.util.List;
 import javax.xml.namespace.QName;
 
 import com.google.gson.JsonObject;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.workflow.model.component.Component;
 import org.apache.airavata.workflow.model.component.system.OutputComponent;
 import org.apache.airavata.workflow.model.component.ws.WSComponentPort;
@@ -70,9 +71,9 @@ public class OutputNode extends ParameterNode {
      * @return The type of the parameter (e.g. string, int)
      */
     @Override
-    public QName getParameterType() {
+    public DataType getParameterType() {
         List<DataEdge> edges = getEdges();
-        QName parameterType = super.getParameterType();
+        DataType parameterType = super.getParameterType();
         if (parameterType == null && getEdges().size() > 0) {
             Edge edge = edges.get(0);
             WSPort fromPort = (WSPort) edge.getFromPort();
@@ -131,7 +132,7 @@ public class OutputNode extends ParameterNode {
 
         if (edge instanceof DataEdge) {
             DataPort fromDataPort = (DataPort) fromPort;
-            QName fromType = fromDataPort.getType();
+            DataType fromType = fromDataPort.getType();
 
             List<DataEdge> edges = getEdges();
             if (edges.size() == 1) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/ParameterNode.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/ParameterNode.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/ParameterNode.java
index 62ad244..42aaabb 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/ParameterNode.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/ParameterNode.java
@@ -30,6 +30,7 @@ import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import org.apache.airavata.common.exception.UtilsException;
 import org.apache.airavata.common.utils.XMLUtil;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.workflow.model.graph.DataEdge;
 import org.apache.airavata.workflow.model.graph.DataPort;
 import org.apache.airavata.workflow.model.graph.Graph;
@@ -54,7 +55,7 @@ abstract public class ParameterNode extends SystemNode {
     /**
      * Type of the parameter (e.g. xsd:string, xsd:int)
      */
-    private QName parameterType;
+    private DataType parameterType;
 
     private String configuredName;
 
@@ -100,7 +101,7 @@ abstract public class ParameterNode extends SystemNode {
     /**
      * @param parameterType
      */
-    public void setParameterType(QName parameterType) {
+    public void setParameterType(DataType parameterType) {
         this.parameterType = parameterType;
     }
 
@@ -109,7 +110,7 @@ abstract public class ParameterNode extends SystemNode {
      * 
      * @return The type of the parameter (e.g. string, int)
      */
-    public QName getParameterType() {
+    public DataType getParameterType() {
         return this.parameterType;
     }
 
@@ -264,7 +265,7 @@ abstract public class ParameterNode extends SystemNode {
         if (typeElement != null) {
             String qnameText = typeElement.requiredText();
             if (qnameText != null && !qnameText.equals("")) {
-                this.parameterType = QName.valueOf(qnameText);
+                this.parameterType = DataType.valueOf(qnameText);
             }
         }
         XmlElement metadataElement = configElement.element(null, METADATA_TAG);
@@ -290,7 +291,7 @@ abstract public class ParameterNode extends SystemNode {
         }
         JsonElement typeElement = configObject.get(DATA_TYPE_QNAME_TAG);
         if (typeElement != null) {
-            this.parameterType = QName.valueOf(typeElement.getAsString());
+            this.parameterType = DataType.valueOf(typeElement.getAsString());
         }
         JsonElement metadataElement = configObject.get(METADATA_TAG);
         if (metadataElement != null) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/S3InputNode.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/S3InputNode.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/S3InputNode.java
index 13c6257..a51849c 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/S3InputNode.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/S3InputNode.java
@@ -26,6 +26,7 @@ import java.util.List;
 import javax.xml.namespace.QName;
 
 import org.apache.airavata.common.utils.WSConstants;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.workflow.model.component.Component;
 import org.apache.airavata.workflow.model.component.system.S3InputComponent;
 import org.apache.airavata.workflow.model.component.ws.WSComponentPort;
@@ -89,9 +90,9 @@ public class S3InputNode extends InputNode {
      * @return The type of the parameter (e.g. string, int)
      */
     @Override
-    public QName getParameterType() {
+    public DataType getParameterType() {
         List<DataEdge> edges = getEdges();
-        QName parameterType = super.getParameterType();
+        DataType parameterType = super.getParameterType();
         if (parameterType == null && getEdges().size() > 0) {
             // This happens when the graph XML doesn't have parameterType.
             DataEdge edge = edges.get(0);
@@ -170,7 +171,7 @@ public class S3InputNode extends InputNode {
         if (edge instanceof DataEdge) {
             DataEdge dataEdge = (DataEdge) edge;
             DataPort toPort = dataEdge.getToPort();
-            QName toType = toPort.getType();
+            DataType toType = toPort.getType();
 
             List<DataEdge> edges = getEdges();
             if (edges.size() == 1) {
@@ -183,7 +184,7 @@ public class S3InputNode extends InputNode {
                 }
             } else if (edges.size() > 1) {
                 // Not the first edge.
-                QName parameterType = getParameterType();
+                DataType parameterType = getParameterType();
                 if (!toType.equals(WSConstants.XSD_ANY_TYPE) && 
!parameterType.equals(toType)) {
                     throw new GraphException("Cannot connect ports with 
different types.");
                 }
@@ -220,7 +221,7 @@ public class S3InputNode extends InputNode {
             Edge edge = edges.get(0);
             Port toPort = edge.getToPort();
             WSPort toWsPort = (WSPort) toPort;
-            QName toType = toWsPort.getType();
+            DataType toType = toWsPort.getType();
             setParameterType(toType);
 
             if (!isConfigured()) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/SystemDataPort.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/SystemDataPort.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/SystemDataPort.java
index 6f0dcba..2967f5c 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/SystemDataPort.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/SystemDataPort.java
@@ -25,6 +25,7 @@ import javax.xml.namespace.QName;
 
 import com.google.gson.JsonObject;
 import org.apache.airavata.common.utils.WSConstants;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.workflow.model.component.ws.WSComponentPort;
 import org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException;
 import org.apache.airavata.workflow.model.graph.DataEdge;
@@ -38,7 +39,7 @@ public class SystemDataPort extends DataPort {
 
     private int arrayDimension;
 
-    private QName type;
+    private DataType type;
 
     private WSComponentPort wsComponentPort;
 
@@ -77,7 +78,7 @@ public class SystemDataPort extends DataPort {
      * @return The type QName.
      */
     @Override
-    public QName getType() {
+    public DataType getType() {
         return this.type;
     }
 
@@ -123,7 +124,7 @@ public class SystemDataPort extends DataPort {
      * @throws GraphException
      */
     public void copyType(DataPort port, int arrayIncrement) throws 
GraphException {
-        QName newType = port.getType();
+        DataType newType = port.getType();
         if (this.type != newType) {
             this.type = newType;
             if (port instanceof WSPort) {
@@ -160,7 +161,7 @@ public class SystemDataPort extends DataPort {
      */
     public void resetType() {
         this.arrayDimension = 0;
-        this.type = WSConstants.XSD_ANY_TYPE;
+        this.type = DataType.STRING;
         this.wsComponentPort = null;
     }
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/db456997/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/SystemNode.java
----------------------------------------------------------------------
diff --git 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/SystemNode.java
 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/SystemNode.java
index ff07936..eb83b6b 100644
--- 
a/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/SystemNode.java
+++ 
b/modules/workflow-model/workflow-model-core/src/main/java/org/apache/airavata/workflow/model/graph/system/SystemNode.java
@@ -26,6 +26,7 @@ import java.util.List;
 import javax.xml.namespace.QName;
 
 import com.google.gson.JsonObject;
+import org.apache.airavata.model.appcatalog.appinterface.DataType;
 import org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException;
 import org.apache.airavata.workflow.model.graph.DataEdge;
 import org.apache.airavata.workflow.model.graph.DataPort;
@@ -84,8 +85,8 @@ public abstract class SystemNode extends NodeImpl {
             DataPort fromDataPort = (DataPort) fromPort;
             DataPort toDataPort = (DataPort) toPort;
 
-            QName fromType = fromDataPort.getType();
-            QName toType = toDataPort.getType();
+            DataType fromType = fromDataPort.getType();
+            DataType toType = toDataPort.getType();
 
             if (fromDataPort.getNode() == this) {
                 // setType() propagates the change to the whole workflow.

Reply via email to