in taverna-scufl2-wfbundle/src/main/java/org/apache/taverna/scufl2/rdfxml/WorkflowBundleParser.java [76:134]
protected WorkflowBundle parseWorkflowBundle(
org.apache.taverna.scufl2.xml.WorkflowBundle wb, URI base)
throws ReaderException, IOException {
WorkflowBundle workflowBundle = new WorkflowBundle();
getParserState().push(workflowBundle);
try {
workflowBundle.setResources(getParserState().getUcfPackage());
if (wb.getName() != null)
workflowBundle.setName(wb.getName());
if (wb.getGlobalBaseURI() != null
&& wb.getGlobalBaseURI().getResource() != null)
workflowBundle.setGlobalBaseURI(base.resolve(wb
.getGlobalBaseURI().getResource()));
mapBean(base.resolve(wb.getAbout()), workflowBundle);
for (org.apache.taverna.scufl2.xml.WorkflowBundle.Workflow wfEntry : wb
.getWorkflow()) {
URI wfUri = base.resolve(wfEntry.getWorkflow().getAbout());
String resource = wfEntry.getWorkflow().getSeeAlso()
.getResource();
URI source = uriTools.relativePath(getParserState()
.getLocation(), base.resolve(resource));
workflowParser.readWorkflow(wfUri, source);
}
for (org.apache.taverna.scufl2.xml.WorkflowBundle.Profile pfEntry : wb
.getProfile()) {
URI wfUri = base.resolve(pfEntry.getProfile().getAbout());
String resource = pfEntry.getProfile().getSeeAlso()
.getResource();
URI source = uriTools.relativePath(getParserState()
.getLocation(), base.resolve(resource));
profileParser.readProfile(wfUri, source);
}
if (wb.getMainWorkflow() != null
&& wb.getMainWorkflow().getResource() != null) {
URI mainWfUri = base
.resolve(wb.getMainWorkflow().getResource());
Workflow mainWorkflow = (Workflow) resolveBeanUri(mainWfUri);
if (mainWorkflow == null)
throw new ReaderException("Unknown main workflow "
+ mainWfUri + ", got"
+ getParserState().getUriToBean().keySet());
workflowBundle.setMainWorkflow(mainWorkflow);
}
if (wb.getMainProfile() != null
&& wb.getMainProfile().getResource() != null) {
URI profileUri = base
.resolve(wb.getMainProfile().getResource());
org.apache.taverna.scufl2.api.profiles.Profile mainWorkflow = (org.apache.taverna.scufl2.api.profiles.Profile) resolveBeanUri(profileUri);
workflowBundle.setMainProfile(mainWorkflow);
}
// TAVERNA-71 workaround - naively find annotations
parseAnnotations(workflowBundle);
} finally {
getParserState().pop();
}
return workflowBundle;
}