/[classpath]/classpath/java/net/URLClassLoader.java
ViewVC logotype

Diff of /classpath/java/net/URLClassLoader.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.13 by mark, Mon Dec 23 01:59:42 2002 UTC revision 1.14 by mark, Fri Jan 17 19:14:07 2003 UTC
# Line 238  public class URLClassLoader extends Secu Line 238  public class URLClassLoader extends Secu
238      CodeSource getCodeSource()      CodeSource getCodeSource()
239      {      {
240        Certificate[] certs = getCertificates();        Certificate[] certs = getCertificates();
241        if (certs != null)        if (certs == null)
242          return loader.noCertCodeSource;          return loader.noCertCodeSource;
243        else        else
244          return new CodeSource(loader.baseURL, certs);          return new CodeSource(loader.baseURL, certs);
# Line 272  public class URLClassLoader extends Secu Line 272  public class URLClassLoader extends Secu
272    }    }
273    
274    /**    /**
    * Returns the given URL with a canonicalized file path name when it  
    * is has the file protocol. Otherwise (or when the file part of the  
    * URL couldn't be canonicalized) it returns the original String.  
    * It makes sure that if the original file part ended with a file  
    * separator that the new file part also ends with a separator.  
    */  
   static URL getCanonicalFileURL(URL url)  
   {  
     if ("file".equals(url.getProtocol()))  
       {  
         try  
           {  
             String f = url.getFile();  
             File file = new File(f).getCanonicalFile();  
             String cf = file.toString();  
             String sep = File.separator;  
             if (f.endsWith(sep) && !cf.endsWith(sep))  
               {  
                 cf += "/";  
               }  
             url = new URL("file", "", cf);  
           }  
         catch (IOException ignore)  
           {  
           }  
       }  
     return url;  
   }  
   
   /**  
275     * A <code>JarURLLoader</code> is a type of <code>URLLoader</code>     * A <code>JarURLLoader</code> is a type of <code>URLLoader</code>
276     * only loading from jar url.     * only loading from jar url.
277     */     */
278    final static class JarURLLoader extends URLLoader    final static class JarURLLoader extends URLLoader
279    {    {
280      final JarFile jarfile; // The canonical jar file for this url      final JarFile jarfile; // The jar file for this url
281      final URL baseJarURL;  // Base jar: url for all resources loaded from jar      final URL baseJarURL;  // Base jar: url for all resources loaded from jar
282    
283      public JarURLLoader(URLClassLoader classloader, URL baseURL)      public JarURLLoader(URLClassLoader classloader, URL baseURL)
284      {      {
285        super(classloader, getCanonicalFileURL(baseURL));        super(classloader, baseURL);
286    
287        // cache url prefix for all resources in this jar url        // cache url prefix for all resources in this jar url
288        String external = baseURL.toExternalForm();        String external = baseURL.toExternalForm();
# Line 495  public class URLClassLoader extends Secu Line 465  public class URLClassLoader extends Secu
465     */     */
466    final static class FileURLLoader extends URLLoader    final static class FileURLLoader extends URLLoader
467    {    {
468      File dir;   //the canonical file for this file url      File dir;   //the file for this file url
469    
470      FileURLLoader(URLClassLoader classloader, URL url)      FileURLLoader(URLClassLoader classloader, URL url)
471      {      {
472        super(classloader, getCanonicalFileURL(url));        super(classloader, url);
473        dir = new File(baseURL.getFile());        dir = new File(baseURL.getFile());
474      }      }
475    
# Line 507  public class URLClassLoader extends Secu Line 477  public class URLClassLoader extends Secu
477      Resource getResource(String name)      Resource getResource(String name)
478      {      {
479        File file = new File(dir, name);        File file = new File(dir, name);
       try  
         {  
           file = file.getCanonicalFile();  
         }  
       catch (IOException ignore)  
         {  
         }  
480        if (file.exists() && !file.isDirectory())        if (file.exists() && !file.isDirectory())
481          return new FileResource(this, name, file);          return new FileResource(this, name, file);
482        return null;        return null;

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26