KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jcorporate > expresso > core > misc > ByteArrayDataSource


1 /* ====================================================================
2  * The Jcorporate Apache Style Software License, Version 1.2 05-07-2002
3  *
4  * Copyright (c) 1995-2002 Jcorporate Ltd. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in
15  * the documentation and/or other materials provided with the
16  * distribution.
17  *
18  * 3. The end-user documentation included with the redistribution,
19  * if any, must include the following acknowledgment:
20  * "This product includes software developed by Jcorporate Ltd.
21  * (http://www.jcorporate.com/)."
22  * Alternately, this acknowledgment may appear in the software itself,
23  * if and wherever such third-party acknowledgments normally appear.
24  *
25  * 4. "Jcorporate" and product names such as "Expresso" must
26  * not be used to endorse or promote products derived from this
27  * software without prior written permission. For written permission,
28  * please contact info@jcorporate.com.
29  *
30  * 5. Products derived from this software may not be called "Expresso",
31  * or other Jcorporate product names; nor may "Expresso" or other
32  * Jcorporate product names appear in their name, without prior
33  * written permission of Jcorporate Ltd.
34  *
35  * 6. No product derived from this software may compete in the same
36  * market space, i.e. framework, without prior written permission
37  * of Jcorporate Ltd. For written permission, please contact
38  * partners@jcorporate.com.
39  *
40  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
41  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
42  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
43  * DISCLAIMED. IN NO EVENT SHALL JCORPORATE LTD OR ITS CONTRIBUTORS
44  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
45  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
46  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
47  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
48  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
49  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
50  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51  * SUCH DAMAGE.
52  * ====================================================================
53  *
54  * This software consists of voluntary contributions made by many
55  * individuals on behalf of the Jcorporate Ltd. Contributions back
56  * to the project(s) are encouraged when you make modifications.
57  * Please send them to support@jcorporate.com. For more information
58  * on Jcorporate Ltd. and its products, please see
59  * <http://www.jcorporate.com/>.
60  *
61  * Portions of this software are based upon other open source
62  * products and are subject to their respective licenses.
63  */

64
65 /*
66  * Derived from the Sun's JavaMail demo
67  *
68  * Copyright 2004 JCorporate Ltd.
69  */

70 package com.jcorporate.expresso.core.misc;
71
72 import javax.activation.DataSource JavaDoc;
73 import java.io.ByteArrayInputStream JavaDoc;
74 import java.io.IOException JavaDoc;
75 import java.io.InputStream JavaDoc;
76 import java.io.OutputStream JavaDoc;
77 import java.io.UnsupportedEncodingException JavaDoc;
78
79 /**
80  * Used to create a generic raw virtual DataSource for the MIME mail
81  * messages.
82  *
83  * @author Peter Pilgrim, Tue Feb 10 01:37:59 GMT 2004
84  * @author Sun MicroSystem, JavaMail Demo, 2001
85  * @version $Id: ByteArrayDataSource.java,v 1.5 2004/11/18 02:03:27 lhamel Exp $
86  */

87 public class ByteArrayDataSource implements DataSource JavaDoc {
88     private byte[] data; // data for mail message
89
private String JavaDoc type; // content type/mime type
90
private String JavaDoc name = "attachment_file";
91
92     /**
93      * Create a DataSource from raw data bytes
94      *
95      * @param data is the contents of the mail message
96      * @param type is the mime-type such as text/html
97      * @param name the name of the attachment (ie a filename)
98      */

99     public ByteArrayDataSource(byte data[], String JavaDoc type, String JavaDoc name) {
100         this.data = data;
101         this.type = type;
102         this.name = name;
103     }
104
105     /**
106      * Create a DataSource from a text String
107      *
108      * @param data is the contents of the mail message
109      * @param type is the mime-type such as text/html
110      * @param name the name of the attachment (ie a filename)
111      */

112     public ByteArrayDataSource(String JavaDoc text, String JavaDoc type, String JavaDoc name) {
113         try {
114             this.data = text.getBytes("UTF-8");
115         } catch (UnsupportedEncodingException JavaDoc uex) {
116         }
117         this.type = type;
118         this.name = name;
119     }
120
121     // DataSource interface methods
122

123     /**
124      * Returns the input stream associated with the data source
125      *
126      * @throws IOException if there is I/O error
127      */

128     public InputStream JavaDoc getInputStream() throws IOException JavaDoc {
129         if (data == null) {
130             throw new IOException JavaDoc("no data");
131         }
132         return new ByteArrayInputStream JavaDoc(data);
133     }
134
135     /**
136      * Returns the output stream associated with the data source
137      *
138      * @throws IOException always raised because by definition a data source is not a data sink!
139      */

140     public OutputStream JavaDoc getOutputStream() throws IOException JavaDoc {
141         throw new IOException JavaDoc("cannot do this");
142     }
143
144     /**
145      * Returns the content type (mime type)
146      *
147      * @return content type as text
148      */

149     public String JavaDoc getContentType() {
150         return type;
151     }
152
153     /**
154      * Returns the name of the data source.
155      *
156      * @return the releveant name of the raw data
157      */

158     public String JavaDoc getName() {
159         return name;
160     }
161 }
162
Popular Tags