*/
public void execute(String contextPath) {
log.debug("\n---------------------------" + "\n- Sending mail" +
"\n---------------------------");
try {
Parameters taskParameters = new Parameters();
String uri = getParameters().getParameter(PARAMETER_URI, "");
log.debug("\nURI: " + uri);
if (!uri.equals("")) {
// generate absolute URI from relative URI
if (!uri.startsWith("http://") && !uri.startsWith("ftp://") &&
!uri.startsWith("file://")) {
String absoluteUri = "http://127.0.0.1";
String serverPort = getParameters().getParameter(PARAMETER_SERVER_PORT, "");
if (!serverPort.equals("")) {
absoluteUri += (":" + Integer.parseInt(serverPort));
}
absoluteUri += (getParameters().getParameter(PARAMETER_CONTEXT_PREFIX) + File.separator +
getParameters().getParameter(PARAMETER_PUBLICATION_ID) + uri);
uri = absoluteUri;
}
Document document = DocumentHelper.readDocument(new URL(uri));
Element root = document.getDocumentElement();
NamespaceHelper helper = new NamespaceHelper(NAMESPACE_URI, "mail", document);
String[] keys = {
ELEMENT_SERVER, ELEMENT_FROM, ELEMENT_TO, ELEMENT_CC, ELEMENT_BCC,
ELEMENT_SUBJECT, ELEMENT_BODY
};
Element[] elements = helper.getChildren(root);
for (int i = 0; i < elements.length; i++) {
if (elements[i].getChildNodes().getLength() > 0) {
Node firstChild = elements[i].getChildNodes().item(0);
if (firstChild instanceof Text) {
Text text = (Text) firstChild;
String key = elements[i].getLocalName();
if (Arrays.asList(keys).contains(key)) {
taskParameters.setParameter(key, text.getNodeValue());
}
}
}
}
}
// task parameters have a higher priority than XML elements
taskParameters = taskParameters.merge(getParameters());
sendMail(taskParameters.getParameter(ELEMENT_SERVER),
taskParameters.getParameter(ELEMENT_FROM), taskParameters.getParameter(ELEMENT_TO),
taskParameters.getParameter(ELEMENT_CC, ""),
taskParameters.getParameter(ELEMENT_BCC, ""),
taskParameters.getParameter(ELEMENT_SUBJECT, ""),
taskParameters.getParameter(ELEMENT_BODY, ""));
} catch (Exception e) {
log.error("Sending mail failed: ", e);
throw new RuntimeException (e);
}
}