KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > james > core > MimeMessageSource


1 /***********************************************************************
2  * Copyright (c) 2000-2004 The Apache Software Foundation. *
3  * All rights reserved. *
4  * ------------------------------------------------------------------- *
5  * Licensed under the Apache License, Version 2.0 (the "License"); you *
6  * may not use this file except in compliance with the License. You *
7  * 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 *
14  * implied. See the License for the specific language governing *
15  * permissions and limitations under the License. *
16  ***********************************************************************/

17
18 package org.apache.james.core;
19
20 import java.io.IOException JavaDoc;
21 import java.io.InputStream JavaDoc;
22
23 /**
24  * This defines a reusable datasource that can supply an input stream with
25  * MimeMessage data. This allows a MimeMessageWrapper or other classes to
26  * grab the underlying data.
27  *
28  * @see MimeMessageWrapper
29  */

30 public abstract class MimeMessageSource {
31     /**
32      * Returns a unique String ID that represents the location from where
33      * this file is loaded. This will be used to identify where the data
34      * is, primarily to avoid situations where this data would get overwritten.
35      *
36      * @return the String ID
37      */

38     public abstract String JavaDoc getSourceId();
39
40     /**
41      * Get an input stream to retrieve the data stored in the datasource
42      *
43      * @return a <code>InputStream</code> containing the data
44      *
45      * @throws IOException if an error occurs while generating the
46      * InputStream
47      */

48     public abstract InputStream JavaDoc getInputStream() throws IOException JavaDoc;
49
50     /**
51      * Return the size of all the data.
52      * Default implementation... others can override to do this much faster
53      *
54      * @return the size of the data represented by this source
55      * @throws IOException if an error is encountered while computing the message size
56      */

57     public long getMessageSize() throws IOException JavaDoc {
58         int size = 0;
59         InputStream JavaDoc in = null;
60         try {
61             in = getInputStream();
62             int read = 0;
63             byte[] data = new byte[1024];
64             while ((read = in.read(data)) > 0) {
65                 size += read;
66             }
67         } finally {
68             try {
69                 if (in != null) {
70                     in.close();
71                 }
72             } catch (IOException JavaDoc ioe) {
73                 // Exception ignored because logging is
74
// unavailable
75
}
76         }
77         return size;
78     }
79
80 }
81
Popular Tags