View Javadoc

1   /**
2    *
3    * Copyright 2003-2006 The Apache Software Foundation
4    *
5    *  Licensed under the Apache License, Version 2.0 (the "License");
6    *  you may not use this file except in compliance with the License.
7    *  You may obtain a copy of the License at
8    *
9    *     http://www.apache.org/licenses/LICENSE-2.0
10   *
11   *  Unless required by applicable law or agreed to in writing, software
12   *  distributed under the License is distributed on an "AS IS" BASIS,
13   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   *  See the License for the specific language governing permissions and
15   *  limitations under the License.
16   */
17  
18  package javax.mail.internet;
19  
20  import java.io.IOException;
21  import java.io.InputStream;
22  import java.io.OutputStream;
23  import java.net.UnknownServiceException;
24  import javax.activation.DataSource;
25  import javax.mail.MessageAware;
26  import javax.mail.MessageContext;
27  import javax.mail.MessagingException;
28  
29  /**
30   * @version $Rev: 421852 $ $Date: 2006-07-14 03:02:19 -0700 (Fri, 14 Jul 2006) $
31   */
32  public class MimePartDataSource implements DataSource, MessageAware {
33      // the part that provides the data form this data source.
34      protected MimePart part;
35  
36      public MimePartDataSource(MimePart part) {
37          this.part = part;
38      }
39  
40      public InputStream getInputStream() throws IOException {
41          try {
42              InputStream stream;
43              if (part instanceof MimeMessage) {
44                  stream = ((MimeMessage) part).getContentStream();
45              } else if (part instanceof MimeBodyPart) {
46                  stream = ((MimeBodyPart) part).getContentStream();
47              } else {
48                  throw new MessagingException("Unknown part");
49              }
50              String encoding = part.getEncoding();
51              return encoding == null ? stream : MimeUtility.decode(stream, encoding);
52          } catch (MessagingException e) {
53              throw (IOException) new IOException(e.getMessage()).initCause(e);
54          }
55      }
56  
57      public OutputStream getOutputStream() throws IOException {
58          throw new UnknownServiceException();
59      }
60  
61      public String getContentType() {
62          try {
63              return part.getContentType();
64          } catch (MessagingException e) {
65              return null;
66          }
67      }
68  
69      public String getName() {
70          return "";
71      }
72  
73      public synchronized MessageContext getMessageContext() {
74          return new MessageContext(part);
75      }
76  }