< prev index next >

src/com/sun/javatest/ResourceLoader.java

Print this page
rev 145 : 7902237: Fixing raw use of parameterized class
Reviewed-by: jjg


  28 package com.sun.javatest;
  29 
  30 import java.io.File;
  31 import java.io.IOException;
  32 import java.io.InputStream;
  33 import java.net.MalformedURLException;
  34 import java.net.URL;
  35 import java.net.URLClassLoader;
  36 import java.security.AccessController;
  37 import java.security.PrivilegedAction;
  38 import java.util.Enumeration;
  39 import java.util.Locale;
  40 import java.util.ResourceBundle;
  41 import java.util.StringTokenizer;
  42 import java.util.Vector;
  43 
  44 import com.sun.javatest.util.DynamicArray;
  45 
  46 public class ResourceLoader {
  47 
  48     public static Enumeration getResources(String name, Class ownClass) throws IOException  {
  49         URL extResource = getExtResource(name, null);
  50         if (extResource != null) {
  51             Vector<URL> r = new Vector<>();
  52             r.add(extResource);
  53             return r.elements();
  54         }
  55         return ownClass.getClassLoader().getResources(name);
  56     }
  57 
  58     public static InputStream getResourceAsStream(final String name, final Class ownClass) {
  59         URL url = getExtResource(name, ownClass);
  60         try {
  61             if (url != null) {
  62                 return url.openStream();
  63             } else {
  64                 InputStream is = AccessController.doPrivileged(
  65                         new PrivilegedAction<InputStream>() {
  66                             @Override
  67                             public InputStream run() {
  68                                 return ownClass.getResourceAsStream(name);
  69                             }
  70                         });
  71                 return is;
  72             }
  73         } catch (IOException e) {
  74             return null;
  75         }
  76     }
  77 
  78     public static File getResourceFile(String name, Class ownClass) {
  79         File f = getExtResourceFile(name, ownClass);
  80         if (f != null) {
  81             return f;
  82         } else {
  83             return new File(ownClass.getResource(name).getFile());
  84         }
  85     }
  86 
  87     public static URL getExtUrl(File filename) {
  88         URL url;
  89         File f = filename;
  90         try {
  91             if (!f.isAbsolute()) {
  92                 f = new File(ResourceLoader.getExt().getAbsoluteFile(),
  93                             filename.getPath());
  94             }
  95 
  96             url = f.toURI().toURL();
  97         } catch (MalformedURLException e2) {
  98             url = null;
  99         }   // catch
 100 
 101         return url;
 102     }
 103 
 104     private static URL getExtResource(String name, Class ownClass) {
 105         URL ret = null;
 106         File rf = getExtResourceFile(name, ownClass);
 107         if (rf != null) {
 108             try {
 109                 ret = rf.toURI().toURL();
 110             } catch (MalformedURLException ex) {
 111                 // it's ok
 112             }
 113         }
 114         return ret;
 115     }
 116 
 117     private static File getExtResourceFile(String name, Class ownClass) {
 118         if (ext != null) {
 119             String relName;
 120             if (ownClass == null) {
 121                 relName = name;
 122             } else {
 123                 relName = resolveName(name, ownClass);
 124             }
 125 
 126             File resFile = new File(getExt(), relName);
 127             if (resFile.exists()) {
 128                 return resFile;
 129             }
 130         }
 131         return null;
 132     }
 133 
 134 
 135     // get from java.lang.Class with minimal changes
 136     private static String resolveName(String name, Class baseClass) {
 137         if (name == null || baseClass == null) {
 138             return name;
 139         }
 140 
 141         if (!name.startsWith("/")) {
 142             String baseName = baseClass.getName();
 143             int index = baseName.lastIndexOf('.');
 144             if (index != -1) {
 145                 name = baseName.substring(0, index).replace('.', '/')
 146                     +"/"+name;
 147             }
 148         } else {
 149             name = name.substring(1);
 150         }
 151         return name;
 152     }
 153 
 154     private static final String EXT_DIR_NAME = "jtExt";
 155     private static File ext = null;
 156 




  28 package com.sun.javatest;
  29 
  30 import java.io.File;
  31 import java.io.IOException;
  32 import java.io.InputStream;
  33 import java.net.MalformedURLException;
  34 import java.net.URL;
  35 import java.net.URLClassLoader;
  36 import java.security.AccessController;
  37 import java.security.PrivilegedAction;
  38 import java.util.Enumeration;
  39 import java.util.Locale;
  40 import java.util.ResourceBundle;
  41 import java.util.StringTokenizer;
  42 import java.util.Vector;
  43 
  44 import com.sun.javatest.util.DynamicArray;
  45 
  46 public class ResourceLoader {
  47 
  48     public static Enumeration<URL> getResources(String name, Class<?> ownClass) throws IOException  {
  49         URL extResource = getExtResource(name, null);
  50         if (extResource != null) {
  51             Vector<URL> r = new Vector<>();
  52             r.add(extResource);
  53             return r.elements();
  54         }
  55         return ownClass.getClassLoader().getResources(name);
  56     }
  57 
  58     public static InputStream getResourceAsStream(final String name, final Class<?> ownClass) {
  59         URL url = getExtResource(name, ownClass);
  60         try {
  61             if (url != null) {
  62                 return url.openStream();
  63             } else {
  64                 InputStream is = AccessController.doPrivileged(
  65                         new PrivilegedAction<InputStream>() {
  66                             @Override
  67                             public InputStream run() {
  68                                 return ownClass.getResourceAsStream(name);
  69                             }
  70                         });
  71                 return is;
  72             }
  73         } catch (IOException e) {
  74             return null;
  75         }
  76     }
  77 
  78     public static File getResourceFile(String name, Class<?> ownClass) {
  79         File f = getExtResourceFile(name, ownClass);
  80         if (f != null) {
  81             return f;
  82         } else {
  83             return new File(ownClass.getResource(name).getFile());
  84         }
  85     }
  86 
  87     public static URL getExtUrl(File filename) {
  88         URL url;
  89         File f = filename;
  90         try {
  91             if (!f.isAbsolute()) {
  92                 f = new File(ResourceLoader.getExt().getAbsoluteFile(),
  93                             filename.getPath());
  94             }
  95 
  96             url = f.toURI().toURL();
  97         } catch (MalformedURLException e2) {
  98             url = null;
  99         }   // catch
 100 
 101         return url;
 102     }
 103 
 104     private static URL getExtResource(String name, Class<?> ownClass) {
 105         URL ret = null;
 106         File rf = getExtResourceFile(name, ownClass);
 107         if (rf != null) {
 108             try {
 109                 ret = rf.toURI().toURL();
 110             } catch (MalformedURLException ex) {
 111                 // it's ok
 112             }
 113         }
 114         return ret;
 115     }
 116 
 117     private static File getExtResourceFile(String name, Class<?> ownClass) {
 118         if (ext != null) {
 119             String relName;
 120             if (ownClass == null) {
 121                 relName = name;
 122             } else {
 123                 relName = resolveName(name, ownClass);
 124             }
 125 
 126             File resFile = new File(getExt(), relName);
 127             if (resFile.exists()) {
 128                 return resFile;
 129             }
 130         }
 131         return null;
 132     }
 133 
 134 
 135     // get from java.lang.Class with minimal changes
 136     private static String resolveName(String name, Class<?> baseClass) {
 137         if (name == null || baseClass == null) {
 138             return name;
 139         }
 140 
 141         if (!name.startsWith("/")) {
 142             String baseName = baseClass.getName();
 143             int index = baseName.lastIndexOf('.');
 144             if (index != -1) {
 145                 name = baseName.substring(0, index).replace('.', '/')
 146                     +"/"+name;
 147             }
 148         } else {
 149             name = name.substring(1);
 150         }
 151         return name;
 152     }
 153 
 154     private static final String EXT_DIR_NAME = "jtExt";
 155     private static File ext = null;
 156 


< prev index next >