URLClassLoader.java (getCanonicalFileURL): New method.
2002-12-10 Mark Wielaard <mark@klomp.org> Tom Tromey <tromey@redhat.com> * java/net/URLClassLoader.java (getCanonicalFileURL): New method. (JarURLLoader): Use it. (FileURLLoader): Likewise. (JarURLResource.getURL): Use chained exception. (FileResource.getURL): Likewise. (FileURLLoader.getResource): Use canonical file name. (addURL): Indentation fix. Co-Authored-By: Tom Tromey <tromey@redhat.com> From-SVN: r60019
This commit is contained in:
parent
d23faea18e
commit
a7e693d5d2
@ -1,3 +1,14 @@
|
||||
2002-12-10 Mark Wielaard <mark@klomp.org>
|
||||
Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* java/net/URLClassLoader.java (getCanonicalFileURL): New method.
|
||||
(JarURLLoader): Use it.
|
||||
(FileURLLoader): Likewise.
|
||||
(JarURLResource.getURL): Use chained exception.
|
||||
(FileResource.getURL): Likewise.
|
||||
(FileURLLoader.getResource): Use canonical file name.
|
||||
(addURL): Indentation fix.
|
||||
|
||||
2002-12-10 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* include/win32.h: Fixed typo in "DISABLE_JAVA_NET".
|
||||
|
@ -271,6 +271,22 @@ public class URLClassLoader extends SecureClassLoader
|
||||
abstract InputStream getInputStream() throws IOException;
|
||||
}
|
||||
|
||||
static URL getCanonicalFileURL(URL url)
|
||||
{
|
||||
if ("file".equals(url.getProtocol()))
|
||||
{
|
||||
try
|
||||
{
|
||||
File f = new File(url.getFile()).getCanonicalFile();
|
||||
url = new URL("file", "", f.toString());
|
||||
}
|
||||
catch (IOException ignore)
|
||||
{
|
||||
}
|
||||
}
|
||||
return url;
|
||||
}
|
||||
|
||||
/**
|
||||
* A <code>JarURLLoader</code> is a type of <code>URLLoader</code>
|
||||
* only loading from jar url.
|
||||
@ -282,7 +298,7 @@ public class URLClassLoader extends SecureClassLoader
|
||||
|
||||
public JarURLLoader(URLClassLoader classloader, URL baseURL)
|
||||
{
|
||||
super(classloader, baseURL);
|
||||
super(classloader, getCanonicalFileURL(baseURL));
|
||||
|
||||
// cache url prefix for all resources in this jar url
|
||||
String external = baseURL.toExternalForm();
|
||||
@ -331,7 +347,6 @@ public class URLClassLoader extends SecureClassLoader
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
final static class JarURLResource extends Resource
|
||||
@ -368,7 +383,9 @@ public class URLClassLoader extends SecureClassLoader
|
||||
}
|
||||
catch(MalformedURLException e)
|
||||
{
|
||||
throw new InternalError(e.toString());
|
||||
InternalError ie = new InternalError();
|
||||
ie.initCause(e);
|
||||
throw ie;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -468,18 +485,23 @@ public class URLClassLoader extends SecureClassLoader
|
||||
|
||||
FileURLLoader(URLClassLoader classloader, URL url)
|
||||
{
|
||||
super(classloader, url);
|
||||
// Note that this must be a "file" protocol URL.
|
||||
dir = new File(url.getFile());
|
||||
super(classloader, getCanonicalFileURL(url));
|
||||
dir = new File(baseURL.getFile());
|
||||
}
|
||||
|
||||
/** get resource with the name "name" in the file url */
|
||||
Resource getResource(String name)
|
||||
{
|
||||
File file = new File(dir, name);
|
||||
try
|
||||
{
|
||||
file = file.getCanonicalFile();
|
||||
}
|
||||
catch (IOException ignore)
|
||||
{
|
||||
}
|
||||
if (file.exists() && !file.isDirectory())
|
||||
return new FileResource(this, name, file);
|
||||
else
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -513,7 +535,9 @@ public class URLClassLoader extends SecureClassLoader
|
||||
}
|
||||
catch(MalformedURLException e)
|
||||
{
|
||||
throw new InternalError(e.toString());
|
||||
InternalError ie = new InternalError();
|
||||
ie.initCause(e);
|
||||
throw ie;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -667,10 +691,9 @@ public class URLClassLoader extends SecureClassLoader
|
||||
{
|
||||
String file = newUrl.getFile();
|
||||
// Check that it is not a directory
|
||||
if (!(file.endsWith("/") || file.endsWith(File.separator)))
|
||||
if (! (file.endsWith("/") || file.endsWith(File.separator)))
|
||||
loader = new JarURLLoader(this, newUrl);
|
||||
else // it's a url that point to a jar file
|
||||
if ("file".equals(newUrl.getProtocol()))
|
||||
else if ("file".equals(newUrl.getProtocol()))
|
||||
loader = new FileURLLoader(this, newUrl);
|
||||
else
|
||||
loader = new RemoteURLLoader(this, newUrl);
|
||||
|
Loading…
Reference in New Issue
Block a user