1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.mailet.base.mail;
22
23 import java.awt.datatransfer.DataFlavor;
24 import java.awt.datatransfer.UnsupportedFlavorException;
25 import java.io.IOException;
26
27 import javax.activation.ActivationDataFlavor;
28 import javax.activation.DataContentHandler;
29 import javax.activation.DataSource;
30 import javax.mail.MessagingException;
31
32
33
34
35
36 public abstract class AbstractDataContentHandler implements DataContentHandler
37 {
38
39 private ActivationDataFlavor fieldDataFlavor;
40
41
42
43
44 public AbstractDataContentHandler()
45 {
46 super();
47 }
48
49
50
51
52
53 protected void updateDataFlavor()
54 {
55 setDataFlavor(computeDataFlavor());
56 }
57
58
59
60
61
62
63 abstract protected ActivationDataFlavor computeDataFlavor();
64
65 protected void setDataFlavor(ActivationDataFlavor aDataFlavor)
66 {
67 fieldDataFlavor = aDataFlavor;
68 }
69
70
71
72
73 public Object getContent(DataSource aDataSource) throws IOException
74 {
75 Object content = null;
76 try
77 {
78 content = computeContent(aDataSource);
79 }
80 catch (MessagingException e)
81 {
82
83 }
84 return content;
85 }
86
87
88
89
90
91
92
93
94 abstract protected Object computeContent(DataSource aDataSource)
95 throws MessagingException;
96
97
98
99
100
101 public Object getTransferData(DataFlavor aDataFlavor, DataSource aDataSource)
102 throws UnsupportedFlavorException, IOException
103 {
104 Object content = null;
105 if (getDataFlavor().equals(aDataFlavor))
106 content = getContent(aDataSource);
107 return content;
108 }
109
110
111
112
113 public DataFlavor[] getTransferDataFlavors()
114 {
115 return new DataFlavor[]{getDataFlavor()};
116 }
117
118
119
120
121
122
123 protected ActivationDataFlavor getDataFlavor()
124 {
125 ActivationDataFlavor dataFlavor = null;
126 if (null == (dataFlavor = getDataFlavorBasic()))
127 {
128 updateDataFlavor();
129 return getDataFlavor();
130 }
131 return dataFlavor;
132 }
133
134
135
136
137
138
139 private ActivationDataFlavor getDataFlavorBasic()
140 {
141 return fieldDataFlavor;
142 }
143
144 }