Search in sources :

Example 6 with WSComponent

use of org.apache.airavata.workflow.model.component.ws.WSComponent in project airavata by apache.

the class ComponentSelector method expandTreeLeaf.

private void expandTreeLeaf(ComponentTreeNode selectedNode, List<? extends Component> components) {
    ComponentReference componentReference = selectedNode.getComponentReference();
    ComponentTreeNode newNode = new ComponentTreeNode(componentReference.getName());
    ComponentTreeNode parent = (ComponentTreeNode) selectedNode.getParent();
    int index = this.treeModel.getIndexOfChild(parent, selectedNode);
    this.treeModel.removeNodeFromParent(selectedNode);
    this.treeModel.insertNodeInto(newNode, parent, index);
    for (Component component : components) {
        WSComponent wsComponent = (WSComponent) component;
        String operationName = wsComponent.getOperationName();
        ComponentOperationReference reference = new ComponentOperationReference(operationName, wsComponent);
        ComponentTreeNode child = new ComponentTreeNode(reference);
        this.treeModel.addNodeInto(child, newNode);
    }
    // expand
    TreeNode[] path = newNode.getPath();
    this.tree.expandPath(new TreePath(path));
}
Also used : ComponentOperationReference(org.apache.airavata.workflow.model.component.ComponentOperationReference) TreePath(javax.swing.tree.TreePath) TreeNode(javax.swing.tree.TreeNode) ComponentReference(org.apache.airavata.workflow.model.component.ComponentReference) WSComponent(org.apache.airavata.workflow.model.component.ws.WSComponent) WSComponent(org.apache.airavata.workflow.model.component.ws.WSComponent) Component(org.apache.airavata.workflow.model.component.Component) XBayaComponent(org.apache.airavata.xbaya.ui.widgets.XBayaComponent) Point(java.awt.Point)

Example 7 with WSComponent

use of org.apache.airavata.workflow.model.component.ws.WSComponent in project airavata by apache.

the class WebComponentRegistry method addComponents.

private void addComponents(String name) {
    try {
        URL wsdlUrl = new URL(this.url, name);
        logger.debug("WSDL URL: " + wsdlUrl);
        String wsdlString = IOUtil.readToString(wsdlUrl.openStream());
        logger.debug("WSDL: " + wsdlString);
        List<WSComponent> components = WSComponentFactory.createComponents(wsdlString);
        addComponents(name, components);
    } catch (MalformedURLException e) {
        // Ignore
        logger.error(e.getMessage(), e);
    } catch (IOException e) {
        // Ignore
        logger.error(e.getMessage(), e);
    } catch (RuntimeException e) {
        logger.error(e.getMessage(), e);
    }
}
Also used : MalformedURLException(java.net.MalformedURLException) WSComponent(org.apache.airavata.workflow.model.component.ws.WSComponent) IOException(java.io.IOException) URL(java.net.URL)

Example 8 with WSComponent

use of org.apache.airavata.workflow.model.component.ws.WSComponent in project airavata by apache.

the class WSNode method parse.

protected void parse(JsonObject nodeObject) {
    super.parse(nodeObject);
    JsonObject applicationObject = nodeObject.getAsJsonObject("Application");
    WSComponentApplication application = WSComponentApplication.parse(applicationObject);
    try {
        setComponent(new WSComponent(application));
    } catch (ComponentException e) {
        log.error(e.getMessage(), e);
    }
}
Also used : WSComponent(org.apache.airavata.workflow.model.component.ws.WSComponent) ComponentException(org.apache.airavata.workflow.model.component.ComponentException) JsonObject(com.google.gson.JsonObject) WSComponentApplication(org.apache.airavata.workflow.model.component.ws.WSComponentApplication)

Example 9 with WSComponent

use of org.apache.airavata.workflow.model.component.ws.WSComponent in project airavata by apache.

the class WSNode method parse.

/**
 * @see org.apache.airavata.workflow.model.graph.impl.NodeImpl#parse(org.xmlpull.infoset.XmlElement)
 */
@Override
protected void parse(XmlElement nodeElement) throws GraphException {
    super.parse(nodeElement);
    XmlElement element = nodeElement.element(null, "Application");
    WSComponentApplication application = WSComponentApplication.parse(element);
    try {
        setComponent(new WSComponent(application));
    } catch (ComponentException e) {
        log.error(e.getMessage(), e);
    }
// XmlElement wsdlElement = nodeElement.element(null, GraphSchema.NODE_WSDL_QNAME_TAG);
// if (wsdlElement != null) {
// this.wsdlID = wsdlElement.requiredText();
// // String wsdlQNameString = wsdlElement.requiredText();
// // this.wsdlQName = QName.valueOf(wsdlQNameString);
// }
// 
// XmlElement portTypeElement = nodeElement.element(null, GraphSchema.NODE_WSDL_PORT_TYPE_TAG);
// if (portTypeElement != null) {
// String portTypeString = portTypeElement.requiredText();
// this.portTypeQName = QName.valueOf(portTypeString);
// }
// 
// XmlElement operationElement = nodeElement.element(null, GraphSchema.NODE_WSDL_OPERATION_TAG);
// if (operationElement != null) {
// this.operationName = operationElement.requiredText();
// }
}
Also used : WSComponent(org.apache.airavata.workflow.model.component.ws.WSComponent) ComponentException(org.apache.airavata.workflow.model.component.ComponentException) XmlElement(org.xmlpull.infoset.XmlElement) WSComponentApplication(org.apache.airavata.workflow.model.component.ws.WSComponentApplication)

Example 10 with WSComponent

use of org.apache.airavata.workflow.model.component.ws.WSComponent in project airavata by apache.

the class WorkflowModifier method createDifference.

/**
 * @return The workflow that needs to be executed.
 * @throws GraphException
 * @throws MonitorException
 */
public Workflow createDifference() throws GraphException, MonitorException {
    WSGraph originalGraph = this.modifiedWorkflow.getGraph();
    Workflow workflow = this.modifiedWorkflow.clone();
    String name = workflow.getName();
    name += " (diff)";
    workflow.setName(name);
    WSGraph graph = workflow.getGraph();
    // Remove the finished node.
    removeFinishedNodes(originalGraph, graph);
    Set<WSPort> originalFromPorts = getFinalOutputPorts(originalGraph, graph);
    // Create input nodes for unconnected input ports.
    createInputNodes(graph, originalFromPorts);
    // Set default values.
    for (WSPort originalFromPort : originalFromPorts) {
        // TODO handle the case that node is not WSNode.
        Node originalFromNode = originalFromPort.getNode();
        String fromNodeID = originalFromNode.getID();
        String output;
        if (originalFromNode instanceof InputNode) {
            // notification that includes the input of the workflow.
            output = getWorkflowInput(fromNodeID);
        } else if (originalFromNode instanceof WSNode) {
            // Retrieve input value from notification.
            WSComponent component = ((WSNode) originalFromNode).getComponent();
            String messageName = component.getOutputTypeName();
            String parameterName = originalFromPort.getComponentPort().getName();
            output = getOutput(fromNodeID, messageName, parameterName);
        } else {
            // This should not happen.
            throw new WorkflowRuntimeException(originalFromNode.getClass().getName());
        }
        Port originalToPort = originalFromPort.getToPorts().get(0);
        PortImpl toPort = graph.getPort(originalToPort.getID());
        InputNode inputNode = (InputNode) toPort.getFromNode();
        inputNode.setDefaultValue(output);
    }
    return workflow;
}
Also used : WSPort(org.apache.airavata.workflow.model.graph.ws.WSPort) InputNode(org.apache.airavata.workflow.model.graph.system.InputNode) WSNode(org.apache.airavata.workflow.model.graph.ws.WSNode) InputNode(org.apache.airavata.workflow.model.graph.system.InputNode) Node(org.apache.airavata.workflow.model.graph.Node) WSNode(org.apache.airavata.workflow.model.graph.ws.WSNode) Port(org.apache.airavata.workflow.model.graph.Port) WSPort(org.apache.airavata.workflow.model.graph.ws.WSPort) WSComponent(org.apache.airavata.workflow.model.component.ws.WSComponent) Workflow(org.apache.airavata.workflow.model.wf.Workflow) WorkflowRuntimeException(org.apache.airavata.workflow.model.exceptions.WorkflowRuntimeException) WSGraph(org.apache.airavata.workflow.model.graph.ws.WSGraph) PortImpl(org.apache.airavata.workflow.model.graph.impl.PortImpl)

Aggregations

WSComponent (org.apache.airavata.workflow.model.component.ws.WSComponent)13 Node (org.apache.airavata.workflow.model.graph.Node)6 WSNode (org.apache.airavata.workflow.model.graph.ws.WSNode)6 Component (org.apache.airavata.workflow.model.component.Component)4 DataPort (org.apache.airavata.workflow.model.graph.DataPort)3 InputNode (org.apache.airavata.workflow.model.graph.system.InputNode)3 IOException (java.io.IOException)2 ArrayList (java.util.ArrayList)2 ComponentException (org.apache.airavata.workflow.model.component.ComponentException)2 InstanceComponent (org.apache.airavata.workflow.model.component.amazon.InstanceComponent)2 TerminateInstanceComponent (org.apache.airavata.workflow.model.component.amazon.TerminateInstanceComponent)2 DynamicComponent (org.apache.airavata.workflow.model.component.dynamic.DynamicComponent)2 WSComponentApplication (org.apache.airavata.workflow.model.component.ws.WSComponentApplication)2 ControlPort (org.apache.airavata.workflow.model.graph.ControlPort)2 Port (org.apache.airavata.workflow.model.graph.Port)2 DynamicNode (org.apache.airavata.workflow.model.graph.dynamic.DynamicNode)2 EdgeImpl (org.apache.airavata.workflow.model.graph.impl.EdgeImpl)2 SubWorkflowNode (org.apache.airavata.workflow.model.graph.subworkflow.SubWorkflowNode)2 ConstantNode (org.apache.airavata.workflow.model.graph.system.ConstantNode)2 EndifNode (org.apache.airavata.workflow.model.graph.system.EndifNode)2