diff -r 90c28923e449 -r 35e29f51a7c3 src/share/classes/com/sun/tools/javac/file/JavacFileManager.java --- a/src/share/classes/com/sun/tools/javac/file/JavacFileManager.java Thu Sep 03 18:34:17 2009 -0700 +++ b/src/share/classes/com/sun/tools/javac/file/JavacFileManager.java Tue Sep 08 11:12:13 2009 -0700 @@ -26,6 +26,7 @@ package com.sun.tools.javac.file; import java.io.ByteArrayOutputStream; +import java.io.Closeable; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -36,6 +37,7 @@ import java.lang.reflect.Constructor; import java.net.MalformedURLException; import java.net.URI; +import java.net.URISyntaxException; import java.net.URL; import java.net.URLClassLoader; import java.nio.ByteBuffer; @@ -77,7 +79,6 @@ import com.sun.tools.javac.util.Log; import com.sun.tools.javac.util.Options; -import java.io.Closeable; import static javax.tools.StandardLocation.*; import static com.sun.tools.javac.main.OptionName.*; @@ -437,6 +438,7 @@ return Collections.emptySet(); } + @Override public String toString() { return "MissingArchive[" + zipFileName + "]"; } @@ -654,10 +656,10 @@ private final ByteBufferCache byteBufferCache; CharsetDecoder getDecoder(String encodingName, boolean ignoreEncodingErrors) { - Charset charset = (this.charset == null) + Charset cs = (this.charset == null) ? Charset.forName(encodingName) : this.charset; - CharsetDecoder decoder = charset.newDecoder(); + CharsetDecoder decoder = cs.newDecoder(); CodingErrorAction action; if (ignoreEncodingErrors) @@ -892,7 +894,7 @@ nullCheck(location); // validatePackageName(packageName); nullCheck(packageName); - if (!isRelativeUri(URI.create(relativeName))) // FIXME 6419701 + if (!isRelativeUri(relativeName)) throw new IllegalArgumentException("Invalid relative name: " + relativeName); RelativeFile name = packageName.length() == 0 ? new RelativeFile(relativeName) @@ -946,7 +948,7 @@ nullCheck(location); // validatePackageName(packageName); nullCheck(packageName); - if (!isRelativeUri(URI.create(relativeName))) // FIXME 6419701 + if (!isRelativeUri(relativeName)) throw new IllegalArgumentException("relativeName is invalid"); RelativeFile name = packageName.length() == 0 ? new RelativeFile(relativeName) @@ -1085,6 +1087,15 @@ return first != '.' && first != '/'; } + // Convenience method + protected static boolean isRelativeUri(String u) { + try { + return isRelativeUri(new URI(u)); + } catch (URISyntaxException e) { + return false; + } + } + /** * Converts a relative file name to a relative URI. This is * different from File.toURI as this method does not canonicalize @@ -1099,7 +1110,7 @@ public static String getRelativeName(File file) { if (!file.isAbsolute()) { String result = file.getPath().replace(File.separatorChar, '/'); - if (JavacFileManager.isRelativeUri(URI.create(result))) // FIXME 6419701 + if (isRelativeUri(result)) return result; } throw new IllegalArgumentException("Invalid relative path: " + file);