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.
