in taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/ExternalToolActivityHealthChecker.java [70:178]
public boolean updateLocation(ExternalToolActivityConfigurationBean configuration) {
InvocationGroup invocationGroup = configuration.getInvocationGroup();
String invocationGroupSpecification = null;
String invocationMechanismSpecification = null;
if (invocationGroup != null) {
if (invocationGroupManager.containsGroup(invocationGroup)) {
return true;
}
InvocationGroup replacementGroup = invocationGroupManager.getGroupReplacement(invocationGroup);
if (replacementGroup != null) {
configuration.setInvocationGroup(replacementGroup);
return true;
}
invocationGroupSpecification = invocationGroup.getName() + ":" + invocationGroup.getMechanismXML();
InvocationGroup importedGroup = invocationGroupManager.getImportedGroup(invocationGroupSpecification);
if (importedGroup != null) {
configuration.setInvocationGroup(importedGroup);
return true;
}
}
InvocationMechanism invocationMechanism = configuration.getMechanism();
if (invocationMechanism != null) {
if (invocationGroupManager.containsMechanism(invocationMechanism)) {
return true;
}
}
String mechanismXML = null;
String mechanismName = null;
if (invocationGroup != null) {
mechanismXML = invocationGroup.getMechanismXML();
mechanismName = invocationGroup.getMechanismName();
} else {
mechanismXML = configuration.getMechanismXML();
mechanismName = configuration.getMechanismName();
}
invocationMechanismSpecification = mechanismName + ":" + mechanismXML;
InvocationMechanism foundMechanism = null;
HashSet<String> mechanismNames = new HashSet<String>();
for (InvocationMechanism mechanism : invocationGroupManager.getMechanisms()) {
mechanismNames.add(mechanism.getName());
if (mechanism.getName().equals(mechanismName) && (mechanism.getXML().equals(mechanismXML))) {
if (invocationMechanism != mechanism) {
foundMechanism = mechanism;
}
}
}
if (foundMechanism == null) {
foundMechanism = invocationGroupManager.getMechanismReplacement(invocationMechanismSpecification);
if (foundMechanism == null) {
foundMechanism = invocationGroupManager.getImportedMechanism(invocationMechanismSpecification);
}
}
if (foundMechanism != null) {
if (invocationGroup != null) {
invocationGroup.setMechanism(foundMechanism);
// Cannot return because invocationGroup is still unknown
} else {
configuration.setMechanism(foundMechanism);
return true;
}
}
if (foundMechanism == null) {
InvocationMechanism createdMechanism;
if (invocationGroup != null) {
invocationGroup.convertDetailsToMechanism();
createdMechanism = invocationGroup.getMechanism();
} else {
configuration.convertDetailsToMechanism();
createdMechanism = configuration.getMechanism();
}
String chosenMechanismName = Tools.uniqueObjectName(mechanismName,
mechanismNames);
createdMechanism.setName(chosenMechanismName);
if (invocationGroup != null) {
invocationGroup.setMechanism(createdMechanism);
} else {
configuration.setMechanism(createdMechanism);
}
invocationGroupManager.importMechanism(invocationMechanismSpecification, createdMechanism);
if (invocationGroup == null) {
return true;
}
}
InvocationGroup foundGroup = null;
HashSet<String> groupNames = new HashSet<String>();
for (InvocationGroup group : invocationGroupManager.getInvocationGroups()) {
groupNames.add(group.getName());
if (group.getName().equals(invocationGroup.getName()) && (group.getMechanism() == invocationGroup.getMechanism())) {
foundGroup = group;
}
}
if (foundGroup != null) {
configuration.setInvocationGroup(foundGroup);
return true;
}
invocationGroup.setName(Tools.uniqueObjectName(invocationGroup.getName(), groupNames));
invocationGroupManager.importInvocationGroup(invocationGroupSpecification, invocationGroup);
return true;
}