KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > nextapp > echo2 > webcontainer > image > StreamImageService


1 /*
2  * This file is part of the Echo Web Application Framework (hereinafter "Echo").
3  * Copyright (C) 2002-2005 NextApp, Inc.
4  *
5  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
6  *
7  * The contents of this file are subject to the Mozilla Public License Version
8  * 1.1 (the "License"); you may not use this file except in compliance with
9  * the License. You may obtain a copy of the License at
10  * http://www.mozilla.org/MPL/
11  *
12  * Software distributed under the License is distributed on an "AS IS" basis,
13  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
14  * for the specific language governing rights and limitations under the
15  * License.
16  *
17  * Alternatively, the contents of this file may be used under the terms of
18  * either the GNU General Public License Version 2 or later (the "GPL"), or
19  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
20  * in which case the provisions of the GPL or the LGPL are applicable instead
21  * of those above. If you wish to allow use of your version of this file only
22  * under the terms of either the GPL or the LGPL, and not to allow others to
23  * use your version of this file under the terms of the MPL, indicate your
24  * decision by deleting the provisions above and replace them with the notice
25  * and other provisions required by the GPL or the LGPL. If you do not delete
26  * the provisions above, a recipient may use your version of this file under
27  * the terms of any one of the MPL, the GPL or the LGPL.
28  */

29
30 package nextapp.echo2.webcontainer.image;
31
32 import java.io.IOException JavaDoc;
33
34 import nextapp.echo2.app.ImageReference;
35 import nextapp.echo2.app.StreamImageReference;
36 import nextapp.echo2.webrender.Connection;
37 import nextapp.echo2.webrender.ContentType;
38 import nextapp.echo2.webrender.WebRenderServlet;
39
40 /**
41  * Renders a <code>StreamImageReference</code> to the client.
42  */

43 public class StreamImageService extends AbstractImageService {
44
45     /** <code>Service</code> identifier. */
46     private static final String JavaDoc SERVICE_ID = "Echo.StreamImage";
47     
48     /** Singleton instance of this <code>Service</code>. */
49     public static final StreamImageService INSTANCE = new StreamImageService();
50
51     static {
52         WebRenderServlet.getServiceRegistry().add(INSTANCE);
53     }
54     
55     /**
56      * @see nextapp.echo2.webrender.Service#getId()
57      */

58     public String JavaDoc getId() {
59         return SERVICE_ID;
60     }
61     
62     /**
63      * @see nextapp.echo2.webrender.Service#getVersion()
64      */

65     public int getVersion() {
66         return 0; // Enable caching.
67
}
68
69     /**
70      * @see nextapp.echo2.webcontainer.image.AbstractImageService#renderImage(
71      * nextapp.echo2.webrender.Connection, nextapp.echo2.app.ImageReference)
72      */

73     public void renderImage(Connection conn, ImageReference imageReference)
74     throws IOException JavaDoc {
75         try {
76             if (!(imageReference instanceof StreamImageReference)) {
77                 throw new IOException JavaDoc("Image is not a StreamImageReference.");
78             }
79             StreamImageReference streamImageReference = (StreamImageReference) imageReference;
80             conn.setContentType(new ContentType(streamImageReference.getContentType(), true));
81             streamImageReference.render(conn.getOutputStream());
82         } catch (IOException JavaDoc ex) {
83             // Internet Explorer appears to enjoy making half-hearted requests for images, wherein it resets the connection
84
// leaving us with an IOException. This exception is silently eaten.
85
// It would preferable to only ignore SocketExceptions, however the API documentation does not provide
86
// enough information to suggest that such a strategy would be adequate..
87
}
88     }
89 }
90
Popular Tags