// XXX dir.canWrite() has issues on Windows, so verify it directly: // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6203387 public static boolean isDirectoryWritable(File dir) { boolean isWritable = false; if (dir != null) { // new File("").isDirectory() is false, even though getAbsolutePath() returns the right path. // this resolves it dir = dir.getAbsoluteFile(); if (dir.isDirectory()) { File file = new File( dir, String.format( "pms_directory_write_test_%d_%d.tmp", System.currentTimeMillis(), Thread.currentThread().getId())); try { if (file.createNewFile()) { if (isFileWritable(file)) { isWritable = true; } if (!file.delete()) { LOGGER.warn("Can't delete temporary test file: {}", file.getAbsolutePath()); } } } catch (IOException | SecurityException ioe) { } } } return isWritable; }
/** * Retrieves recursively all the classes belonging to a package. * * @param packageName * @return the list of Class found * @throws ClassNotFoundException if any error occurs */ public static List<Class<?>> getClassesInPackage(String packageName) throws ClassNotFoundException { return getClassesInPackage(packageName, Thread.currentThread().getContextClassLoader()); }