Remove unused ClosableJarHandler classes

Change-Id: If59eff0c46daf9509f88f6a24ff99c5be89657dd
diff --git a/dev/core/src/com/google/gwt/dev/url/CloseableJarHandler.java b/dev/core/src/com/google/gwt/dev/url/CloseableJarHandler.java
deleted file mode 100644
index 095c0cb..0000000
--- a/dev/core/src/com/google/gwt/dev/url/CloseableJarHandler.java
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * Copyright 2014 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.dev.url;
-
-import com.google.gwt.thirdparty.guava.common.collect.HashMultimap;
-import com.google.gwt.thirdparty.guava.common.collect.Multimap;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.JarURLConnection;
-import java.net.URL;
-import java.net.URLConnection;
-import java.security.Permission;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Opens connections to Zip files when requested and gathers them in a list for later closing.
- * <p>
- * This closing functionality makes it possible to run untrusted plugin code (for example
- * Generators) and still guarantee that there will be no accidental attempts to read from old and
- * deleted Zip files using stale InputStreams.
- */
-@SuppressWarnings("restriction")
-public class CloseableJarHandler extends sun.net.www.protocol.jar.Handler {
-
-  /**
-   * Passes through all URLConnection access but collects all created InputStreams.
-   */
-  private class CloseableUrlConnection extends URLConnection {
-
-    private JarURLConnection jarUrlConnection;
-
-    public CloseableUrlConnection(URL jarUrl, JarURLConnection jarUrlConnection) {
-      super(jarUrl);
-      this.jarUrlConnection = jarUrlConnection;
-    }
-
-    @Override
-    public void addRequestProperty(String key, String value) {
-      jarUrlConnection.addRequestProperty(key, value);
-    }
-
-    @Override
-    public void connect() throws IOException {
-      jarUrlConnection.connect();
-    }
-
-    @Override
-    public boolean getAllowUserInteraction() {
-      return jarUrlConnection.getAllowUserInteraction();
-    }
-
-    @Override
-    public int getConnectTimeout() {
-      return jarUrlConnection.getConnectTimeout();
-    }
-
-    @Override
-    public Object getContent() throws IOException {
-      return jarUrlConnection.getContent();
-    }
-
-    @Override
-    public Object getContent(Class[] classes) throws IOException {
-      return jarUrlConnection.getContent(classes);
-    }
-
-    @Override
-    public String getContentEncoding() {
-      return jarUrlConnection.getContentEncoding();
-    }
-
-    @Override
-    public int getContentLength() {
-      return jarUrlConnection.getContentLength();
-    }
-
-    // No @Override as the method is only available in Java 7.
-    public long getContentLengthLong() {
-      int contentLength = jarUrlConnection.getContentLength();
-      if (contentLength == -1) {
-        throw new RuntimeException("Content length could not be read because it exceeded "
-            + Integer.MAX_VALUE + " bytes.");
-      }
-      return contentLength;
-    }
-
-    @Override
-    public String getContentType() {
-      return jarUrlConnection.getContentType();
-    }
-
-    @Override
-    public long getDate() {
-      return jarUrlConnection.getDate();
-    }
-
-    @Override
-    public boolean getDefaultUseCaches() {
-      return jarUrlConnection.getDefaultUseCaches();
-    }
-
-    @Override
-    public boolean getDoInput() {
-      return jarUrlConnection.getDoInput();
-    }
-
-    @Override
-    public boolean getDoOutput() {
-      return jarUrlConnection.getDoOutput();
-    }
-
-    @Override
-    public long getExpiration() {
-      return jarUrlConnection.getExpiration();
-    }
-
-    @Override
-    public String getHeaderField(int n) {
-      return jarUrlConnection.getHeaderField(n);
-    }
-
-    // No need to override getHeaderField<Blah> as they all get routed to get getHeaderField()
-    @Override
-    public String getHeaderField(String name) {
-      return jarUrlConnection.getHeaderField(name);
-    }
-
-    @Override
-    public String getHeaderFieldKey(int n) {
-      return jarUrlConnection.getHeaderFieldKey(n);
-    }
-
-    @Override
-    public Map<String, List<String>> getHeaderFields() {
-      return jarUrlConnection.getHeaderFields();
-    }
-
-    @Override
-    public long getIfModifiedSince() {
-      return jarUrlConnection.getIfModifiedSince();
-    }
-
-    @Override
-    public InputStream getInputStream() throws IOException {
-      InputStream inputStream = jarUrlConnection.getInputStream();
-      URL jarFileURL = jarUrlConnection.getJarFileURL();
-      inputStreamsByJarFilePath.put(jarFileURL.getFile(), inputStream);
-      return inputStream;
-    }
-
-    @Override
-    public long getLastModified() {
-      return jarUrlConnection.getLastModified();
-    }
-
-    @Override
-    public OutputStream getOutputStream() throws IOException {
-      return jarUrlConnection.getOutputStream();
-    }
-
-    @Override
-    public Permission getPermission() throws IOException {
-      return jarUrlConnection.getPermission();
-    }
-
-    @Override
-    public int getReadTimeout() {
-      return jarUrlConnection.getReadTimeout();
-    }
-
-    @Override
-    public Map<String, List<String>> getRequestProperties() {
-      return jarUrlConnection.getRequestProperties();
-    }
-
-    @Override
-    public String getRequestProperty(String key) {
-      return jarUrlConnection.getRequestProperty(key);
-    }
-
-    @Override
-    public URL getURL() {
-      return jarUrlConnection.getURL();
-    }
-
-    @Override
-    public boolean getUseCaches() {
-      return jarUrlConnection.getUseCaches();
-    }
-
-    @Override
-    public void setAllowUserInteraction(boolean allowuserinteraction) {
-      jarUrlConnection.setAllowUserInteraction(allowuserinteraction);
-    }
-
-    @Override
-    public void setConnectTimeout(int timeout) {
-      jarUrlConnection.setConnectTimeout(timeout);
-    }
-
-    @Override
-    public void setDefaultUseCaches(boolean defaultusecaches) {
-      jarUrlConnection.setDefaultUseCaches(defaultusecaches);
-    }
-
-    @Override
-    public void setDoInput(boolean doinput) {
-      jarUrlConnection.setDoInput(doinput);
-    }
-
-    @Override
-    public void setDoOutput(boolean dooutput) {
-      jarUrlConnection.setDoOutput(dooutput);
-    }
-
-    @Override
-    public void setIfModifiedSince(long ifmodifiedsince) {
-      jarUrlConnection.setIfModifiedSince(ifmodifiedsince);
-    }
-
-    @Override
-    public void setReadTimeout(int timeout) {
-      jarUrlConnection.setReadTimeout(timeout);
-    }
-
-    @Override
-    public void setRequestProperty(String key, String value) {
-      jarUrlConnection.setRequestProperty(key, value);
-    }
-
-    @Override
-    public void setUseCaches(boolean usecaches) {
-      jarUrlConnection.setUseCaches(usecaches);
-    }
-
-    @Override
-    public String toString() {
-      return jarUrlConnection.toString();
-    }
-  }
-
-  private Multimap<String, InputStream> inputStreamsByJarFilePath = HashMultimap.create();
-
-  /**
-   * Closes all InputStreams that were created by the URL system that point at the given Jar file.
-   */
-  public void closeStreams(String jarFilePath) throws IOException {
-    Collection<InputStream> inputStreams = inputStreamsByJarFilePath.get(jarFilePath);
-    if (inputStreams == null) {
-      return;
-    }
-
-    for (InputStream inputStream : inputStreams) {
-      inputStream.close();
-    }
-    inputStreamsByJarFilePath.removeAll(jarFilePath);
-  }
-
-  @Override
-  protected URLConnection openConnection(URL jarUrl) throws IOException {
-    // Let the Jar system do the heavy lifting of opening the connection.
-    JarURLConnection jarUrlConnection = (JarURLConnection) super.openConnection(jarUrl);
-    // Ensures that when all connections have been closed the cached Zip file references will be
-    // cleared.
-    jarUrlConnection.setUseCaches(false);
-
-    // Wrap the jar url connection in a way that will collect all created InputStreams so that they
-    // can be closed.
-    return new CloseableUrlConnection(jarUrl, jarUrlConnection);
-  }
-}
diff --git a/dev/core/src/com/google/gwt/dev/url/CloseableJarHandlerFactory.java b/dev/core/src/com/google/gwt/dev/url/CloseableJarHandlerFactory.java
deleted file mode 100644
index 90c11ea..0000000
--- a/dev/core/src/com/google/gwt/dev/url/CloseableJarHandlerFactory.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2014 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.dev.url;
-
-import java.io.IOException;
-import java.net.URL;
-import java.net.URLStreamHandler;
-import java.net.URLStreamHandlerFactory;
-
-/**
- * A factory that constructs URL Stream Handlers and extends Jar protocol handling by making it
- * possible to close all InputStreams for a given Zip file.
- * <p>
- * This closing functionality makes it possible to run untrusted plugin code (for example
- * Generators) and still guarantee that there will be no accidental attempts to read from old and
- * deleted Zip files using stale InputStreams.
- */
-public class CloseableJarHandlerFactory implements URLStreamHandlerFactory {
-
-  /**
-   * Takes over the URL connection opening system so that Zip file connections can be gathered and
-   * then closed before Zip files are replaced on disk. This avoids a JVM crash on Linux that can
-   * occur if a third party plugin (ie. Generator) fails to close its InputStreams.
-   */
-  private static CloseableJarHandlerFactory closeableJarHandlerFactory;
-
-  /**
-   * Closes all InputStreams that were created by the URL system that point at the given Jar file.
-   */
-  public static void closeStreams(String jarFilePath) throws IOException {
-    closeableJarHandlerFactory.closeableJarHandler.closeStreams(jarFilePath);
-  }
-
-  /**
-   * Ensures that the standard UrlStreamHandlerFactory has been replaced.
-   */
-  public static synchronized void installOverride() {
-    if (closeableJarHandlerFactory == null) {
-      closeableJarHandlerFactory = new CloseableJarHandlerFactory();
-      URL.setURLStreamHandlerFactory(closeableJarHandlerFactory);
-    }
-  }
-
-  private static URLStreamHandler createHandlerForProtocol(String protocol) {
-    String className = String.format("sun.net.www.protocol.%s.Handler", protocol);
-    try {
-      return (URLStreamHandler) Class.forName(className).newInstance();
-    } catch (ClassNotFoundException e) {
-      throw new RuntimeException("Couldn't find handler for protocol: " + protocol);
-    } catch (InstantiationException e) {
-      throw new RuntimeException("Handler isn't not instantiable for protocol: " + protocol);
-    } catch (IllegalAccessException e) {
-      throw new RuntimeException("Handler isn't not accessible for protocol: " + protocol);
-    }
-  }
-
-  private CloseableJarHandler closeableJarHandler = new CloseableJarHandler();
-
-  private CloseableJarHandlerFactory() {
-    // Force access through the public static functions.
-  }
-
-  @Override
-  public URLStreamHandler createURLStreamHandler(String protocol) {
-    if (protocol.equals("jar")) {
-      // Override the url stream handler for Jar files.
-      return closeableJarHandler;
-    } else {
-      // Regular url stream handling for other protocols.
-      return createHandlerForProtocol(protocol);
-    }
-  }
-}