home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 1995 November
/
PCWK1195.iso
/
inne
/
win95
/
sieciowe
/
hotja32.lzh
/
hotjava
/
classsrc
/
net
/
www
/
html
/
urlstreamhandler.java
< prev
next >
Wrap
Text File
|
1995-08-11
|
6KB
|
180 lines
/*
* @(#)URLStreamHandler.java 1.12 95/02/07 James Gosling
*
* Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
*
* Permission to use, copy, modify, and distribute this software
* and its documentation for NON-COMMERCIAL purposes and without
* fee is hereby granted provided that this copyright notice
* appears in all copies. Please refer to the file "copyright.html"
* for further important copyright and licensing information.
*
* SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
* THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
* ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
* DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
*/
/*-
* abstract class for url stream openers
*/
package net.www.html;
import java.util.Hashtable;
import java.io.*;
/** Subclasses of this class know how to create streams for particular
protocol types */
public class URLStreamHandler {
static Hashtable extension_map = new Hashtable();
static {
URL.classInit();
setSuffix("", URL.content_unknown);
setSuffix(".uu", URL.content_octet);
setSuffix(".saveme", URL.content_octet);
setSuffix(".dump", URL.content_octet);
setSuffix(".hqx", URL.content_octet);
setSuffix(".arc", URL.content_octet);
setSuffix(".o", URL.content_octet);
setSuffix(".a", URL.content_octet);
setSuffix(".bin", URL.content_octet);
setSuffix(".exe", URL.content_octet);
/* Temporary only. */
setSuffix(".z", URL.content_octet);
setSuffix(".gz", URL.content_octet);
setSuffix(".oda", URL.content_oda);
setSuffix(".pdf", URL.content_pdf);
setSuffix(".eps", URL.content_postscript);
setSuffix(".ai", URL.content_postscript);
setSuffix(".ps", URL.content_postscript);
setSuffix(".rtf", URL.content_richtext);
setSuffix(".dvi", URL.content_dvi);
setSuffix(".hdf", URL.content_hdf);
setSuffix(".latex", URL.content_latex);
setSuffix(".cdf", URL.content_netcdf);
setSuffix(".nc", URL.content_netcdf);
setSuffix(".tex", URL.content_tex);
setSuffix(".texinfo", URL.content_texinfo);
setSuffix(".texi", URL.content_texinfo);
setSuffix(".t", URL.content_troff);
setSuffix(".tr", URL.content_troff);
setSuffix(".roff", URL.content_troff);
setSuffix(".man", URL.content_man);
setSuffix(".me", URL.content_me);
setSuffix(".ms", URL.content_ms);
setSuffix(".src", URL.content_source);
setSuffix(".wsrc", URL.content_source);
setSuffix(".zip", URL.content_zip);
setSuffix(".bcpio", URL.content_bcpio);
setSuffix(".cpio", URL.content_cpio);
setSuffix(".gtar", URL.content_gtar);
setSuffix(".shar", URL.content_shar);
setSuffix(".sh", URL.content_shar);
setSuffix(".sv4cpio", URL.content_sv4cpio);
setSuffix(".sv4crc", URL.content_sv4crc);
setSuffix(".tar", URL.content_tar);
setSuffix(".ustar", URL.content_ustar);
setSuffix(".snd", URL.content_basic);
setSuffix(".au", URL.content_basic);
setSuffix(".aifc", URL.content_aiff);
setSuffix(".aif", URL.content_aiff);
setSuffix(".aiff", URL.content_aiff);
setSuffix(".wav", URL.content_wav);
setSuffix(".gif", URL.content_gif);
setSuffix(".ief", URL.content_ief);
setSuffix(".jfif", URL.content_jpeg);
setSuffix(".jfif-tbnl", URL.content_jpeg);
setSuffix(".jpe", URL.content_jpeg);
setSuffix(".jpg", URL.content_jpeg);
setSuffix(".jpeg", URL.content_jpeg);
setSuffix(".tif", URL.content_tiff);
setSuffix(".tiff", URL.content_tiff);
setSuffix(".ras", URL.content_rast);
setSuffix(".pnm", URL.content_anymap);
setSuffix(".pbm", URL.content_bitmap);
setSuffix(".pgm", URL.content_graymap);
setSuffix(".ppm", URL.content_pixmap);
setSuffix(".rgb", URL.content_rgb);
setSuffix(".xbm", URL.content_xbitmap);
setSuffix(".xpm", URL.content_xpixmap);
setSuffix(".xwd", URL.content_xwindowdump);
setSuffix(".htm", URL.content_html);
setSuffix(".html", URL.content_html);
setSuffix(".text", URL.content_plain);
setSuffix(".c", URL.content_plain);
setSuffix(".cc", URL.content_plain);
setSuffix(".c++", URL.content_plain);
setSuffix(".h", URL.content_plain);
setSuffix(".pl", URL.content_plain);
setSuffix(".txt", URL.content_plain);
setSuffix(".java", URL.content_plain);
setSuffix(".rtx", URL.content_richtext);
setSuffix(".tsv", URL.content_values);
setSuffix(".etx", URL.content_setext);
setSuffix(".mpg", URL.content_mpeg);
setSuffix(".mpe", URL.content_mpeg);
setSuffix(".mpeg", URL.content_mpeg);
setSuffix(".mov", URL.content_quicktime);
setSuffix(".qt", URL.content_quicktime);
setSuffix(".avi", URL.content_msvideo);
setSuffix(".movie", URL.content_movie);
setSuffix(".mv", URL.content_movie);
setSuffix(".mime", URL.content_rfc822);
}
static private void setSuffix(String ext, String ct) {
extension_map.put(ext, ct);
}
/**
* Open an input stream to the object referenced by the URL. Should be
* overridden by a subclass. Failure is indicated by throwing an
* exception.
* @return The opened input stream. A value of null indicates that while
* the open was successful, there is no useful data provided by this
* protocol, it's done for side-effect only (the usual example is the
* "mailto" protocol).
*/
abstract public InputStream openStream(URL u);
/**
* Similar to openStream except that it allows the stream handler
* to interact with the user to resolve certain problems. For
* example, the http handler will prompt for a user name and
* password to handle authentication failures. In these cases,
* openStream would just toss an exception. If this method is
* not overridden, it behaves exactly like openStream.
*/
public InputStream openStreamInteractively(URL u) {
return openStream(u);
}
/**
Try to guess the contents of a file based upon its extension.
*/
public static String formatFromName(String fname) {
String ext = "";
int i = fname.lastIndexOf('#');
// Strip off the #nameref, if any.
//
if (i != -1)
fname = fname.substring(0, i-1);
i = fname.lastIndexOf('.');
i = Math.max(i, fname.lastIndexOf('/'));
i = Math.max(i, fname.lastIndexOf('?'));
if (i != -1 && fname.charAt(i) == '.') {
ext = fname.substring(i).toLowerCase();
}
String ret = (String) extension_map.get(ext);
return ret != null ? ret : URL.content_unknown;
}
}