private OMElement getProcessDefinition(ProcessConf pConf) throws ProcessManagementException {
if (pConf == null) {
String errMsg = "Process configuration cannot be null.";
log.error(errMsg);
throw new ProcessManagementException(errMsg);
}
String bpelDoc = pConf.getBpelDocument();
List<File> files = pConf.getFiles();
for (final File file : files) {
if (file.getPath().endsWith(bpelDoc) ||
file.getPath().endsWith(bpelDoc.replaceAll("/", "\\\\"))) {
XMLStreamReader reader;
FileInputStream fis = null;
OMElement bpelDefinition;
try {
fis = new FileInputStream(file);
XMLInputFactory xif = XMLInputFactory.newInstance();
reader = xif.createXMLStreamReader(fis);
StAXOMBuilder builder = new StAXOMBuilder(reader);
bpelDefinition = builder.getDocumentElement();
bpelDefinition.build();
} catch (XMLStreamException e) {
String errMsg = "XML stream reader exception: " + file.getAbsolutePath();
log.error(errMsg, e);
throw new ProcessManagementException(errMsg, e);
} catch (FileNotFoundException e) {
String errMsg = "BPEL File reading exception: " + file.getAbsolutePath();
log.error(errMsg, e);
throw new ProcessManagementException(errMsg, e);
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
log.warn("Cannot close file input stream.", e);
}
}
}
return bpelDefinition;
}
}
String errMsg = "Process Definition for: " + pConf.getProcessId() + " not found";
log.error(errMsg);
throw new ProcessManagementException(errMsg);
}