in taverna-scufl2-t2flow/src/main/java/org/apache/taverna/scufl2/translator/t2flow/defaultdispatchstack/LoopParser.java [89:137]
public Configuration parseConfiguration(T2FlowParser t2FlowParser,
ConfigBean configBean, ParserState parserState)
throws ReaderException {
LoopConfig loopConfig = unmarshallConfig(t2FlowParser, configBean,
"xstream", LoopConfig.class);
final Configuration c = new Configuration();
c.setType(scufl2Uri.resolve("Config"));
ObjectNode json = (ObjectNode) c.getJson();
json.put("runFirst", loopConfig.isRunFirst());
for (Property prop : loopConfig.getProperties().getProperty())
json.put(prop.getName(), prop.getValue());
String conditionXml = loopConfig.getConditionXML();
if (conditionXml == null)
// activity is unconfigured (bug in T2).
// Return c only if there are properties beyond "runFirst"
return json.size() > 1 ? c : null;
Activity conditionActivity = unmarshallXml(
parserState.getT2FlowParser(), conditionXml, Activity.class);
try {
ConditionalActivityParser internalParser = new ConditionalActivityParser(
parserState);
org.apache.taverna.scufl2.api.activity.Activity newActivity = internalParser
.parseActivity(conditionActivity);
String name = parserState.getCurrentProcessor().getName() + "-loop";
newActivity.setName(name);
parserState.getCurrentProfile().getActivities()
.addWithUniqueName(newActivity);
newActivity.setParent(parserState.getCurrentProfile());
Configuration newConfig = internalParser
.parseConfiguration(conditionActivity.getConfigBean());
newConfig.setName(name);
newConfig.setConfigures(newActivity);
parserState.getCurrentProfile().getConfigurations()
.addWithUniqueName(newConfig);
// URI uriActivity = uriTools.relativeUriForBean(newActivity, parserState.getCurrentProfile());
json.put("conditionActivity", newActivity.getName());
} catch (JAXBException e) {
throw new ReaderException("Can't parse conditional loop activity",
e);
}
return c;
}