diff --git a/jps/jps-builders/src/org/jetbrains/jps/javac/OptimizedFileManager17._java b/jps/jps-builders/src/org/jetbrains/jps/javac/OptimizedFileManager17._java index 7e1eb9f5958b..112468e320cf 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/javac/OptimizedFileManager17._java +++ b/jps/jps-builders/src/org/jetbrains/jps/javac/OptimizedFileManager17._java @@ -1,149 +1,149 @@ package org.jetbrains.jps.javac; -import com.sun.tools.javac.file.*; -import com.sun.tools.javac.util.Context; -import com.sun.tools.javac.util.List; -import com.sun.tools.javac.util.ListBuffer; - -import javax.lang.model.SourceVersion; -import javax.tools.*; -import java.io.File; -import java.io.IOException; -import java.lang.reflect.Field; -import java.util.Arrays; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; +//import com.sun.tools.javac.file.*; +//import com.sun.tools.javac.util.Context; +//import com.sun.tools.javac.util.List; +//import com.sun.tools.javac.util.ListBuffer; +// +//import javax.lang.model.SourceVersion; +//import javax.tools.*; +//import java.io.File; +//import java.io.IOException; +//import java.lang.reflect.Field; +//import java.util.Arrays; +//import java.util.Map; +//import java.util.Set; +//import java.util.concurrent.ConcurrentHashMap; /** * WARNING: Loaded via reflection, do not delete * * @noinspection UnusedDeclaration */ -class OptimizedFileManager17 extends com.sun.tools.javac.file.JavacFileManager { - private boolean myUseZipFileIndex; - private final Map myArchives; - private final Map myIsFile = new ConcurrentHashMap(); - - public OptimizedFileManager17() throws Throwable { - super(new Context(), true, null); - final Field archivesField = com.sun.tools.javac.file.JavacFileManager.class.getDeclaredField("archives"); - archivesField.setAccessible(true); - myArchives = (Map) archivesField.get(this); - } - - @Override - public Iterable list(Location location, String packageName, Set kinds, boolean recurse) throws IOException { - Iterable path = getLocation(location); - if (path == null) { - return List.nil(); - } - - RelativePath.RelativeDirectory subdirectory = new RelativePath.RelativeDirectory(packageName.replace('.', '/')); - - ListBuffer results = new ListBuffer(); - - for (File file : path) { - Archive archive = myArchives.get(file); - - final boolean isFile; - if (archive != null) { - isFile = true; - } - else { - isFile = isFile(file); - } - - if (isFile) { - // Not a directory; either a file or non-existant, create the archive - try { - if (archive == null) { - archive = openArchive(file); - } - listArchive(archive, subdirectory, kinds, recurse, results); - } - catch (IOException ex) { - log.error("error.reading.file", file, getMessage(ex)); - } - } - else { - listDirectory(file, subdirectory, kinds, recurse, results); - } - - } - return results.toList(); - } - - private static void listArchive(Archive archive, RelativePath.RelativeDirectory subdirectory, Set fileKinds, boolean recurse, ListBuffer resultList) { - // Get the files directly in the subdir - List files = archive.getFiles(subdirectory); - if (files != null) { - for (; !files.isEmpty(); files = files.tail) { - String file = files.head; - if (isValidFile(file, fileKinds)) { - resultList.append(archive.getFileObject(subdirectory, file)); - } - } - } - if (recurse) { - for (RelativePath.RelativeDirectory s: archive.getSubdirectories()) { - if (contains(subdirectory, s)) { - // Because the archive map is a flat list of directories, - // the enclosing loop will pick up all child subdirectories. - // Therefore, there is no need to recurse deeper. - listArchive(archive, s, fileKinds, false, resultList); - } - } - } - } - - private void listDirectory(File directory, RelativePath.RelativeDirectory subdirectory, Set fileKinds, boolean recurse, ListBuffer resultList) { - File d = subdirectory.getFile(directory); - - File[] files = d.listFiles(); - if (files == null) { - return; - } - - if (sortFiles != null) { - Arrays.sort(files, sortFiles); - } - - for (File f: files) { - String fileName = f.getName(); - if (f.isDirectory()) { - if (recurse && SourceVersion.isIdentifier(fileName)) { - listDirectory(directory, new RelativePath.RelativeDirectory(subdirectory, fileName), fileKinds, recurse, resultList); - } - } - else { - if (isValidFile(fileName, fileKinds)) { - //JavaFileObject fe = new RegularFileObject(this, fname, new File(d, fname)); - JavaFileObject fe = getRegularFile(f); - resultList.append(fe); - } - } - } - } - - private boolean isFile(File root) { - Boolean cachedIsFile = myIsFile.get(root); - if (cachedIsFile == null) { - cachedIsFile = root.isFile(); - myIsFile.put(root, cachedIsFile); - } - return cachedIsFile.booleanValue(); - } - - private static boolean contains(RelativePath.RelativeDirectory subdirectory, RelativePath.RelativeDirectory other) { - final String subdirPath = subdirectory.getPath(); - final String otherPath = other.getPath(); - return otherPath.length() > subdirPath.length() && otherPath.startsWith(subdirPath); - } - - private static boolean isValidFile(String name, Set fileKinds) { - JavaFileObject.Kind kind = getKind(name); - return fileKinds.contains(kind); - } - -} +//class OptimizedFileManager17 extends com.sun.tools.javac.file.JavacFileManager { +// private boolean myUseZipFileIndex; +// private final Map myArchives; +// private final Map myIsFile = new ConcurrentHashMap(); +// +// public OptimizedFileManager17() throws Throwable { +// super(new Context(), true, null); +// final Field archivesField = com.sun.tools.javac.file.JavacFileManager.class.getDeclaredField("archives"); +// archivesField.setAccessible(true); +// myArchives = (Map) archivesField.get(this); +// } +// +// @Override +// public Iterable list(Location location, String packageName, Set kinds, boolean recurse) throws IOException { +// Iterable path = getLocation(location); +// if (path == null) { +// return List.nil(); +// } +// +// RelativePath.RelativeDirectory subdirectory = new RelativePath.RelativeDirectory(packageName.replace('.', '/')); +// +// ListBuffer results = new ListBuffer(); +// +// for (File file : path) { +// Archive archive = myArchives.get(file); +// +// final boolean isFile; +// if (archive != null) { +// isFile = true; +// } +// else { +// isFile = isFile(file); +// } +// +// if (isFile) { +// // Not a directory; either a file or non-existant, create the archive +// try { +// if (archive == null) { +// archive = openArchive(file); +// } +// listArchive(archive, subdirectory, kinds, recurse, results); +// } +// catch (IOException ex) { +// log.error("error.reading.file", file, getMessage(ex)); +// } +// } +// else { +// listDirectory(file, subdirectory, kinds, recurse, results); +// } +// +// } +// return results.toList(); +// } +// +// private static void listArchive(Archive archive, RelativePath.RelativeDirectory subdirectory, Set fileKinds, boolean recurse, ListBuffer resultList) { +// // Get the files directly in the subdir +// List files = archive.getFiles(subdirectory); +// if (files != null) { +// for (; !files.isEmpty(); files = files.tail) { +// String file = files.head; +// if (isValidFile(file, fileKinds)) { +// resultList.append(archive.getFileObject(subdirectory, file)); +// } +// } +// } +// if (recurse) { +// for (RelativePath.RelativeDirectory s: archive.getSubdirectories()) { +// if (contains(subdirectory, s)) { +// // Because the archive map is a flat list of directories, +// // the enclosing loop will pick up all child subdirectories. +// // Therefore, there is no need to recurse deeper. +// listArchive(archive, s, fileKinds, false, resultList); +// } +// } +// } +// } +// +// private void listDirectory(File directory, RelativePath.RelativeDirectory subdirectory, Set fileKinds, boolean recurse, ListBuffer resultList) { +// File d = subdirectory.getFile(directory); +// +// File[] files = d.listFiles(); +// if (files == null) { +// return; +// } +// +// if (sortFiles != null) { +// Arrays.sort(files, sortFiles); +// } +// +// for (File f: files) { +// String fileName = f.getName(); +// if (f.isDirectory()) { +// if (recurse && SourceVersion.isIdentifier(fileName)) { +// listDirectory(directory, new RelativePath.RelativeDirectory(subdirectory, fileName), fileKinds, recurse, resultList); +// } +// } +// else { +// if (isValidFile(fileName, fileKinds)) { +// //JavaFileObject fe = new RegularFileObject(this, fname, new File(d, fname)); +// JavaFileObject fe = getRegularFile(f); +// resultList.append(fe); +// } +// } +// } +// } +// +// private boolean isFile(File root) { +// Boolean cachedIsFile = myIsFile.get(root); +// if (cachedIsFile == null) { +// cachedIsFile = root.isFile(); +// myIsFile.put(root, cachedIsFile); +// } +// return cachedIsFile.booleanValue(); +// } +// +// private static boolean contains(RelativePath.RelativeDirectory subdirectory, RelativePath.RelativeDirectory other) { +// final String subdirPath = subdirectory.getPath(); +// final String otherPath = other.getPath(); +// return otherPath.length() > subdirPath.length() && otherPath.startsWith(subdirPath); +// } +// +// private static boolean isValidFile(String name, Set fileKinds) { +// JavaFileObject.Kind kind = getKind(name); +// return fileKinds.contains(kind); +// } +// +//}