use of javax.activation.URLDataSource in project camel by apache.
the class BodyAndHeaderConvertTest method setUp.
@Override
protected void setUp() throws Exception {
super.setUp();
exchange = new DefaultExchange(new DefaultCamelContext());
exchange.setProperty("foo", 1234);
Message message = exchange.getIn();
message.setBody("<hello>world!</hello>");
message.setHeader("bar", 567);
message.addAttachmentObject("att", new DefaultAttachment(new URLDataSource(new URL("http://camel.apache.org/message.html"))));
}
use of javax.activation.URLDataSource in project webservices-axiom by apache.
the class TestCloseWithSystemId method runTest.
@Override
protected void runTest() throws Throwable {
InstrumentedDataSource ds = new InstrumentedDataSource(new URLDataSource(XMLSample.SIMPLE.getUrl()));
DataSourceRegistration registration = DataSourceRegistry.registerDataSource(ds);
try {
OMXMLParserWrapper builder = OMXMLBuilderFactory.createOMBuilder(metaFactory.getOMFactory(), new StreamSource(registration.getURL().toExternalForm()));
builder.getDocumentElement();
builder.close();
// Since the caller doesn't have control over the stream, the builder is responsible
// for closing it.
assertThat(ds.getOpenStreamCount()).isEqualTo(0);
} finally {
registration.unregister();
}
}
use of javax.activation.URLDataSource in project pentaho-kettle by pentaho.
the class Mail method checkEmbeddedImages.
private void checkEmbeddedImages(MailMeta meta, MailData data) {
if (meta.getEmbeddedImages() != null && meta.getEmbeddedImages().length > 0) {
FileObject image = null;
data.embeddedMimePart = new HashSet<MimeBodyPart>();
try {
for (int i = 0; i < meta.getEmbeddedImages().length; i++) {
String imageFile = environmentSubstitute(meta.getEmbeddedImages()[i]);
String contentID = environmentSubstitute(meta.getContentIds()[i]);
image = KettleVFS.getFileObject(imageFile);
if (image.exists() && image.getType() == FileType.FILE) {
// Create part for the image
MimeBodyPart imagePart = new MimeBodyPart();
// Load the image
URLDataSource fds = new URLDataSource(image.getURL());
imagePart.setDataHandler(new DataHandler(fds));
// Setting the header
imagePart.setHeader("Content-ID", "<" + contentID + ">");
// keep this part for further user
data.embeddedMimePart.add(imagePart);
logBasic(BaseMessages.getString(PKG, "Mail.Log.ImageAdded", imageFile));
} else {
logError(BaseMessages.getString(PKG, "Mail.Log.WrongImage", imageFile));
}
}
} catch (Exception e) {
logError(BaseMessages.getString(PKG, "Mail.Error.AddingImage", e.getMessage()));
} finally {
if (image != null) {
try {
image.close();
} catch (Exception e) {
/* Ignore */
}
}
}
}
}
use of javax.activation.URLDataSource in project pentaho-kettle by pentaho.
the class JobEntryMail method execute.
public Result execute(Result result, int nr) {
File masterZipfile = null;
// Send an e-mail...
// create some properties and get the default Session
Properties props = new Properties();
if (Utils.isEmpty(server)) {
logError(BaseMessages.getString(PKG, "JobMail.Error.HostNotSpecified"));
result.setNrErrors(1L);
result.setResult(false);
return result;
}
String protocol = "smtp";
if (usingSecureAuthentication) {
if (secureConnectionType.equals("TLS")) {
// Allow TLS authentication
props.put("mail.smtp.starttls.enable", "true");
} else {
protocol = "smtps";
// required to get rid of a SSL exception :
// nested exception is:
// javax.net.ssl.SSLException: Unsupported record version Unknown
props.put("mail.smtps.quitwait", "false");
}
}
props.put("mail." + protocol + ".host", environmentSubstitute(server));
if (!Utils.isEmpty(port)) {
props.put("mail." + protocol + ".port", environmentSubstitute(port));
}
if (log.isDebug()) {
props.put("mail.debug", "true");
}
if (usingAuthentication) {
props.put("mail." + protocol + ".auth", "true");
/*
* authenticator = new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new
* PasswordAuthentication( StringUtil.environmentSubstitute(Const.NVL(authenticationUser, "")),
* StringUtil.environmentSubstitute(Const.NVL(authenticationPassword, "")) ); } };
*/
}
Session session = Session.getInstance(props);
session.setDebug(log.isDebug());
try {
// create a message
Message msg = new MimeMessage(session);
// set message priority
if (usePriority) {
String priority_int = "1";
if (priority.equals("low")) {
priority_int = "3";
}
if (priority.equals("normal")) {
priority_int = "2";
}
// (String)int between 1= high and 3 = low.
msg.setHeader("X-Priority", priority_int);
msg.setHeader("Importance", importance);
// seems to be needed for MS Outlook.
// where it returns a string of high /normal /low.
msg.setHeader("Sensitivity", sensitivity);
// Possible values are normal, personal, private, company-confidential
}
// Set Mail sender (From)
String sender_address = environmentSubstitute(replyAddress);
if (!Utils.isEmpty(sender_address)) {
String sender_name = environmentSubstitute(replyName);
if (!Utils.isEmpty(sender_name)) {
sender_address = sender_name + '<' + sender_address + '>';
}
msg.setFrom(new InternetAddress(sender_address));
} else {
throw new MessagingException(BaseMessages.getString(PKG, "JobMail.Error.ReplyEmailNotFilled"));
}
// set Reply to addresses
String reply_to_address = environmentSubstitute(replyToAddresses);
if (!Utils.isEmpty(reply_to_address)) {
// Split the mail-address: space separated
String[] reply_Address_List = environmentSubstitute(reply_to_address).split(" ");
InternetAddress[] address = new InternetAddress[reply_Address_List.length];
for (int i = 0; i < reply_Address_List.length; i++) {
address[i] = new InternetAddress(reply_Address_List[i]);
}
msg.setReplyTo(address);
}
// Split the mail-address: space separated
String[] destinations = environmentSubstitute(destination).split(" ");
InternetAddress[] address = new InternetAddress[destinations.length];
for (int i = 0; i < destinations.length; i++) {
address[i] = new InternetAddress(destinations[i]);
}
msg.setRecipients(Message.RecipientType.TO, address);
String realCC = environmentSubstitute(getDestinationCc());
if (!Utils.isEmpty(realCC)) {
// Split the mail-address Cc: space separated
String[] destinationsCc = realCC.split(" ");
InternetAddress[] addressCc = new InternetAddress[destinationsCc.length];
for (int i = 0; i < destinationsCc.length; i++) {
addressCc[i] = new InternetAddress(destinationsCc[i]);
}
msg.setRecipients(Message.RecipientType.CC, addressCc);
}
String realBCc = environmentSubstitute(getDestinationBCc());
if (!Utils.isEmpty(realBCc)) {
// Split the mail-address BCc: space separated
String[] destinationsBCc = realBCc.split(" ");
InternetAddress[] addressBCc = new InternetAddress[destinationsBCc.length];
for (int i = 0; i < destinationsBCc.length; i++) {
addressBCc[i] = new InternetAddress(destinationsBCc[i]);
}
msg.setRecipients(Message.RecipientType.BCC, addressBCc);
}
String realSubject = environmentSubstitute(subject);
if (!Utils.isEmpty(realSubject)) {
msg.setSubject(realSubject);
}
msg.setSentDate(new Date());
StringBuilder messageText = new StringBuilder();
String endRow = isUseHTML() ? "<br>" : Const.CR;
String realComment = environmentSubstitute(comment);
if (!Utils.isEmpty(realComment)) {
messageText.append(realComment).append(Const.CR).append(Const.CR);
}
if (!onlySendComment) {
messageText.append(BaseMessages.getString(PKG, "JobMail.Log.Comment.Job")).append(endRow);
messageText.append("-----").append(endRow);
messageText.append(BaseMessages.getString(PKG, "JobMail.Log.Comment.JobName") + " : ").append(parentJob.getJobMeta().getName()).append(endRow);
messageText.append(BaseMessages.getString(PKG, "JobMail.Log.Comment.JobDirectory") + " : ").append(parentJob.getJobMeta().getRepositoryDirectory()).append(endRow);
messageText.append(BaseMessages.getString(PKG, "JobMail.Log.Comment.JobEntry") + " : ").append(getName()).append(endRow);
messageText.append(Const.CR);
}
if (includeDate) {
messageText.append(endRow).append(BaseMessages.getString(PKG, "JobMail.Log.Comment.MsgDate") + ": ").append(XMLHandler.date2string(new Date())).append(endRow).append(endRow);
}
if (!onlySendComment && result != null) {
messageText.append(BaseMessages.getString(PKG, "JobMail.Log.Comment.PreviousResult") + ":").append(endRow);
messageText.append("-----------------").append(endRow);
messageText.append(BaseMessages.getString(PKG, "JobMail.Log.Comment.JobEntryNr") + " : ").append(result.getEntryNr()).append(endRow);
messageText.append(BaseMessages.getString(PKG, "JobMail.Log.Comment.Errors") + " : ").append(result.getNrErrors()).append(endRow);
messageText.append(BaseMessages.getString(PKG, "JobMail.Log.Comment.LinesRead") + " : ").append(result.getNrLinesRead()).append(endRow);
messageText.append(BaseMessages.getString(PKG, "JobMail.Log.Comment.LinesWritten") + " : ").append(result.getNrLinesWritten()).append(endRow);
messageText.append(BaseMessages.getString(PKG, "JobMail.Log.Comment.LinesInput") + " : ").append(result.getNrLinesInput()).append(endRow);
messageText.append(BaseMessages.getString(PKG, "JobMail.Log.Comment.LinesOutput") + " : ").append(result.getNrLinesOutput()).append(endRow);
messageText.append(BaseMessages.getString(PKG, "JobMail.Log.Comment.LinesUpdated") + " : ").append(result.getNrLinesUpdated()).append(endRow);
messageText.append(BaseMessages.getString(PKG, "JobMail.Log.Comment.LinesRejected") + " : ").append(result.getNrLinesRejected()).append(endRow);
messageText.append(BaseMessages.getString(PKG, "JobMail.Log.Comment.Status") + " : ").append(result.getExitStatus()).append(endRow);
messageText.append(BaseMessages.getString(PKG, "JobMail.Log.Comment.Result") + " : ").append(result.getResult()).append(endRow);
messageText.append(endRow);
}
if (!onlySendComment && (!Utils.isEmpty(environmentSubstitute(contactPerson)) || !Utils.isEmpty(environmentSubstitute(contactPhone)))) {
messageText.append(BaseMessages.getString(PKG, "JobMail.Log.Comment.ContactInfo") + " :").append(endRow);
messageText.append("---------------------").append(endRow);
messageText.append(BaseMessages.getString(PKG, "JobMail.Log.Comment.PersonToContact") + " : ").append(environmentSubstitute(contactPerson)).append(endRow);
messageText.append(BaseMessages.getString(PKG, "JobMail.Log.Comment.Tel") + " : ").append(environmentSubstitute(contactPhone)).append(endRow);
messageText.append(endRow);
}
// Include the path to this job entry...
if (!onlySendComment) {
JobTracker jobTracker = parentJob.getJobTracker();
if (jobTracker != null) {
messageText.append(BaseMessages.getString(PKG, "JobMail.Log.Comment.PathToJobentry") + ":").append(endRow);
messageText.append("------------------------").append(endRow);
addBacktracking(jobTracker, messageText);
if (isUseHTML()) {
messageText.replace(0, messageText.length(), messageText.toString().replace(Const.CR, endRow));
}
}
}
MimeMultipart parts = new MimeMultipart();
// put the text in the
MimeBodyPart part1 = new MimeBodyPart();
// Attached files counter
int nrattachedFiles = 0;
if (useHTML) {
if (!Utils.isEmpty(getEncoding())) {
part1.setContent(messageText.toString(), "text/html; " + "charset=" + getEncoding());
} else {
part1.setContent(messageText.toString(), "text/html; " + "charset=ISO-8859-1");
}
} else {
part1.setText(messageText.toString());
}
parts.addBodyPart(part1);
if (includingFiles && result != null) {
List<ResultFile> resultFiles = result.getResultFilesList();
if (resultFiles != null && !resultFiles.isEmpty()) {
if (!zipFiles) {
//
for (ResultFile resultFile : resultFiles) {
FileObject file = resultFile.getFile();
if (file != null && file.exists()) {
boolean found = false;
for (int i = 0; i < fileType.length; i++) {
if (fileType[i] == resultFile.getType()) {
found = true;
}
}
if (found) {
// create a data source
MimeBodyPart files = new MimeBodyPart();
URLDataSource fds = new URLDataSource(file.getURL());
// get a data Handler to manipulate this file type;
files.setDataHandler(new DataHandler(fds));
// include the file in the data source
files.setFileName(file.getName().getBaseName());
// insist on base64 to preserve line endings
files.addHeader("Content-Transfer-Encoding", "base64");
// add the part with the file in the BodyPart();
parts.addBodyPart(files);
nrattachedFiles++;
logBasic("Added file '" + fds.getName() + "' to the mail message.");
}
}
}
} else {
// create a single ZIP archive of all files
masterZipfile = new File(System.getProperty("java.io.tmpdir") + Const.FILE_SEPARATOR + environmentSubstitute(zipFilename));
ZipOutputStream zipOutputStream = null;
try {
zipOutputStream = new ZipOutputStream(new FileOutputStream(masterZipfile));
for (ResultFile resultFile : resultFiles) {
boolean found = false;
for (int i = 0; i < fileType.length; i++) {
if (fileType[i] == resultFile.getType()) {
found = true;
}
}
if (found) {
FileObject file = resultFile.getFile();
ZipEntry zipEntry = new ZipEntry(file.getName().getBaseName());
zipOutputStream.putNextEntry(zipEntry);
// Now put the content of this file into this archive...
BufferedInputStream inputStream = new BufferedInputStream(KettleVFS.getInputStream(file));
try {
int c;
while ((c = inputStream.read()) >= 0) {
zipOutputStream.write(c);
}
} finally {
inputStream.close();
}
zipOutputStream.closeEntry();
nrattachedFiles++;
logBasic("Added file '" + file.getName().getURI() + "' to the mail message in a zip archive.");
}
}
} catch (Exception e) {
logError("Error zipping attachement files into file [" + masterZipfile.getPath() + "] : " + e.toString());
logError(Const.getStackTracker(e));
result.setNrErrors(1);
} finally {
if (zipOutputStream != null) {
try {
zipOutputStream.finish();
zipOutputStream.close();
} catch (IOException e) {
logError("Unable to close attachement zip file archive : " + e.toString());
logError(Const.getStackTracker(e));
result.setNrErrors(1);
}
}
}
// Now attach the master zip file to the message.
if (result.getNrErrors() == 0) {
// create a data source
MimeBodyPart files = new MimeBodyPart();
FileDataSource fds = new FileDataSource(masterZipfile);
// get a data Handler to manipulate this file type;
files.setDataHandler(new DataHandler(fds));
// include the file in the data source
files.setFileName(fds.getName());
// add the part with the file in the BodyPart();
parts.addBodyPart(files);
}
}
}
}
int nrEmbeddedImages = 0;
if (embeddedimages != null && embeddedimages.length > 0) {
FileObject imageFile = null;
for (int i = 0; i < embeddedimages.length; i++) {
String realImageFile = environmentSubstitute(embeddedimages[i]);
String realcontenID = environmentSubstitute(contentids[i]);
if (messageText.indexOf("cid:" + realcontenID) < 0) {
if (log.isDebug()) {
log.logDebug("Image [" + realImageFile + "] is not used in message body!");
}
} else {
try {
boolean found = false;
imageFile = KettleVFS.getFileObject(realImageFile, this);
if (imageFile.exists() && imageFile.getType() == FileType.FILE) {
found = true;
} else {
log.logError("We can not find [" + realImageFile + "] or it is not a file");
}
if (found) {
// Create part for the image
MimeBodyPart messageBodyPart = new MimeBodyPart();
// Load the image
URLDataSource fds = new URLDataSource(imageFile.getURL());
messageBodyPart.setDataHandler(new DataHandler(fds));
// Setting the header
messageBodyPart.setHeader("Content-ID", "<" + realcontenID + ">");
// Add part to multi-part
parts.addBodyPart(messageBodyPart);
nrEmbeddedImages++;
log.logBasic("Image '" + fds.getName() + "' was embedded in message.");
}
} catch (Exception e) {
log.logError("Error embedding image [" + realImageFile + "] in message : " + e.toString());
log.logError(Const.getStackTracker(e));
result.setNrErrors(1);
} finally {
if (imageFile != null) {
try {
imageFile.close();
} catch (Exception e) {
/* Ignore */
}
}
}
}
}
}
if (nrEmbeddedImages > 0 && nrattachedFiles == 0) {
// If we need to embedd images...
// We need to create a "multipart/related" message.
// otherwise image will appear as attached file
parts.setSubType("related");
}
// put all parts together
msg.setContent(parts);
Transport transport = null;
try {
transport = session.getTransport(protocol);
String authPass = getPassword(authenticationPassword);
if (usingAuthentication) {
if (!Utils.isEmpty(port)) {
transport.connect(environmentSubstitute(Const.NVL(server, "")), Integer.parseInt(environmentSubstitute(Const.NVL(port, ""))), environmentSubstitute(Const.NVL(authenticationUser, "")), authPass);
} else {
transport.connect(environmentSubstitute(Const.NVL(server, "")), environmentSubstitute(Const.NVL(authenticationUser, "")), authPass);
}
} else {
transport.connect();
}
transport.sendMessage(msg, msg.getAllRecipients());
} finally {
if (transport != null) {
transport.close();
}
}
} catch (IOException e) {
logError("Problem while sending message: " + e.toString());
result.setNrErrors(1);
} catch (MessagingException mex) {
logError("Problem while sending message: " + mex.toString());
result.setNrErrors(1);
Exception ex = mex;
do {
if (ex instanceof SendFailedException) {
SendFailedException sfex = (SendFailedException) ex;
Address[] invalid = sfex.getInvalidAddresses();
if (invalid != null) {
logError(" ** Invalid Addresses");
for (int i = 0; i < invalid.length; i++) {
logError(" " + invalid[i]);
result.setNrErrors(1);
}
}
Address[] validUnsent = sfex.getValidUnsentAddresses();
if (validUnsent != null) {
logError(" ** ValidUnsent Addresses");
for (int i = 0; i < validUnsent.length; i++) {
logError(" " + validUnsent[i]);
result.setNrErrors(1);
}
}
Address[] validSent = sfex.getValidSentAddresses();
if (validSent != null) {
// System.out.println(" ** ValidSent Addresses");
for (int i = 0; i < validSent.length; i++) {
logError(" " + validSent[i]);
result.setNrErrors(1);
}
}
}
if (ex instanceof MessagingException) {
ex = ((MessagingException) ex).getNextException();
} else {
ex = null;
}
} while (ex != null);
} finally {
if (masterZipfile != null && masterZipfile.exists()) {
masterZipfile.delete();
}
}
if (result.getNrErrors() > 0) {
result.setResult(false);
} else {
result.setResult(true);
}
return result;
}
use of javax.activation.URLDataSource in project iaf by ibissource.
the class MailSender method retrieveAttachments.
private Collection<Attachment> retrieveAttachments(Collection<Node> attachmentsNode, ParameterResolutionContext prc) throws SenderException {
Collection<Attachment> attachments = null;
Iterator iter = attachmentsNode.iterator();
if (iter.hasNext()) {
attachments = new LinkedList<Attachment>();
while (iter.hasNext()) {
Element attachmentElement = (Element) iter.next();
String name = attachmentElement.getAttribute("name");
String sessionKey = attachmentElement.getAttribute("sessionKey");
String url = attachmentElement.getAttribute("url");
boolean base64 = Boolean.parseBoolean(attachmentElement.getAttribute("base64"));
Object value = null;
if (StringUtils.isNotEmpty(sessionKey)) {
Object object = prc.getSession().get(sessionKey);
if (object instanceof InputStream) {
DataSource attachmentDataSource;
try {
attachmentDataSource = new ByteArrayDataSource((InputStream) object, "application/octet-stream");
} catch (IOException e) {
throw new SenderException("error retrieving attachment from sessionkey", e);
}
value = new DataHandler(attachmentDataSource);
} else if (object instanceof String) {
String skValue = (String) object;
if (base64) {
value = decodeBase64(skValue);
} else {
value = skValue;
}
} else {
throw new SenderException("MailSender [" + getName() + "] received unknown attachment type [" + object.getClass().getName() + "] in sessionkey");
}
} else {
if (StringUtils.isNotEmpty(url)) {
DataSource attachmentDataSource;
try {
attachmentDataSource = new URLDataSource(new URL(url));
} catch (MalformedURLException e) {
throw new SenderException("error retrieving attachment from url", e);
}
value = new DataHandler(attachmentDataSource);
} else {
String nodeValue = XmlUtils.getStringValue(attachmentElement);
if (base64) {
value = decodeBase64(nodeValue);
} else {
value = nodeValue;
}
}
}
Attachment attachment = new Attachment(value, name);
attachments.add(attachment);
}
}
return attachments;
}
Aggregations