View Javadoc

1   package com.ozacc.mail.impl;
2   
3   /*
4    * @(#)ByteArrayDataSource.java	1.4 01/05/23
5    *
6    * Copyright 1998-2000 Sun Microsystems, Inc. All Rights Reserved.
7    *
8    * Redistribution and use in source and binary forms, with or without
9    * modification, are permitted provided that the following conditions
10   * are met:
11   * 
12   * - Redistributions of source code must retain the above copyright
13   *   notice, this list of conditions and the following disclaimer.
14   * 
15   * - Redistribution in binary form must reproduce the above copyright
16   *   notice, this list of conditions and the following disclaimer in the
17   *   documentation and/or other materials provided with the distribution.
18   * 
19   * Neither the name of Sun Microsystems, Inc. or the names of contributors
20   * may be used to endorse or promote products derived from this software
21   * without specific prior written permission.
22   * 
23   * This software is provided "AS IS," without a warranty of any kind. ALL
24   * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
25   * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
26   * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND
27   * ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES OR LIABILITIES
28   * SUFFERED BY LICENSEE AS A RESULT OF  OR RELATING TO USE, MODIFICATION
29   * OR DISTRIBUTION OF THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
30   * SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR
31   * FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
32   * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
33   * ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS
34   * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
35   * 
36   * You acknowledge that Software is not designed, licensed or intended
37   * for use in the design, construction, operation or maintenance of any
38   * nuclear facility.
39   */
40  
41  import java.io.ByteArrayInputStream;
42  import java.io.ByteArrayOutputStream;
43  import java.io.IOException;
44  import java.io.InputStream;
45  import java.io.OutputStream;
46  import java.io.UnsupportedEncodingException;
47  
48  import javax.activation.DataSource;
49  
50  /***
51   * InputStream、byte array、StringからDataSourceインスタンスを生成するクラス。<br>
52   * JavaMailパッケージ付属品。
53   * <p>
54   * <strong>注:</strong> このクラスはpublicですが、ozacc-mail library外からは使用しないでください。
55   * 
56   * @since 1.1
57   * 
58   * @author John Mani
59   * @author Bill Shannon
60   * @author Max Spivak
61   */
62  public class ByteArrayDataSource implements DataSource {
63  
64  	private byte[] data; // data
65  
66  	private String type; // content-type
67  
68  	/* Create a DataSource from an input stream */
69  	public ByteArrayDataSource(InputStream is, String type) {
70  		this.type = type;
71  		try {
72  			ByteArrayOutputStream os = new ByteArrayOutputStream();
73  			int ch;
74  
75  			while ((ch = is.read()) != -1)
76  				// XXX - must be made more efficient by
77  				// doing buffered reads, rather than one byte reads
78  				os.write(ch);
79  			data = os.toByteArray();
80  
81  		} catch (IOException ioex) {}
82  	}
83  
84  	/* Create a DataSource from a byte array */
85  	public ByteArrayDataSource(byte[] data, String type) {
86  		this.data = data;
87  		this.type = type;
88  	}
89  
90  	/* Create a DataSource from a String */
91  	public ByteArrayDataSource(String data, String type) {
92  		try {
93  			// Assumption that the string contains only ASCII
94  			// characters!  Otherwise just pass a charset into this
95  			// constructor and use it in getBytes()
96  			this.data = data.getBytes("iso-8859-1");
97  		} catch (UnsupportedEncodingException uex) {}
98  		this.type = type;
99  	}
100 
101 	/***
102 	 * Return an InputStream for the data.
103 	 * Note - a new stream must be returned each time.
104 	 */
105 	public InputStream getInputStream() throws IOException {
106 		if (data == null)
107 			throw new IOException("no data");
108 		return new ByteArrayInputStream(data);
109 	}
110 
111 	public OutputStream getOutputStream() throws IOException {
112 		throw new IOException("cannot do this");
113 	}
114 
115 	public String getContentType() {
116 		return type;
117 	}
118 
119 	public String getName() {
120 		return "dummy";
121 	}
122 }