1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
/* * @(#)URLDataSource.java 1.11 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved. * * This software is the proprietary information of Sun Microsystems, Inc. * Use is subject to license terms. * */ package javax.activation; import java.net.URL; import java.net.URLConnection; import java.io.InputStream; import java.io.OutputStream; import java.io.IOException; /** * The URLDataSource class provides an object that wraps a <code>URL</code> * object in a DataSource interface. URLDataSource simplifies the handling * of data described by URLs within the JavaBeans Activation Framework * because this class can be used to create new DataHandlers. <i>NOTE: The * DataHandler object creates a URLDataSource internally, * when it is constructed with a URL.</i> * * @see javax.activation.DataSource * @see javax.activation.DataHandler * * @since 1.6 */ public class URLDataSource implements DataSource { private URL url = null; private URLConnection url_conn = null; /** * URLDataSource constructor. The URLDataSource class will * not open a connection to the URL until a method requiring it * to do so is called. * * @param url The URL to be encapsulated in this object. */ public URLDataSource(URL url) { this.url = url; } /** * Returns the value of the URL content-type header field. * It calls the URL's <code>URLConnection.getContentType</code> method * after retrieving a URLConnection object. * <i>Note: this method attempts to call the <code>openConnection</code> * method on the URL. If this method fails, or if a content type is not * returned from the URLConnection, getContentType returns * "application/octet-stream" as the content type.</i> * * @return the content type. */ public String getContentType() { String type = null; try { if (url_conn == null) url_conn = url.openConnection(); } catch (IOException e) { } if (url_conn != null) type = url_conn.getContentType(); if (type == null) type = "application/octet-stream"; return type; } /** * Calls the <code>getFile</code> method on the URL used to * instantiate the object. * * @return the result of calling the URL's getFile method. */ public String getName() { return url.getFile(); } /** * The getInputStream method from the URL. Calls the * <code>openStream</code> method on the URL. * * @return the InputStream. */ public InputStream getInputStream() throws IOException { return url.openStream(); } /** * The getOutputStream method from the URL. First an attempt is * made to get the URLConnection object for the URL. If that * succeeds, the getOutputStream method on the URLConnection * is returned. * * @return the OutputStream. */ public OutputStream getOutputStream() throws IOException { // get the url connection if it is available url_conn = url.openConnection(); if (url_conn != null) { url_conn.setDoOutput(true); return url_conn.getOutputStream(); } else return null; } /** * Return the URL used to create this DataSource. * * @return The URL. */ public URL getURL() { return url; } }