Merge "ojluni: delete dead code in sun.net.www"
diff --git a/ojluni/src/main/java/sun/net/www/ApplicationLaunchException.java b/ojluni/src/main/java/sun/net/www/ApplicationLaunchException.java
deleted file mode 100755
index 3394cd3..0000000
--- a/ojluni/src/main/java/sun/net/www/ApplicationLaunchException.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package sun.net.www;
-
-/**
- * An exception thrown by the MimeLauncher when it is unable to launch
- * an external content viewer.
- *
- * @author Sunita Mani
- */
-
-public class ApplicationLaunchException extends Exception {
- private static final long serialVersionUID = -4782286141289536883L;
-
- public ApplicationLaunchException(String reason) {
- super(reason);
- }
-}
diff --git a/ojluni/src/main/java/sun/net/www/MimeEntry.java b/ojluni/src/main/java/sun/net/www/MimeEntry.java
deleted file mode 100755
index 005d960..0000000
--- a/ojluni/src/main/java/sun/net/www/MimeEntry.java
+++ /dev/null
@@ -1,340 +0,0 @@
-/*
- * Copyright (c) 1994, 2002, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package sun.net.www;
-import java.net.URL;
-import java.io.*;
-import java.util.StringTokenizer;
-
-public class MimeEntry implements Cloneable {
- private String typeName; // of the form: "type/subtype"
- private String tempFileNameTemplate;
-
- private int action;
- private String command;
- private String description;
- private String imageFileName;
- private String fileExtensions[];
-
- boolean starred;
-
- // Actions
- public static final int UNKNOWN = 0;
- public static final int LOAD_INTO_BROWSER = 1;
- public static final int SAVE_TO_FILE = 2;
- public static final int LAUNCH_APPLICATION = 3;
-
- static final String[] actionKeywords = {
- "unknown",
- "browser",
- "save",
- "application",
- };
-
- /**
- * Construct an empty entry of the given type and subtype.
- */
- public MimeEntry(String type) {
- // Default action is UNKNOWN so clients can decide what the default
- // should be, typically save to file or ask user.
- this(type, UNKNOWN, null, null, null);
- }
-
- //
- // The next two constructors are used only by the deprecated
- // PlatformMimeTable classes or, in last case, is called by the public
- // constructor. They are kept here anticipating putting support for
- // mailcap formatted config files back in (so BOTH the properties format
- // and the mailcap formats are supported).
- //
- MimeEntry(String type, String imageFileName, String extensionString) {
- typeName = type.toLowerCase();
- action = UNKNOWN;
- command = null;
- this.imageFileName = imageFileName;
- setExtensions(extensionString);
- starred = isStarred(typeName);
- }
-
- // For use with MimeTable::parseMailCap
- MimeEntry(String typeName, int action, String command,
- String tempFileNameTemplate) {
- this.typeName = typeName.toLowerCase();
- this.action = action;
- this.command = command;
- this.imageFileName = null;
- this.fileExtensions = null;
-
- this.tempFileNameTemplate = tempFileNameTemplate;
- }
-
- // This is the one called by the public constructor.
- MimeEntry(String typeName, int action, String command,
- String imageFileName, String fileExtensions[]) {
-
- this.typeName = typeName.toLowerCase();
- this.action = action;
- this.command = command;
- this.imageFileName = imageFileName;
- this.fileExtensions = fileExtensions;
-
- starred = isStarred(typeName);
-
- }
-
- public synchronized String getType() {
- return typeName;
- }
-
- public synchronized void setType(String type) {
- typeName = type.toLowerCase();
- }
-
- public synchronized int getAction() {
- return action;
- }
-
- public synchronized void setAction(int action, String command) {
- this.action = action;
- this.command = command;
- }
-
- public synchronized void setAction(int action) {
- this.action = action;
- }
-
- public synchronized String getLaunchString() {
- return command;
- }
-
- public synchronized void setCommand(String command) {
- this.command = command;
- }
-
- public synchronized String getDescription() {
- return (description != null ? description : typeName);
- }
-
- public synchronized void setDescription(String description) {
- this.description = description;
- }
-
- // ??? what to return for the image -- the file name or should this return
- // something more advanced like an image source or something?
- // returning the name has the least policy associated with it.
- // pro tempore, we'll use the name
- public String getImageFileName() {
- return imageFileName;
- }
-
- public synchronized void setImageFileName(String filename) {
- File file = new File(filename);
- if (file.getParent() == null) {
- imageFileName = System.getProperty(
- "java.net.ftp.imagepath."+filename);
- }
- else {
- imageFileName = filename;
- }
-
- if (filename.lastIndexOf('.') < 0) {
- imageFileName = imageFileName + ".gif";
- }
- }
-
- public String getTempFileTemplate() {
- return tempFileNameTemplate;
- }
-
- public synchronized String[] getExtensions() {
- return fileExtensions;
- }
-
- public synchronized String getExtensionsAsList() {
- String extensionsAsString = "";
- if (fileExtensions != null) {
- for (int i = 0; i < fileExtensions.length; i++) {
- extensionsAsString += fileExtensions[i];
- if (i < (fileExtensions.length - 1)) {
- extensionsAsString += ",";
- }
- }
- }
-
- return extensionsAsString;
- }
-
- public synchronized void setExtensions(String extensionString) {
- StringTokenizer extTokens = new StringTokenizer(extensionString, ",");
- int numExts = extTokens.countTokens();
- String extensionStrings[] = new String[numExts];
-
- for (int i = 0; i < numExts; i++) {
- String ext = (String)extTokens.nextElement();
- extensionStrings[i] = ext.trim();
- }
-
- fileExtensions = extensionStrings;
- }
-
- private boolean isStarred(String typeName) {
- return (typeName != null)
- && (typeName.length() > 0)
- && (typeName.endsWith("/*"));
- }
-
- /**
- * Invoke the MIME type specific behavior for this MIME type.
- * Returned value can be one of several types:
- * <ol>
- * <li>A thread -- the caller can choose when to launch this thread.
- * <li>A string -- the string is loaded into the browser directly.
- * <li>An input stream -- the caller can read from this byte stream and
- * will typically store the results in a file.
- * <li>A document (?) --
- * </ol>
- */
- public Object launch(java.net.URLConnection urlc, InputStream is, MimeTable mt) throws ApplicationLaunchException {
- switch (action) {
- case SAVE_TO_FILE:
- // REMIND: is this really the right thing to do?
- try {
- return is;
- } catch(Exception e) {
- // I18N
- return "Load to file failed:\n" + e;
- }
-
- case LOAD_INTO_BROWSER:
- // REMIND: invoke the content handler?
- // may be the right thing to do, may not be -- short term
- // where docs are not loaded asynch, loading and returning
- // the content is the right thing to do.
- try {
- return urlc.getContent();
- } catch (Exception e) {
- return null;
- }
-
- case LAUNCH_APPLICATION:
- {
- String threadName = command;
- int fst = threadName.indexOf(' ');
- if (fst > 0) {
- threadName = threadName.substring(0, fst);
- }
-
- return new MimeLauncher(this, urlc, is,
- mt.getTempFileTemplate(), threadName);
- }
-
- case UNKNOWN:
- // REMIND: What do do here?
- return null;
- }
-
- return null;
- }
-
- public boolean matches(String type) {
- if (starred) {
- // REMIND: is this the right thing or not?
- return type.startsWith(typeName);
- } else {
- return type.equals(typeName);
- }
- }
-
- public Object clone() {
- // return a shallow copy of this.
- MimeEntry theClone = new MimeEntry(typeName);
- theClone.action = action;
- theClone.command = command;
- theClone.description = description;
- theClone.imageFileName = imageFileName;
- theClone.tempFileNameTemplate = tempFileNameTemplate;
- theClone.fileExtensions = fileExtensions;
-
- return theClone;
- }
-
- public synchronized String toProperty() {
- StringBuffer buf = new StringBuffer();
-
- String separator = "; ";
- boolean needSeparator = false;
-
- int action = getAction();
- if (action != MimeEntry.UNKNOWN) {
- buf.append("action=" + actionKeywords[action]);
- needSeparator = true;
- }
-
- String command = getLaunchString();
- if (command != null && command.length() > 0) {
- if (needSeparator) {
- buf.append(separator);
- }
- buf.append("application=" + command);
- needSeparator = true;
- }
-
- if (getImageFileName() != null) {
- if (needSeparator) {
- buf.append(separator);
- }
- buf.append("icon=" + getImageFileName());
- needSeparator = true;
- }
-
- String extensions = getExtensionsAsList();
- if (extensions.length() > 0) {
- if (needSeparator) {
- buf.append(separator);
- }
- buf.append("file_extensions=" + extensions);
- needSeparator = true;
- }
-
- String description = getDescription();
- if (description != null && !description.equals(getType())) {
- if (needSeparator) {
- buf.append(separator);
- }
- buf.append("description=" + description);
- }
-
- return buf.toString();
- }
-
- public String toString() {
- return "MimeEntry[contentType=" + typeName
- + ", image=" + imageFileName
- + ", action=" + action
- + ", command=" + command
- + ", extensions=" + getExtensionsAsList()
- + "]";
- }
-}
diff --git a/ojluni/src/main/java/sun/net/www/MimeLauncher.java b/ojluni/src/main/java/sun/net/www/MimeLauncher.java
deleted file mode 100755
index ee4fb40..0000000
--- a/ojluni/src/main/java/sun/net/www/MimeLauncher.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * Copyright (c) 1994, 1998, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package sun.net.www;
-import java.net.URL;
-import java.io.*;
-import java.util.StringTokenizer;
-
-class MimeLauncher extends Thread {
- java.net.URLConnection uc;
- MimeEntry m;
- String genericTempFileTemplate;
- InputStream is;
- String execPath;
-
- MimeLauncher (MimeEntry M, java.net.URLConnection uc,
- InputStream is, String tempFileTemplate, String threadName) throws ApplicationLaunchException {
- super(threadName);
- m = M;
- this.uc = uc;
- this.is = is;
- genericTempFileTemplate = tempFileTemplate;
-
- /* get the application to launch */
- String launchString = m.getLaunchString();
-
- /* get a valid path to launch application - sets
- the execPath instance variable with the correct path.
- */
- if (!findExecutablePath(launchString)) {
- /* strip off parameters i.e %s */
- String appName;
- int index = launchString.indexOf(' ');
- if (index != -1) {
- appName = launchString.substring(0, index);
- }
- else {
- appName = launchString;
- }
- throw new ApplicationLaunchException(appName);
- }
- }
-
- protected String getTempFileName(URL url, String template) {
- String tempFilename = template;
-
- // Replace all but last occurrance of "%s" with timestamp to insure
- // uniqueness. There's a subtle behavior here: if there is anything
- // _after_ the last "%s" we need to append it so that unusual launch
- // strings that have the datafile in the middle can still be used.
- int wildcard = tempFilename.lastIndexOf("%s");
- String prefix = tempFilename.substring(0, wildcard);
-
- String suffix = "";
- if (wildcard < tempFilename.length() - 2) {
- suffix = tempFilename.substring(wildcard + 2);
- }
-
- long timestamp = System.currentTimeMillis()/1000;
- int argIndex = 0;
- while ((argIndex = prefix.indexOf("%s")) >= 0) {
- prefix = prefix.substring(0, argIndex)
- + timestamp
- + prefix.substring(argIndex + 2);
- }
-
- // Add a file name and file-extension if known
- String filename = url.getFile();
-
- String extension = "";
- int dot = filename.lastIndexOf('.');
-
- // BugId 4084826: Temp MIME file names not always valid.
- // Fix: don't allow slashes in the file name or extension.
- if (dot >= 0 && dot > filename.lastIndexOf('/')) {
- extension = filename.substring(dot);
- }
-
- filename = "HJ" + url.hashCode();
-
- tempFilename = prefix + filename + timestamp + extension + suffix;
-
- return tempFilename;
- }
-
- public void run() {
- try {
- String ofn = m.getTempFileTemplate();
- if (ofn == null) {
- ofn = genericTempFileTemplate;
- }
-
- ofn = getTempFileName(uc.getURL(), ofn);
- try {
- OutputStream os = new FileOutputStream(ofn);
- byte buf[] = new byte[2048];
- int i = 0;
- try {
- while ((i = is.read(buf)) >= 0) {
- os.write(buf, 0, i);
- }
- } catch(IOException e) {
- //System.err.println("Exception in write loop " + i);
- //e.printStackTrace();
- } finally {
- os.close();
- is.close();
- }
- } catch(IOException e) {
- //System.err.println("Exception in input or output stream");
- //e.printStackTrace();
- }
-
- int inx = 0;
- String c = execPath;
- while ((inx = c.indexOf("%t")) >= 0) {
- c = c.substring(0, inx) + uc.getContentType()
- + c.substring(inx + 2);
- }
-
- boolean substituted = false;
- while ((inx = c.indexOf("%s")) >= 0) {
- c = c.substring(0, inx) + ofn + c.substring(inx + 2);
- substituted = true;
- }
- if (!substituted)
- c = c + " <" + ofn;
-
- // System.out.println("Execing " +c);
-
- Runtime.getRuntime().exec(c);
- } catch(IOException e) {
- }
- }
-
- /* This method determines the path for the launcher application
- and sets the execPath instance variable. It uses the exec.path
- property to obtain a list of paths that is in turn used to
- location the application. If a valid path is not found, it
- returns false else true. */
- private boolean findExecutablePath(String str) {
- if (str == null || str.length() == 0) {
- return false;
- }
-
- String command;
- int index = str.indexOf(' ');
- if (index != -1) {
- command = str.substring(0, index);
- }
- else {
- command = str;
- }
-
- File f = new File(command);
- if (f.isFile()) {
- // Already executable as it is
- execPath = str;
- return true;
- }
-
- String execPathList;
- execPathList = java.security.AccessController.doPrivileged(
- new sun.security.action.GetPropertyAction("exec.path"));
- if (execPathList == null) {
- // exec.path property not set
- return false;
- }
-
- StringTokenizer iter = new StringTokenizer(execPathList, "|");
- while (iter.hasMoreElements()) {
- String prefix = (String)iter.nextElement();
- String fullCmd = prefix + File.separator + command;
- f = new File(fullCmd);
- if (f.isFile()) {
- execPath = prefix + File.separator + str;
- return true;
- }
- }
-
- return false; // application not found in exec.path
- }
-}
diff --git a/ojluni/src/main/java/sun/net/www/MimeTable.java b/ojluni/src/main/java/sun/net/www/MimeTable.java
deleted file mode 100755
index b8b70fd..0000000
--- a/ojluni/src/main/java/sun/net/www/MimeTable.java
+++ /dev/null
@@ -1,463 +0,0 @@
-/*
- * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package sun.net.www;
-import java.io.*;
-import java.util.Calendar;
-import java.util.Date;
-import java.text.SimpleDateFormat;
-import java.net.URL;
-import java.net.FileNameMap;
-import java.util.Hashtable;
-import java.util.Enumeration;
-import java.util.Properties;
-import java.util.StringTokenizer;
-
-public class MimeTable implements FileNameMap {
- /** Keyed by content type, returns MimeEntries */
- private Hashtable<String, MimeEntry> entries
- = new Hashtable<String, MimeEntry>();
-
- /** Keyed by file extension (with the .), returns MimeEntries */
- private Hashtable<String, MimeEntry> extensionMap
- = new Hashtable<String, MimeEntry>();
-
- // Will be reset if in the platform-specific data file
- private static String tempFileTemplate;
-
- static {
- java.security.AccessController.doPrivileged(
- new java.security.PrivilegedAction<Void>() {
- public Void run() {
- tempFileTemplate =
- System.getProperty("content.types.temp.file.template",
- "/tmp/%s");
-
- mailcapLocations = new String[] {
- System.getProperty("user.mailcap"),
- System.getProperty("user.home") + "/.mailcap",
- "/etc/mailcap",
- "/usr/etc/mailcap",
- "/usr/local/etc/mailcap",
- System.getProperty("hotjava.home",
- "/usr/local/hotjava")
- + "/lib/mailcap",
- };
- return null;
- }
- });
- }
-
-
- private static final String filePreamble = "sun.net.www MIME content-types table";
- private static final String fileMagic = "#" + filePreamble;
-
- MimeTable() {
- load();
- }
-
- private static class DefaultInstanceHolder {
- static final MimeTable defaultInstance = getDefaultInstance();
-
- static MimeTable getDefaultInstance() {
- return java.security.AccessController.doPrivileged(
- new java.security.PrivilegedAction<MimeTable>() {
- public MimeTable run() {
- MimeTable instance = new MimeTable();
- URLConnection.setFileNameMap(instance);
- return instance;
- }
- });
- }
- }
-
- /**
- * Get the single instance of this class. First use will load the
- * table from a data file.
- */
- public static MimeTable getDefaultTable() {
- return DefaultInstanceHolder.defaultInstance;
- }
-
- /**
- *
- */
- public static FileNameMap loadTable() {
- MimeTable mt = getDefaultTable();
- return (FileNameMap)mt;
- }
-
- public synchronized int getSize() {
- return entries.size();
- }
-
- public synchronized String getContentTypeFor(String fileName) {
- MimeEntry entry = findByFileName(fileName);
- if (entry != null) {
- return entry.getType();
- } else {
- return null;
- }
- }
-
- public synchronized void add(MimeEntry m) {
- entries.put(m.getType(), m);
-
- String exts[] = m.getExtensions();
- if (exts == null) {
- return;
- }
-
- for (int i = 0; i < exts.length; i++) {
- extensionMap.put(exts[i], m);
- }
- }
-
- public synchronized MimeEntry remove(String type) {
- MimeEntry entry = entries.get(type);
- return remove(entry);
- }
-
- public synchronized MimeEntry remove(MimeEntry entry) {
- String[] extensionKeys = entry.getExtensions();
- if (extensionKeys != null) {
- for (int i = 0; i < extensionKeys.length; i++) {
- extensionMap.remove(extensionKeys[i]);
- }
- }
-
- return entries.remove(entry.getType());
- }
-
- public synchronized MimeEntry find(String type) {
- MimeEntry entry = entries.get(type);
- if (entry == null) {
- // try a wildcard lookup
- Enumeration<MimeEntry> e = entries.elements();
- while (e.hasMoreElements()) {
- MimeEntry wild = e.nextElement();
- if (wild.matches(type)) {
- return wild;
- }
- }
- }
-
- return entry;
- }
-
- /**
- * Locate a MimeEntry by the file extension that has been associated
- * with it. Parses general file names, and URLs.
- */
- public MimeEntry findByFileName(String fname) {
- String ext = "";
-
- int i = fname.lastIndexOf('#');
-
- if (i > 0) {
- fname = fname.substring(0, i - 1);
- }
-
- i = fname.lastIndexOf('.');
- // REMIND: OS specific delimters appear here
- i = Math.max(i, fname.lastIndexOf('/'));
- i = Math.max(i, fname.lastIndexOf('?'));
-
- if (i != -1 && fname.charAt(i) == '.') {
- ext = fname.substring(i).toLowerCase();
- }
-
- return findByExt(ext);
- }
-
- /**
- * Locate a MimeEntry by the file extension that has been associated
- * with it.
- */
- public synchronized MimeEntry findByExt(String fileExtension) {
- return extensionMap.get(fileExtension);
- }
-
- public synchronized MimeEntry findByDescription(String description) {
- Enumeration<MimeEntry> e = elements();
- while (e.hasMoreElements()) {
- MimeEntry entry = e.nextElement();
- if (description.equals(entry.getDescription())) {
- return entry;
- }
- }
-
- // We failed, now try treating description as type
- return find(description);
- }
-
- String getTempFileTemplate() {
- return tempFileTemplate;
- }
-
- public synchronized Enumeration<MimeEntry> elements() {
- return entries.elements();
- }
-
- // For backward compatibility -- mailcap format files
- // This is not currently used, but may in the future when we add ability
- // to read BOTH the properties format and the mailcap format.
- protected static String[] mailcapLocations;
-
- public synchronized void load() {
- Properties entries = new Properties();
- File file = null;
- try {
- InputStream is;
- // First try to load the user-specific table, if it exists
- String userTablePath =
- System.getProperty("content.types.user.table");
- if (userTablePath != null) {
- file = new File(userTablePath);
- if (!file.exists()) {
- // No user-table, try to load the default built-in table.
- file = new File(System.getProperty("java.home") +
- File.separator +
- "lib" +
- File.separator +
- "content-types.properties");
- }
- }
- else {
- // No user table, try to load the default built-in table.
- file = new File(System.getProperty("java.home") +
- File.separator +
- "lib" +
- File.separator +
- "content-types.properties");
- }
-
- is = new BufferedInputStream(new FileInputStream(file));
- entries.load(is);
- is.close();
- }
- catch (IOException e) {
- System.err.println("Warning: default mime table not found: " +
- file.getPath());
- return;
- }
- parse(entries);
- }
-
- void parse(Properties entries) {
- // first, strip out the platform-specific temp file template
- String tempFileTemplate = (String)entries.get("temp.file.template");
- if (tempFileTemplate != null) {
- entries.remove("temp.file.template");
- this.tempFileTemplate = tempFileTemplate;
- }
-
- // now, parse the mime-type spec's
- Enumeration<?> types = entries.propertyNames();
- while (types.hasMoreElements()) {
- String type = (String)types.nextElement();
- String attrs = entries.getProperty(type);
- parse(type, attrs);
- }
- }
-
- //
- // Table format:
- //
- // <entry> ::= <table_tag> | <type_entry>
- //
- // <table_tag> ::= <table_format_version> | <temp_file_template>
- //
- // <type_entry> ::= <type_subtype_pair> '=' <type_attrs_list>
- //
- // <type_subtype_pair> ::= <type> '/' <subtype>
- //
- // <type_attrs_list> ::= <attr_value_pair> [ ';' <attr_value_pair> ]*
- // | [ <attr_value_pair> ]+
- //
- // <attr_value_pair> ::= <attr_name> '=' <attr_value>
- //
- // <attr_name> ::= 'description' | 'action' | 'application'
- // | 'file_extensions' | 'icon'
- //
- // <attr_value> ::= <legal_char>*
- //
- // Embedded ';' in an <attr_value> are quoted with leading '\' .
- //
- // Interpretation of <attr_value> depends on the <attr_name> it is
- // associated with.
- //
-
- void parse(String type, String attrs) {
- MimeEntry newEntry = new MimeEntry(type);
-
- // REMIND handle embedded ';' and '|' and literal '"'
- StringTokenizer tokenizer = new StringTokenizer(attrs, ";");
- while (tokenizer.hasMoreTokens()) {
- String pair = tokenizer.nextToken();
- parse(pair, newEntry);
- }
-
- add(newEntry);
- }
-
- void parse(String pair, MimeEntry entry) {
- // REMIND add exception handling...
- String name = null;
- String value = null;
-
- boolean gotName = false;
- StringTokenizer tokenizer = new StringTokenizer(pair, "=");
- while (tokenizer.hasMoreTokens()) {
- if (gotName) {
- value = tokenizer.nextToken().trim();
- }
- else {
- name = tokenizer.nextToken().trim();
- gotName = true;
- }
- }
-
- fill(entry, name, value);
- }
-
- void fill(MimeEntry entry, String name, String value) {
- if ("description".equalsIgnoreCase(name)) {
- entry.setDescription(value);
- }
- else if ("action".equalsIgnoreCase(name)) {
- entry.setAction(getActionCode(value));
- }
- else if ("application".equalsIgnoreCase(name)) {
- entry.setCommand(value);
- }
- else if ("icon".equalsIgnoreCase(name)) {
- entry.setImageFileName(value);
- }
- else if ("file_extensions".equalsIgnoreCase(name)) {
- entry.setExtensions(value);
- }
-
- // else illegal name exception
- }
-
- String[] getExtensions(String list) {
- StringTokenizer tokenizer = new StringTokenizer(list, ",");
- int n = tokenizer.countTokens();
- String[] extensions = new String[n];
- for (int i = 0; i < n; i++) {
- extensions[i] = tokenizer.nextToken();
- }
-
- return extensions;
- }
-
- int getActionCode(String action) {
- for (int i = 0; i < MimeEntry.actionKeywords.length; i++) {
- if (action.equalsIgnoreCase(MimeEntry.actionKeywords[i])) {
- return i;
- }
- }
-
- return MimeEntry.UNKNOWN;
- }
-
- public synchronized boolean save(String filename) {
- if (filename == null) {
- filename = System.getProperty("user.home" +
- File.separator +
- "lib" +
- File.separator +
- "content-types.properties");
- }
-
- return saveAsProperties(new File(filename));
- }
-
- public Properties getAsProperties() {
- Properties properties = new Properties();
- Enumeration<MimeEntry> e = elements();
- while (e.hasMoreElements()) {
- MimeEntry entry = e.nextElement();
- properties.put(entry.getType(), entry.toProperty());
- }
-
- return properties;
- }
-
- protected boolean saveAsProperties(File file) {
- FileOutputStream os = null;
- try {
- os = new FileOutputStream(file);
- Properties properties = getAsProperties();
- properties.put("temp.file.template", tempFileTemplate);
- String tag;
- String user = System.getProperty("user.name");
- if (user != null) {
- tag = "; customized for " + user;
- properties.save(os, filePreamble + tag);
- }
- else {
- properties.save(os, filePreamble);
- }
- }
- catch (IOException e) {
- e.printStackTrace();
- return false;
- }
- finally {
- if (os != null) {
- try { os.close(); } catch (IOException e) {}
- }
- }
-
- return true;
- }
- /*
- * Debugging utilities
- *
- public void list(PrintStream out) {
- Enumeration keys = entries.keys();
- while (keys.hasMoreElements()) {
- String key = (String)keys.nextElement();
- MimeEntry entry = (MimeEntry)entries.get(key);
- out.println(key + ": " + entry);
- }
- }
-
- public static void main(String[] args) {
- MimeTable testTable = MimeTable.getDefaultTable();
-
- Enumeration e = testTable.elements();
- while (e.hasMoreElements()) {
- MimeEntry entry = (MimeEntry)e.nextElement();
- System.out.println(entry);
- }
-
- testTable.save(File.separator + "tmp" +
- File.separator + "mime_table.save");
- }
- */
-}
diff --git a/ojluni/src/main/java/sun/net/www/protocol/gopher/GopherClient.java b/ojluni/src/main/java/sun/net/www/protocol/gopher/GopherClient.java
deleted file mode 100755
index dd19d40..0000000
--- a/ojluni/src/main/java/sun/net/www/protocol/gopher/GopherClient.java
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
- * Copyright (c) 1996, 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-package sun.net.www.protocol.gopher;
-
-import java.io.*;
-import java.util.*;
-import java.net.*;
-import sun.net.www.*;
-import sun.net.NetworkClient;
-import java.net.URL;
-import java.net.URLStreamHandler;
-
-import sun.security.action.GetBooleanAction;
-
-/** Class to maintain the state of a gopher fetch and handle the protocol */
-public class GopherClient extends NetworkClient implements Runnable {
-
- /* The following three data members are left in for binary
- * backwards-compatibility. Unfortunately, HotJava sets them directly
- * when it wants to change the settings. The new design has us not
- * cache these, so this is unnecessary, but eliminating the data members
- * would break HJB 1.1 under JDK 1.2.
- *
- * These data members are not used, and their values are meaningless.
- * REMIND: Take them out for JDK 2.0!
- */
-
- /**
- * @deprecated
- */
- @Deprecated
- public static boolean useGopherProxy;
-
- /**
- * @deprecated
- */
- @Deprecated
- public static String gopherProxyHost;
-
- /**
- * @deprecated
- */
- @Deprecated
- public static int gopherProxyPort;
-
-
- static {
- useGopherProxy = java.security.AccessController.doPrivileged(
- new sun.security.action.GetBooleanAction("gopherProxySet"))
- .booleanValue();
-
- gopherProxyHost = java.security.AccessController.doPrivileged(
- new sun.security.action.GetPropertyAction("gopherProxyHost"));
-
- gopherProxyPort = java.security.AccessController.doPrivileged(
- new sun.security.action.GetIntegerAction("gopherProxyPort", 80))
- .intValue();
- }
-
- PipedOutputStream os;
- URL u;
- int gtype;
- String gkey;
- sun.net.www.URLConnection connection;
-
- GopherClient(sun.net.www.URLConnection connection) {
- this.connection = connection;
- }
-
- /**
- * @return true if gopher connections should go through a proxy, according
- * to system properties.
- */
- public static boolean getUseGopherProxy() {
- return java.security.AccessController.doPrivileged(
- new GetBooleanAction("gopherProxySet")).booleanValue();
- }
-
- /**
- * @return the proxy host to use, or null if nothing is set.
- */
- public static String getGopherProxyHost() {
- String host = java.security.AccessController.doPrivileged(
- new sun.security.action.GetPropertyAction("gopherProxyHost"));
- if ("".equals(host)) {
- host = null;
- }
- return host;
- }
-
- /**
- * @return the proxy port to use. Will default reasonably.
- */
- public static int getGopherProxyPort() {
- return java.security.AccessController.doPrivileged(
- new sun.security.action.GetIntegerAction("gopherProxyPort", 80))
- .intValue();
- }
-
- /** Given a url, setup to fetch the gopher document it refers to */
- InputStream openStream(URL u) throws IOException {
- this.u = u;
- this.os = os;
- int i = 0;
- String s = u.getFile();
- int limit = s.length();
- int c = '1';
- while (i < limit && (c = s.charAt(i)) == '/')
- i++;
- gtype = c == '/' ? '1' : c;
- if (i < limit)
- i++;
- gkey = s.substring(i);
-
- openServer(u.getHost(), u.getPort() <= 0 ? 70 : u.getPort());
-
- MessageHeader msgh = new MessageHeader();
-
- switch (gtype) {
- case '0':
- case '7':
- msgh.add("content-type", "text/plain");
- break;
- case '1':
- msgh.add("content-type", "text/html");
- break;
- case 'g':
- case 'I':
- msgh.add("content-type", "image/gif");
- break;
- default:
- msgh.add("content-type", "content/unknown");
- break;
- }
- if (gtype != '7') {
- serverOutput.print(decodePercent(gkey) + "\r\n");
- serverOutput.flush();
- } else if ((i = gkey.indexOf('?')) >= 0) {
- serverOutput.print(decodePercent(gkey.substring(0, i) + "\t" +
- gkey.substring(i + 1) + "\r\n"));
- serverOutput.flush();
- msgh.add("content-type", "text/html");
- } else {
- msgh.add("content-type", "text/html");
- }
- connection.setProperties(msgh);
- if (msgh.findValue("content-type") == "text/html") {
- os = new PipedOutputStream();
- PipedInputStream ret = new PipedInputStream();
- ret.connect(os);
- new Thread(this).start();
- return ret;
- }
- return new GopherInputStream(this, serverInput);
- }
-
- /** Translate all the instances of %NN into the character they represent */
- private String decodePercent(String s) {
- if (s == null || s.indexOf('%') < 0)
- return s;
- int limit = s.length();
- char d[] = new char[limit];
- int dp = 0;
- for (int sp = 0; sp < limit; sp++) {
- int c = s.charAt(sp);
- if (c == '%' && sp + 2 < limit) {
- int s1 = s.charAt(sp + 1);
- int s2 = s.charAt(sp + 2);
- if ('0' <= s1 && s1 <= '9')
- s1 = s1 - '0';
- else if ('a' <= s1 && s1 <= 'f')
- s1 = s1 - 'a' + 10;
- else if ('A' <= s1 && s1 <= 'F')
- s1 = s1 - 'A' + 10;
- else
- s1 = -1;
- if ('0' <= s2 && s2 <= '9')
- s2 = s2 - '0';
- else if ('a' <= s2 && s2 <= 'f')
- s2 = s2 - 'a' + 10;
- else if ('A' <= s2 && s2 <= 'F')
- s2 = s2 - 'A' + 10;
- else
- s2 = -1;
- if (s1 >= 0 && s2 >= 0) {
- c = (s1 << 4) | s2;
- sp += 2;
- }
- }
- d[dp++] = (char) c;
- }
- return new String(d, 0, dp);
- }
-
- /** Turn special characters into the %NN form */
- private String encodePercent(String s) {
- if (s == null)
- return s;
- int limit = s.length();
- char d[] = null;
- int dp = 0;
- for (int sp = 0; sp < limit; sp++) {
- int c = s.charAt(sp);
- if (c <= ' ' || c == '"' || c == '%') {
- if (d == null)
- d = s.toCharArray();
- if (dp + 3 >= d.length) {
- char nd[] = new char[dp + 10];
- System.arraycopy(d, 0, nd, 0, dp);
- d = nd;
- }
- d[dp] = '%';
- int dig = (c >> 4) & 0xF;
- d[dp + 1] = (char) (dig < 10 ? '0' + dig : 'A' - 10 + dig);
- dig = c & 0xF;
- d[dp + 2] = (char) (dig < 10 ? '0' + dig : 'A' - 10 + dig);
- dp += 3;
- } else {
- if (d != null) {
- if (dp >= d.length) {
- char nd[] = new char[dp + 10];
- System.arraycopy(d, 0, nd, 0, dp);
- d = nd;
- }
- d[dp] = (char) c;
- }
- dp++;
- }
- }
- return d == null ? s : new String(d, 0, dp);
- }
-
- /** This method is run as a seperate thread when an incoming gopher
- document requires translation to html */
- public void run() {
- int qpos = -1;
- try {
- if (gtype == '7' && (qpos = gkey.indexOf('?')) < 0) {
- PrintStream ps = new PrintStream(os, false, encoding);
- ps.print("<html><head><title>Searchable Gopher Index</title></head>\n<body><h1>Searchable Gopher Index</h1><isindex>\n</body></html>\n");
- } else if (gtype != '1' && gtype != '7') {
- byte buf[] = new byte[2048];
- try {
- int n;
- while ((n = serverInput.read(buf)) >= 0)
- os.write(buf, 0, n);
- } catch(Exception e) {
- }
- } else {
- PrintStream ps = new PrintStream(os, false, encoding);
- String title = null;
- if (gtype == '7')
- title = "Results of searching for \"" + gkey.substring(qpos + 1)
- + "\" on " + u.getHost();
- else
- title = "Gopher directory " + gkey + " from " + u.getHost();
- ps.print("<html><head><title>");
- ps.print(title);
- ps.print("</title></head>\n<body>\n<H1>");
- ps.print(title);
- ps.print("</h1><dl compact>\n");
- DataInputStream ds = new DataInputStream(serverInput);
- String s;
- while ((s = ds.readLine()) != null) {
- int len = s.length();
- while (len > 0 && s.charAt(len - 1) <= ' ')
- len--;
- if (len <= 0)
- continue;
- int key = s.charAt(0);
- int t1 = s.indexOf('\t');
- int t2 = t1 > 0 ? s.indexOf('\t', t1 + 1) : -1;
- int t3 = t2 > 0 ? s.indexOf('\t', t2 + 1) : -1;
- if (t3 < 0) {
- // ps.print("<br><i>"+s+"</i>\n");
- continue;
- }
- String port = t3 + 1 < len ? ":" + s.substring(t3 + 1, len) : "";
- String host = t2 + 1 < t3 ? s.substring(t2 + 1, t3) : u.getHost();
- ps.print("<dt><a href=\"gopher://" + host + port + "/"
- + s.substring(0, 1) + encodePercent(s.substring(t1 + 1, t2)) + "\">\n");
- ps.print("<img align=middle border=0 width=25 height=32 src=");
- switch (key) {
- default:
- ps.print(System.getProperty("java.net.ftp.imagepath.file"));
- break;
- case '0':
- ps.print(System.getProperty("java.net.ftp.imagepath.text"));
- break;
- case '1':
- ps.print(System.getProperty("java.net.ftp.imagepath.directory"));
- break;
- case 'g':
- ps.print(System.getProperty("java.net.ftp.imagepath.gif"));
- break;
- }
- ps.print(".gif align=middle><dd>\n");
- ps.print(s.substring(1, t1) + "</a>\n");
- }
- ps.print("</dl></body>\n");
- ps.close();
- }
-
- } catch (UnsupportedEncodingException e) {
- throw new InternalError(encoding+ " encoding not found");
- } catch (IOException e) {
- } finally {
- try {
- closeServer();
- os.close();
- } catch (IOException e2) {
- }
- }
- }
-}
-
-/** An input stream that does nothing more than hold on to the NetworkClient
- that created it. This is used when only the input stream is needed, and
- the network client needs to be closed when the input stream is closed. */
-class GopherInputStream extends FilterInputStream {
- NetworkClient parent;
-
- GopherInputStream(NetworkClient o, InputStream fd) {
- super(fd);
- parent = o;
- }
-
- public void close() {
- try {
- parent.closeServer();
- super.close();
- } catch (IOException e) {
- }
- }
-}
diff --git a/ojluni/src/main/java/sun/net/www/protocol/gopher/Handler.java b/ojluni/src/main/java/sun/net/www/protocol/gopher/Handler.java
deleted file mode 100755
index 8009859..0000000
--- a/ojluni/src/main/java/sun/net/www/protocol/gopher/Handler.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (c) 1995, 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package sun.net.www.protocol.gopher;
-
-import java.io.*;
-import java.util.*;
-import sun.net.NetworkClient;
-import java.net.URL;
-import java.net.URLStreamHandler;
-import java.net.Proxy;
-import java.net.InetSocketAddress;
-import java.net.SocketPermission;
-import java.security.Permission;
-import sun.net.www.protocol.http.HttpURLConnection;
-
-/**
- * A class to handle the gopher protocol.
- */
-
-public class Handler extends java.net.URLStreamHandler {
-
- protected int getDefaultPort() {
- return 70;
- }
-
- public java.net.URLConnection openConnection(URL u)
- throws IOException {
- return openConnection(u, null);
- }
-
- public java.net.URLConnection openConnection(URL u, Proxy p)
- throws IOException {
-
-
- /* if set for proxy usage then go through the http code to get */
- /* the url connection. */
- if (p == null && GopherClient.getUseGopherProxy()) {
- String host = GopherClient.getGopherProxyHost();
- if (host != null) {
- InetSocketAddress saddr = InetSocketAddress.createUnresolved(host, GopherClient.getGopherProxyPort());
-
- p = new Proxy(Proxy.Type.HTTP, saddr);
- }
- }
- if (p != null) {
- return new HttpURLConnection(u, p);
- }
-
- return new GopherURLConnection(u);
- }
-}
-
-class GopherURLConnection extends sun.net.www.URLConnection {
-
- Permission permission;
-
- GopherURLConnection(URL u) {
- super(u);
- }
-
- public void connect() throws IOException {
- }
-
- public InputStream getInputStream() throws IOException {
- return new GopherClient(this).openStream(url);
- }
-
- public Permission getPermission() {
- if (permission == null) {
- int port = url.getPort();
- port = port < 0 ? 70 : port;
- String host = url.getHost() + ":" + url.getPort();
- permission = new SocketPermission(host, "connect");
- }
- return permission;
- }
-}
diff --git a/ojluni/src/main/java/sun/net/www/protocol/mailto/Handler.java b/ojluni/src/main/java/sun/net/www/protocol/mailto/Handler.java
deleted file mode 100755
index 10fe684..0000000
--- a/ojluni/src/main/java/sun/net/www/protocol/mailto/Handler.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (c) 1995, 2000, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*-
- * mailto stream opener
- */
-
-package sun.net.www.protocol.mailto;
-
-import java.net.URL;
-import java.net.URLConnection;
-import java.net.URLStreamHandler;
-import java.io.*;
-import sun.net.www.*;
-//import sun.net.www.protocol.news.ArticlePoster;
-import sun.net.smtp.SmtpClient;
-
-/** open an nntp input stream given a URL */
-public class Handler extends URLStreamHandler {
-
-/*
-// private String decodePercent(String s) {
-// if (s==null || s.indexOf('%') < 0)
-// return s;
-// int limit = s.length();
-// char d[] = new char[limit];
-// int dp = 0;
-// for (int sp = 0; sp < limit; sp++) {
-// int c = s.charAt(sp);
-// if (c == '%' && sp + 2 < limit) {
-// int s1 = s.charAt(sp + 1);
-// int s2 = s.charAt(sp + 2);
-// if ('0' <= s1 && s1 <= '9')
-// s1 = s1 - '0';
-// else if ('a' <= s1 && s1 <= 'f')
-// s1 = s1 - 'a' + 10;
-// else if ('A' <= s1 && s1 <= 'F')
-// s1 = s1 - 'A' + 10;
-// else
-// s1 = -1;
-// if ('0' <= s2 && s2 <= '9')
-// s2 = s2 - '0';
-// else if ('a' <= s2 && s2 <= 'f')
-// s2 = s2 - 'a' + 10;
-// else if ('A' <= s2 && s2 <= 'F')
-// s2 = s2 - 'A' + 10;
-// else
-// s2 = -1;
-// if (s1 >= 0 && s2 >= 0) {
-// c = (s1 << 4) | s2;
-// sp += 2;
-// }
-// }
-// d[dp++] = (char) c;
-// }
-// return new String(d, 0, dp);
-// }
-
-// public InputStream openStream(URL u) {
-// String dest = u.file;
-// String subj = "";
-// int lastsl = dest.lastIndexOf('/');
-// if (lastsl >= 0) {
-// int st = dest.charAt(0) == '/' ? 1 : 0;
-// if (lastsl > st)
-// subj = dest.substring(st, lastsl);
-// dest = dest.substring(lastsl + 1);
-// }
-// if (u.postData != null) {
-// ArticlePoster.MailTo("Posted form",
-// decodePercent(dest),
-// u.postData);
-// }
-// else
-// ArticlePoster.MailTo(decodePercent(subj), decodePercent(dest));
-// return null;
-// }
- */
-
- public synchronized URLConnection openConnection(URL u) {
- return new MailToURLConnection(u);
- }
-
- /**
- * This method is called to parse the string spec into URL u for a
- * mailto protocol.
- *
- * @param u the URL to receive the result of parsing the spec
- * @param spec the URL string to parse
- * @param start the character position to start parsing at. This is
- * just past the ':'.
- * @param limit the character position to stop parsing at.
- */
- public void parseURL(URL u, String spec, int start, int limit) {
-
- String protocol = u.getProtocol();
- String host = "";
- int port = u.getPort();
- String file = "";
-
- if (start < limit) {
- file = spec.substring(start, limit);
- }
- /*
- * Let's just make sure we DO have an Email address in the URL.
- */
- boolean nogood = false;
- if (file == null || file.equals(""))
- nogood = true;
- else {
- boolean allwhites = true;
- for (int i = 0; i < file.length(); i++)
- if (!Character.isWhitespace(file.charAt(i)))
- allwhites = false;
- if (allwhites)
- nogood = true;
- }
- if (nogood)
- throw new RuntimeException("No email address");
- setURL(u, protocol, host, port, file, null);
- }
-}
diff --git a/ojluni/src/main/java/sun/net/www/protocol/mailto/MailToURLConnection.java b/ojluni/src/main/java/sun/net/www/protocol/mailto/MailToURLConnection.java
deleted file mode 100755
index df4d330..0000000
--- a/ojluni/src/main/java/sun/net/www/protocol/mailto/MailToURLConnection.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package sun.net.www.protocol.mailto;
-
-import java.net.URL;
-import java.net.InetAddress;
-import java.net.SocketPermission;
-import java.io.*;
-import java.security.Permission;
-import sun.net.www.*;
-import sun.net.smtp.SmtpClient;
-import sun.net.www.ParseUtil;
-
-
-/**
- * Handle mailto URLs. To send mail using a mailto URLConnection,
- * call <code>getOutputStream</code>, write the message to the output
- * stream, and close it.
- *
- */
-public class MailToURLConnection extends URLConnection {
- InputStream is = null;
- OutputStream os = null;
-
- SmtpClient client;
- Permission permission;
- private int connectTimeout = -1;
- private int readTimeout = -1;
-
- MailToURLConnection(URL u) {
- super(u);
-
- MessageHeader props = new MessageHeader();
- props.add("content-type", "text/html");
- setProperties(props);
- }
-
- /**
- * Get the user's full email address - stolen from
- * HotJavaApplet.getMailAddress().
- */
- String getFromAddress() {
- String str = System.getProperty("user.fromaddr");
- if (str == null) {
- str = System.getProperty("user.name");
- if (str != null) {
- String host = System.getProperty("mail.host");
- if (host == null) {
- try {
- host = InetAddress.getLocalHost().getHostName();
- } catch (java.net.UnknownHostException e) {
- }
- }
- str += "@" + host;
- } else {
- str = "";
- }
- }
- return str;
- }
-
- public void connect() throws IOException {
- client = new SmtpClient(connectTimeout);
- client.setReadTimeout(readTimeout);
- }
-
- @Override
- public synchronized OutputStream getOutputStream() throws IOException {
- if (os != null) {
- return os;
- } else if (is != null) {
- throw new IOException("Cannot write output after reading input.");
- }
- connect();
-
- String to = ParseUtil.decode(url.getPath());
- client.from(getFromAddress());
- client.to(to);
-
- os = client.startMessage();
- return os;
- }
-
- @Override
- public Permission getPermission() throws IOException {
- if (permission == null) {
- connect();
- String host = client.getMailHost() + ":" + 25;
- permission = new SocketPermission(host, "connect");
- }
- return permission;
- }
-
- @Override
- public void setConnectTimeout(int timeout) {
- if (timeout < 0)
- throw new IllegalArgumentException("timeouts can't be negative");
- connectTimeout = timeout;
- }
-
- @Override
- public int getConnectTimeout() {
- return (connectTimeout < 0 ? 0 : connectTimeout);
- }
-
- @Override
- public void setReadTimeout(int timeout) {
- if (timeout < 0)
- throw new IllegalArgumentException("timeouts can't be negative");
- readTimeout = timeout;
- }
-
- @Override
- public int getReadTimeout() {
- return readTimeout < 0 ? 0 : readTimeout;
- }
-}
diff --git a/ojluni/src/main/java/sun/net/www/protocol/netdoc/Handler.java b/ojluni/src/main/java/sun/net/www/protocol/netdoc/Handler.java
deleted file mode 100755
index fbcddcb..0000000
--- a/ojluni/src/main/java/sun/net/www/protocol/netdoc/Handler.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 1996, 1998, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-/*-
- * netdoc urls point either into the local filesystem or externally
- * through an http url, with network documents being preferred. Useful for
- * FAQs & other documents which are likely to be changing over time at the
- * central site, and where the user will want the most recent edition.
- *
- * @author Steven B. Byrne
- */
-
-package sun.net.www.protocol.netdoc;
-
-import java.net.URL;
-import java.net.URLConnection;
-import java.net.MalformedURLException;
-import java.net.URLStreamHandler;
-import java.io.InputStream;
-import java.io.IOException;
-
-public class Handler extends URLStreamHandler {
- static URL base;
-
- /*
- * Attempt to find a load the given url using the default (network)
- * documentation location. If that fails, use the local copy
- */
- public synchronized URLConnection openConnection(URL u)
- throws IOException
- {
- URLConnection uc = null;
- URL ru;
-
- Boolean tmp = java.security.AccessController.doPrivileged(
- new sun.security.action.GetBooleanAction("newdoc.localonly"));
- boolean localonly = tmp.booleanValue();
-
- String docurl = java.security.AccessController.doPrivileged(
- new sun.security.action.GetPropertyAction("doc.url"));
-
- String file = u.getFile();
- if (!localonly) {
- try {
- if (base == null) {
- base = new URL(docurl);
- }
- ru = new URL(base, file);
- } catch (MalformedURLException e) {
- ru = null;
- }
- if (ru != null) {
- uc = ru.openConnection();
- }
- }
-
- if (uc == null) {
- try {
- ru = new URL("file", "~", file);
-
- uc = ru.openConnection();
- InputStream is = uc.getInputStream(); // Check for success.
- } catch (MalformedURLException e) {
- uc = null;
- } catch (IOException e) {
- uc = null;
- }
- }
-
- if (uc == null) {
- throw new IOException("Can't find file for URL: "
- +u.toExternalForm());
- }
- return uc;
- }
-}
diff --git a/openjdk_java_files.mk b/openjdk_java_files.mk
index 29bdd09..9d18407 100644
--- a/openjdk_java_files.mk
+++ b/openjdk_java_files.mk
@@ -1226,55 +1226,47 @@
ojluni/src/main/java/sun/net/TransferProtocolClient.java \
ojluni/src/main/java/sun/net/util/IPAddressUtil.java \
ojluni/src/main/java/sun/net/util/URLUtil.java \
- ojluni/src/main/java/sun/net/www/ApplicationLaunchException.java \
ojluni/src/main/java/sun/net/www/HeaderParser.java \
+ ojluni/src/main/java/sun/net/www/MessageHeader.java \
+ ojluni/src/main/java/sun/net/www/MeteredStream.java \
+ ojluni/src/main/java/sun/net/www/ParseUtil.java \
+ ojluni/src/main/java/sun/net/www/URLConnection.java \
ojluni/src/main/java/sun/net/www/http/ChunkedInputStream.java \
ojluni/src/main/java/sun/net/www/http/ChunkedOutputStream.java \
- ojluni/src/main/java/sun/net/www/http/HttpCaptureInputStream.java \
ojluni/src/main/java/sun/net/www/http/HttpCapture.java \
+ ojluni/src/main/java/sun/net/www/http/HttpCaptureInputStream.java \
ojluni/src/main/java/sun/net/www/http/HttpCaptureOutputStream.java \
ojluni/src/main/java/sun/net/www/http/HttpClient.java \
ojluni/src/main/java/sun/net/www/http/Hurryable.java \
ojluni/src/main/java/sun/net/www/http/KeepAliveCache.java \
- ojluni/src/main/java/sun/net/www/http/KeepAliveStreamCleaner.java \
ojluni/src/main/java/sun/net/www/http/KeepAliveStream.java \
+ ojluni/src/main/java/sun/net/www/http/KeepAliveStreamCleaner.java \
ojluni/src/main/java/sun/net/www/http/PosterOutputStream.java \
- ojluni/src/main/java/sun/net/www/MessageHeader.java \
- ojluni/src/main/java/sun/net/www/MeteredStream.java \
- ojluni/src/main/java/sun/net/www/MimeEntry.java \
- ojluni/src/main/java/sun/net/www/MimeLauncher.java \
- ojluni/src/main/java/sun/net/www/MimeTable.java \
- ojluni/src/main/java/sun/net/www/ParseUtil.java \
ojluni/src/main/java/sun/net/www/protocol/file/FileURLConnection.java \
ojluni/src/main/java/sun/net/www/protocol/file/Handler.java \
+ ojluni/src/main/java/sun/net/www/protocol/file/Handler.java \
ojluni/src/main/java/sun/net/www/protocol/ftp/FtpURLConnection.java \
ojluni/src/main/java/sun/net/www/protocol/ftp/Handler.java \
- ojluni/src/main/java/sun/net/www/protocol/gopher/GopherClient.java \
- ojluni/src/main/java/sun/net/www/protocol/gopher/Handler.java \
- ojluni/src/main/java/sun/net/www/protocol/http/AuthCacheImpl.java \
ojluni/src/main/java/sun/net/www/protocol/http/AuthCache.java \
+ ojluni/src/main/java/sun/net/www/protocol/http/AuthCacheImpl.java \
ojluni/src/main/java/sun/net/www/protocol/http/AuthCacheValue.java \
+ ojluni/src/main/java/sun/net/www/protocol/http/AuthScheme.java \
ojluni/src/main/java/sun/net/www/protocol/http/AuthenticationHeader.java \
ojluni/src/main/java/sun/net/www/protocol/http/AuthenticationInfo.java \
- ojluni/src/main/java/sun/net/www/protocol/http/AuthScheme.java \
ojluni/src/main/java/sun/net/www/protocol/http/BasicAuthentication.java \
ojluni/src/main/java/sun/net/www/protocol/http/DigestAuthentication.java \
ojluni/src/main/java/sun/net/www/protocol/http/Handler.java \
ojluni/src/main/java/sun/net/www/protocol/http/HttpAuthenticator.java \
ojluni/src/main/java/sun/net/www/protocol/http/HttpCallerInfo.java \
ojluni/src/main/java/sun/net/www/protocol/http/HttpURLConnection.java \
+ ojluni/src/main/java/sun/net/www/protocol/http/NTLMAuthenticationProxy.java \
ojluni/src/main/java/sun/net/www/protocol/http/NegotiateAuthentication.java \
ojluni/src/main/java/sun/net/www/protocol/http/Negotiator.java \
- ojluni/src/main/java/sun/net/www/protocol/http/NTLMAuthenticationProxy.java \
ojluni/src/main/java/sun/net/www/protocol/jar/Handler.java \
ojluni/src/main/java/sun/net/www/protocol/jar/JarFileFactory.java \
ojluni/src/main/java/sun/net/www/protocol/jar/JarURLConnection.java \
- ojluni/src/main/java/sun/net/www/protocol/jar/URLJarFileCallBack.java \
ojluni/src/main/java/sun/net/www/protocol/jar/URLJarFile.java \
- ojluni/src/main/java/sun/net/www/protocol/mailto/Handler.java \
- ojluni/src/main/java/sun/net/www/protocol/mailto/MailToURLConnection.java \
- ojluni/src/main/java/sun/net/www/protocol/netdoc/Handler.java \
- ojluni/src/main/java/sun/net/www/URLConnection.java \
+ ojluni/src/main/java/sun/net/www/protocol/jar/URLJarFileCallBack.java \
ojluni/src/main/java/sun/nio/ByteBuffered.java \
ojluni/src/main/java/sun/nio/ch/AbstractPollArrayWrapper.java \
ojluni/src/main/java/sun/nio/ch/AbstractPollSelectorImpl.java \