/
ClassPathEmailAttachment.java
49 lines (40 loc) · 1.72 KB
/
ClassPathEmailAttachment.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package org.jboss.seam.mail.attachments;
import java.io.IOException;
import java.io.InputStream;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import org.jboss.seam.mail.core.AttachmentException;
import org.jboss.seam.mail.core.Header;
import org.jboss.seam.mail.core.enumurations.ContentDisposition;
import org.jboss.seam.solder.resourceLoader.ResourceProvider;
import com.google.common.io.ByteStreams;
public class ClassPathEmailAttachment extends BaseEmailAttachment
{
public ClassPathEmailAttachment(String fileName, String mimeType, ContentDisposition contentDisposition)
{
super();
try
{
super.setFileName(fileName);
super.setMimeType(mimeType);
super.setContentDisposition(contentDisposition);
super.setBytes(ByteStreams.toByteArray(inputStreamFromClassPath(fileName)));
}
catch (IOException e)
{
throw new AttachmentException("Wasn't able to create email attachment from Class Path file: " + fileName, e);
}
}
public ClassPathEmailAttachment(String fileName, String mimeType, ContentDisposition contentDisposition, String contentClass)
{
this(fileName, mimeType, contentDisposition);
super.addHeader(new Header("Content-Class", contentClass));
}
private InputStream inputStreamFromClassPath(String fileName)
{
BeanManager bm = getBeanManager();
Bean<?> bean = bm.resolve(bm.getBeans(ResourceProvider.class));
ResourceProvider resourceProvider = (ResourceProvider) bm.getReference(bean, bean.getBeanClass(), bm.createCreationalContext(bean));
return resourceProvider.loadResourceStream(fileName);
}
}