@Override public FileObject getFileForInput(Location location, String packageName, String relativeName) throws IOException { FileKey key = FileKey.newResourceName(packageName, relativeName); FileManager files = getFiles(location); if (files != null) { return files.getReadable(key); } else { throw new FileNotFoundException("Cannot write: " + location); } }
@Override public JavaFileObject getJavaFileForOutput( Location location, String className, JavaFileObject.Kind kind, FileObject sibling) throws IOException { FileManager files = getFiles(location); if (files != null) { FileKey key = FileKey.newJavaName(className, kind); return files.getWritable(key); } else { throw new UnsupportedOperationException("Location " + location + " not supported"); } }
public Iterable<? extends File> getLocation(Location location) { if (location == StandardLocation.CLASS_PATH) { FileManager manager = getFiles(location); if (manager != null) { try { HashSet<File> files = new HashSet<File>(); manager.populateRoots(files); return files; } catch (IOException e) { e.printStackTrace(); } } } return null; }
@Override public Iterable<JavaFileObject> list( Location location, String packageName, Set<JavaFileObject.Kind> kinds, boolean recurse) throws IOException { Iterable<JavaFileObject> ret; if (location == StandardLocation.PLATFORM_CLASS_PATH) { ret = super.list(location, packageName, kinds, recurse); } else { FileManager files = getFiles(location); if (files != null) { ret = files.list(packageName, kinds, recurse, new ArrayList<JavaFileObject>()); } else { ret = Collections.emptyList(); } } return ret; }
@Override public FileObject getFileForOutput( Location location, String packageName, String relativeName, FileObject sibling) throws IOException { FileKey key = FileKey.newResourceName(packageName, relativeName); // Address a bug if (location == StandardLocation.SOURCE_PATH) { FileObject file = sourcePath.getReadable(key); if (file == null) { throw new FileNotFoundException("Not found:" + key.toString()); } return file; } else { FileManager files = getFiles(location); if (files != null) { return files.getWritable(key); } else { throw new FileNotFoundException("Cannot write: " + location); } } }