in taverna-wsdl-activity-ui/src/main/java/org/apache/taverna/activities/wsdl/actions/AbstractAddXMLSplitterAction.java [87:133]
public void actionPerformed(ActionEvent ev) {
List<String> possibilities;
Map<String, TypeDescriptor> typeDescriptors;
try {
typeDescriptors = getTypeDescriptors();
} catch (UnknownOperationException ex) {
logger.error("Can't find operation for activity "
+ activity, ex);
return;
} catch (IOException | ParserConfigurationException | WSDLException | SAXException | JDOMException ex) {
logger.error("Can't read definition for activity "
+ activity, ex);
return;
}
typeDescriptors = filterDescriptors(typeDescriptors);
possibilities = new ArrayList<String>(typeDescriptors.keySet());
if (possibilities.isEmpty()) {
logger.warn("No type descriptors found for activity " + activity);
return;
}
Collections.sort(possibilities);
String portName = (String) JOptionPane.showInputDialog(owner,
"Select the port to add the splitter to",
"Add output XML splitter", JOptionPane.PLAIN_MESSAGE, null,
possibilities.toArray(), possibilities.get(0));
Workflow workflow = selectionManager.getSelectedWorkflow();
Profile profile = selectionManager.getSelectedProfile();
TypeDescriptor typeDescriptorForPort = typeDescriptors
.get(portName);
if (typeDescriptorForPort instanceof ArrayTypeDescriptor
|| typeDescriptorForPort instanceof ComplexTypeDescriptor) {
AddXMLSplitterEdit edit = new AddXMLSplitterEdit(workflow, profile,
activity, typeDescriptorForPort, portName, isInput());
try {
editManager.doDataflowEdit(workflow.getParent(), edit);
} catch (EditException ex) {
logger.error("Could not perform edit to add " + portName, ex);
}
} else {
logger.warn("Unknown typedescriptor for " + portName);
}
}