langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java Tue Jan 06 15:46:41 2015 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java Tue Jan 06 14:51:10 2015 -0800
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -101,7 +101,6 @@
private final Set<JavaFileObject.Kind> sourceOrClass =
EnumSet.of(JavaFileObject.Kind.SOURCE, JavaFileObject.Kind.CLASS);
- protected boolean mmappedIO;
protected boolean symbolFileEnabled;
protected enum SortFiles implements Comparator<Path> {
@@ -157,7 +156,6 @@
if (contextUseOptimizedZip)
zipFileIndexCache = ZipFileIndexCache.getSharedInstance();
- mmappedIO = options.isSet("mmappedIO");
symbolFileEnabled = !options.isSet("ignore.symbol.file");
String sf = options.get("sortFiles");
@@ -177,10 +175,12 @@
return symbolFileEnabled;
}
+ // used by tests
public JavaFileObject getFileForInput(String name) {
return getRegularFile(Paths.get(name));
}
+ // used by tests
public JavaFileObject getRegularFile(Path file) {
return new RegularFileObject(this, file);
}
@@ -195,10 +195,10 @@
@Override @DefinedBy(Api.COMPILER)
public Iterable<? extends JavaFileObject> getJavaFileObjectsFromStrings(Iterable<String> names) {
- ListBuffer<File> files = new ListBuffer<>();
+ ListBuffer<Path> paths = new ListBuffer<>();
for (String name : names)
- files.append(new File(nullCheck(name)));
- return getJavaFileObjectsFromFiles(files.toList());
+ paths.append(Paths.get(nullCheck(name)));
+ return getJavaFileObjectsFromPaths(paths.toList());
}
@Override @DefinedBy(Api.COMPILER)
@@ -873,11 +873,30 @@
}
@Override @DefinedBy(Api.COMPILER)
+ public Iterable<? extends JavaFileObject> getJavaFileObjectsFromPaths(
+ Iterable<? extends Path> paths)
+ {
+ ArrayList<RegularFileObject> result;
+ if (paths instanceof Collection<?>)
+ result = new ArrayList<>(((Collection<?>)paths).size());
+ else
+ result = new ArrayList<>();
+ for (Path p: paths)
+ result.add(new RegularFileObject(this, nullCheck(p)));
+ return result;
+ }
+
+ @Override @DefinedBy(Api.COMPILER)
public Iterable<? extends JavaFileObject> getJavaFileObjects(File... files) {
return getJavaFileObjectsFromFiles(Arrays.asList(nullCheck(files)));
}
@Override @DefinedBy(Api.COMPILER)
+ public Iterable<? extends JavaFileObject> getJavaFileObjects(Path... paths) {
+ return getJavaFileObjectsFromPaths(Arrays.asList(nullCheck(paths)));
+ }
+
+ @Override @DefinedBy(Api.COMPILER)
public void setLocation(Location location,
Iterable<? extends File> searchpath)
throws IOException
@@ -887,12 +906,22 @@
}
@Override @DefinedBy(Api.COMPILER)
+ public void setLocationFromPaths(Location location,
+ Iterable<? extends Path> searchpath)
+ throws IOException
+ {
+ nullCheck(location);
+ locations.setLocation(location, nullCheck(searchpath));
+ }
+
+ @Override @DefinedBy(Api.COMPILER)
public Iterable<? extends File> getLocation(Location location) {
nullCheck(location);
return asFiles(locations.getLocation(location));
}
- private Iterable<? extends Path> getLocationAsPaths(Location location) {
+ @Override @DefinedBy(Api.COMPILER)
+ public Iterable<? extends Path> getLocationAsPaths(Location location) {
nullCheck(location);
return locations.getLocation(location);
}
@@ -905,6 +934,14 @@
return locations.getOutputLocation(SOURCE_OUTPUT);
}
+ @Override @DefinedBy(Api.COMPILER)
+ public Path asPath(FileObject file) {
+ if (file instanceof RegularFileObject) {
+ return ((RegularFileObject) file).file;
+ } else
+ throw new IllegalArgumentException(file.getName());
+ }
+
/**
* Enforces the specification of a "relative" name as used in
* {@linkplain #getFileForInput(Location,String,String)
@@ -1010,12 +1047,12 @@
@Override
public File next() {
- return iter.next().toFile();
+ try {
+ return iter.next().toFile();
+ } catch (UnsupportedOperationException e) {
+ throw new IllegalStateException(e);
+ }
}
};
}
-
- private static File asFile(Path path) {
- return path == null ? null : path.toFile();
- }
}