@Deprecate Resource.getURL() which isn't generally safe, and removes all overrides. Review by: bobv git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@6699 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/resource/Resource.java b/dev/core/src/com/google/gwt/dev/resource/Resource.java index 0a49ff6..94bfd51 100644 --- a/dev/core/src/com/google/gwt/dev/resource/Resource.java +++ b/dev/core/src/com/google/gwt/dev/resource/Resource.java
@@ -16,6 +16,7 @@ package com.google.gwt.dev.resource; import java.io.InputStream; +import java.net.MalformedURLException; import java.net.URL; /** @@ -37,8 +38,9 @@ public abstract long getLastModified(); /** - * Returns the user-relevant location of the resource. No programmatic - * assumptions should be made about the return value. + * Returns the URL-like location of the resource. The returned value should + * generally reflect a unique resource in the system. The returned value will + * only be a valid URL if the underlying object is accessible via a URL. */ public abstract String getLocation(); @@ -48,13 +50,19 @@ public abstract String getPath(); /** - * Returns a URL for this resource; this URL will only be valid for resources - * based off the file system. + * Returns a URL for this resource if the resource happens to be based off the + * file system, otherwise returns <code>null</code>. * - * TODO: get rid of this method? + * @deprecated with no replacement */ - public abstract URL getURL(); - + @Deprecated + public final URL getURL() { + try { + return new URL(getLocation()); + } catch (MalformedURLException e) { + return null; + } + } /** * Overridden to finalize; always returns identity hash code. */
diff --git a/dev/core/src/com/google/gwt/dev/resource/impl/FileResource.java b/dev/core/src/com/google/gwt/dev/resource/impl/FileResource.java index a3183cc..291ecd5 100644 --- a/dev/core/src/com/google/gwt/dev/resource/impl/FileResource.java +++ b/dev/core/src/com/google/gwt/dev/resource/impl/FileResource.java
@@ -19,8 +19,6 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URL; /** * Represents a resource contained in directory on a file system. @@ -62,15 +60,6 @@ } @Override - public URL getURL() { - try { - return new URL(getLocation()); - } catch (MalformedURLException e) { - throw new RuntimeException(e); - } - } - - @Override public boolean isStale() { if (!file.exists()) { // File was deleted. Always stale.
diff --git a/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java b/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java index 9a5696e..8982cf3 100644 --- a/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java +++ b/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java
@@ -105,11 +105,6 @@ } @Override - public URL getURL() { - return resource.getURL(); - } - - @Override public boolean isStale() { return resource.isStale(); }
diff --git a/dev/core/src/com/google/gwt/dev/resource/impl/ZipFileResource.java b/dev/core/src/com/google/gwt/dev/resource/impl/ZipFileResource.java index bfd6432..602bd3a 100644 --- a/dev/core/src/com/google/gwt/dev/resource/impl/ZipFileResource.java +++ b/dev/core/src/com/google/gwt/dev/resource/impl/ZipFileResource.java
@@ -17,8 +17,6 @@ import java.io.IOException; import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URL; import java.util.jar.JarFile; import java.util.zip.ZipEntry; @@ -59,15 +57,6 @@ return path; } - @Override - public URL getURL() { - try { - return new URL(getLocation()); - } catch (MalformedURLException e) { - throw new RuntimeException(e); - } - } - /** * Since we don't dynamically reload zips during a run, zip-based resources * cannot become stale.
diff --git a/dev/core/src/com/google/gwt/dev/shell/GWTShellServlet.java b/dev/core/src/com/google/gwt/dev/shell/GWTShellServlet.java index 162ab12..269fdbd 100644 --- a/dev/core/src/com/google/gwt/dev/shell/GWTShellServlet.java +++ b/dev/core/src/com/google/gwt/dev/shell/GWTShellServlet.java
@@ -404,6 +404,7 @@ * @param moduleName the name of the module * @throws IOException */ + @SuppressWarnings("deprecation") private void doGetPublicFile(HttpServletRequest request, HttpServletResponse response, TreeLogger logger, String partialPath, String moduleName) throws IOException {
diff --git a/dev/core/src/com/google/gwt/dev/shell/HostedModeServletContextProxy.java b/dev/core/src/com/google/gwt/dev/shell/HostedModeServletContextProxy.java index b68f90a..d6b321e 100644 --- a/dev/core/src/com/google/gwt/dev/shell/HostedModeServletContextProxy.java +++ b/dev/core/src/com/google/gwt/dev/shell/HostedModeServletContextProxy.java
@@ -157,6 +157,7 @@ * @throws MalformedURLException * @see javax.servlet.ServletContext#getResource(java.lang.String) */ + @SuppressWarnings("deprecation") public URL getResource(String path) throws MalformedURLException { ModuleDef moduleDef = moduleDefRef.get(); assert (moduleDef != null) : "GWTShellServlet should have guaranteed that a"
diff --git a/dev/core/src/com/google/gwt/dev/shell/tomcat/EmbeddedTomcatServer.java b/dev/core/src/com/google/gwt/dev/shell/tomcat/EmbeddedTomcatServer.java index 5a86612..5d72cf1 100644 --- a/dev/core/src/com/google/gwt/dev/shell/tomcat/EmbeddedTomcatServer.java +++ b/dev/core/src/com/google/gwt/dev/shell/tomcat/EmbeddedTomcatServer.java
@@ -22,7 +22,7 @@ import com.google.gwt.dev.resource.impl.PathPrefixSet; import com.google.gwt.dev.resource.impl.ResourceOracleImpl; import com.google.gwt.dev.shell.WorkDirs; -import com.google.gwt.util.tools.Utility; +import com.google.gwt.dev.util.Util; import org.apache.catalina.Connector; import org.apache.catalina.ContainerEvent; @@ -39,7 +39,6 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; -import java.io.InputStream; import java.lang.reflect.Field; import java.net.InetAddress; import java.net.ServerSocket; @@ -275,70 +274,44 @@ * Assumes that the leaf is a file (not a directory). */ private void copyFileNoOverwrite(TreeLogger logger, String srcResName, - Resource resource, File catBase) { + Resource srcRes, File catBase) { File dest = new File(catBase, srcResName); - InputStream is = null; - FileOutputStream os = null; try { - URL srcRes = resource.getURL(); - if (srcRes == null) { - logger.log(TreeLogger.TRACE, "Cannot find: " + srcResName, null); - return; - } - // Only copy if src is newer than desc. - // - long srcLastModified = srcRes.openConnection().getLastModified(); + long srcLastModified = srcRes.getLastModified(); long dstLastModified = dest.lastModified(); if (srcLastModified < dstLastModified) { // Don't copy over it. - // logger.log(TreeLogger.SPAM, "Source is older than existing: " + dest.getAbsolutePath(), null); return; } else if (srcLastModified == dstLastModified) { // Exact same time; quietly don't overwrite. - // return; } else if (dest.exists()) { // Warn about the overwrite logger.log(TreeLogger.WARN, "Overwriting existing file '" - + dest.getAbsolutePath() + "' with '" + resource.getLocation() + + dest.getAbsolutePath() + "' with '" + srcRes.getLocation() + "', which has a newer timestamp"); } // Make dest directories as required. - // File destParent = dest.getParentFile(); if (destParent != null) { // No need to check mkdirs result because IOException later anyway. destParent.mkdirs(); } - // Open in and out streams. - // - is = srcRes.openStream(); - os = new FileOutputStream(dest); - - // Copy the bytes over. - // - Utility.streamOut(is, os, 1024); - - // Try to close and change the last modified time. - // - Utility.close(os); + Util.copy(srcRes.openContents(), new FileOutputStream(dest)); dest.setLastModified(srcLastModified); logger.log(TreeLogger.TRACE, "Wrote: " + dest.getAbsolutePath(), null); } catch (IOException e) { logger.log(TreeLogger.WARN, "Failed to write: " + dest.getAbsolutePath(), e); - } finally { - Utility.close(is); - Utility.close(os); - } + } } /**
diff --git a/dev/core/test/com/google/gwt/dev/javac/impl/MockResource.java b/dev/core/test/com/google/gwt/dev/javac/impl/MockResource.java index bcce637..9c99761 100644 --- a/dev/core/test/com/google/gwt/dev/javac/impl/MockResource.java +++ b/dev/core/test/com/google/gwt/dev/javac/impl/MockResource.java
@@ -48,11 +48,6 @@ } @Override - public URL getURL() { - return null; - } - - @Override public InputStream openContents() { return new ByteArrayInputStream(Util.getBytes(getContent().toString())); }
diff --git a/dev/core/test/com/google/gwt/dev/resource/impl/MockAbstractResource.java b/dev/core/test/com/google/gwt/dev/resource/impl/MockAbstractResource.java index afca6d4..775d555 100644 --- a/dev/core/test/com/google/gwt/dev/resource/impl/MockAbstractResource.java +++ b/dev/core/test/com/google/gwt/dev/resource/impl/MockAbstractResource.java
@@ -18,7 +18,6 @@ import junit.framework.Assert; import java.io.InputStream; -import java.net.URL; public final class MockAbstractResource extends AbstractResource { private boolean isStale; @@ -51,11 +50,6 @@ } @Override - public URL getURL() { - return null; - } - - @Override public boolean isStale() { return isStale; }
diff --git a/dev/core/test/com/google/gwt/dev/shell/StandardGeneratorContextTest.java b/dev/core/test/com/google/gwt/dev/shell/StandardGeneratorContextTest.java index 5ec9238..2581868 100644 --- a/dev/core/test/com/google/gwt/dev/shell/StandardGeneratorContextTest.java +++ b/dev/core/test/com/google/gwt/dev/shell/StandardGeneratorContextTest.java
@@ -93,11 +93,6 @@ } @Override - public URL getURL() { - return null; - } - - @Override public InputStream openContents() { return new ByteArrayInputStream(Util.getBytes("w00t!")); }
diff --git a/user/src/com/google/gwt/resources/ext/ResourceGeneratorUtil.java b/user/src/com/google/gwt/resources/ext/ResourceGeneratorUtil.java index c0ea076..3f65e14 100644 --- a/user/src/com/google/gwt/resources/ext/ResourceGeneratorUtil.java +++ b/user/src/com/google/gwt/resources/ext/ResourceGeneratorUtil.java
@@ -92,9 +92,10 @@ resourceMap = oracle.getResourceMap(); } + @SuppressWarnings("deprecation") public URL locate(String resourceName) { Resource r = resourceMap.get(resourceName); - return r == null ? null : r.getURL(); + return (r == null) ? null : r.getURL(); } }