1
2
3
4
5
6
7
8
9
10 package org.mule.transport.email;
11
12 import com.sun.mail.handlers.image_gif;
13 import com.sun.mail.handlers.image_jpeg;
14 import com.sun.mail.handlers.text_html;
15 import com.sun.mail.handlers.text_plain;
16 import com.sun.mail.handlers.text_xml;
17
18 import java.util.HashMap;
19 import java.util.Map;
20
21 import javax.activation.DataContentHandler;
22 import javax.activation.DataContentHandlerFactory;
23 import javax.activation.DataHandler;
24
25
26
27
28 public class DefaultDataContentHandlerFactory implements DataContentHandlerFactory
29 {
30
31 static
32 {
33
34 DataHandler.setDataContentHandlerFactory(getInstance());
35 }
36
37 private Map types = new HashMap();
38 private Map classToHandlers = new HashMap();
39 private Map classToType = new HashMap();
40 private static DefaultDataContentHandlerFactory factory;
41
42 public static DefaultDataContentHandlerFactory getInstance()
43 {
44 if(factory==null)
45 {
46 factory = new DefaultDataContentHandlerFactory();
47 }
48 return factory;
49 }
50
51 private DefaultDataContentHandlerFactory()
52 {
53 register(new image_jpeg());
54 register(new image_gif());
55 register(new text_plain());
56 register(new text_xml());
57 register(new text_html());
58 }
59
60 public DataContentHandler createDataContentHandler(String contentType)
61 {
62 return (DataContentHandler) types.get(contentType);
63 }
64
65 public DataContentHandler getDataContentHandler(Class clazz)
66 {
67 return (DataContentHandler) classToHandlers.get(clazz);
68 }
69
70 public String getContentType(Class clazz)
71 {
72 return (String) classToHandlers.get(clazz);
73 }
74
75
76
77
78
79
80 public void register(String contentType, Class clazz, DataContentHandler handler)
81 {
82 types.put(contentType, handler);
83 classToHandlers.put(clazz, handler);
84 classToType.put(clazz, contentType);
85 }
86
87
88
89
90
91
92
93
94
95 public void register(DataContentHandler handler)
96 {
97 for (int i = 0; i < handler.getTransferDataFlavors().length; i++)
98 {
99 register(handler.getTransferDataFlavors()[i].getMimeType(),
100 handler.getTransferDataFlavors()[i].getDefaultRepresentationClass(),
101 handler);
102 }
103
104 }
105 }
106