private URL locateResource( String publicName, String category, String defaultName, boolean verbose, File publicRoot) throws IOException { URL u = null; boolean custom = false; if (publicName != null) { if (publicRoot != null) { File publicResource = new File(publicRoot, publicName); if (publicResource.exists() && publicResource.isFile()) { u = publicResource.toURI().toURL(); } } else { u = baseResourceLoader.getClassLoader().getResource(publicName); } custom = (u != null); } if (u == null && defaultName != null) { u = baseResourceLoader.getResource(defaultName); } String msg = null; if (custom) { msg = MessageFormat.format( I18N.getString("message.using-custom-resource-from-classpath"), category == null ? "" : "[" + category + "] ", publicName); } else if (u != null) { msg = MessageFormat.format( I18N.getString("message.using-default-resource-from-classpath"), category == null ? "" : "[" + category + "] ", publicName); } if (verbose && u != null) { Log.info(msg); } return u; }
private static long getLastModified(Class cls) { try { String shortName = cls.getName().substring(1 + cls.getName().lastIndexOf('.')); java.net.URL url = cls.getResource(shortName + ".class"); String file = url.getFile(); // System.out.println("url="+url); if ("file".equals(url.getProtocol())) { // example: // file='/home/cliffwd/cvs/dublin/nb_all/schema2beans/rt/src/org/netbeans/modules/schema2beans/GenBeans.class' String result = file.substring(0, file.length() - cls.getName().length() - 6); return new File(file).lastModified(); } else if ("jar".equals(url.getProtocol())) { // example: file = 'jar:/usr/local/j2sdkee1.3.1/lib/j2ee.jar!/org/w3c/dom/Node.class' String jarFile = file.substring(file.indexOf(':') + 1); jarFile = jarFile.substring(0, jarFile.indexOf('!')); // System.out.println("jarFile="+jarFile); return new File(jarFile).lastModified(); } return url.openConnection().getDate(); } catch (java.io.IOException e) { return 0; } }