langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java
equal
deleted
inserted
replaced
29 import java.io.File; |
29 import java.io.File; |
30 import java.io.PrintWriter; |
30 import java.io.PrintWriter; |
31 import java.io.StringWriter; |
31 import java.io.StringWriter; |
32 import java.net.MalformedURLException; |
32 import java.net.MalformedURLException; |
33 import java.net.URL; |
33 import java.net.URL; |
|
34 import java.nio.file.Path; |
34 import java.util.*; |
35 import java.util.*; |
35 import java.util.regex.*; |
36 import java.util.regex.*; |
36 import java.util.stream.Collectors; |
37 import java.util.stream.Collectors; |
37 |
38 |
38 import javax.annotation.processing.*; |
39 import javax.annotation.processing.*; |
40 import javax.lang.model.element.*; |
41 import javax.lang.model.element.*; |
41 import javax.lang.model.util.*; |
42 import javax.lang.model.util.*; |
42 import javax.tools.JavaFileManager; |
43 import javax.tools.JavaFileManager; |
43 import javax.tools.JavaFileObject; |
44 import javax.tools.JavaFileObject; |
44 import javax.tools.StandardJavaFileManager; |
45 import javax.tools.StandardJavaFileManager; |
|
46 |
45 import static javax.tools.StandardLocation.*; |
47 import static javax.tools.StandardLocation.*; |
46 |
48 |
47 import com.sun.source.util.TaskEvent; |
49 import com.sun.source.util.TaskEvent; |
48 import com.sun.tools.javac.api.MultiTaskListener; |
50 import com.sun.tools.javac.api.MultiTaskListener; |
49 import com.sun.tools.javac.code.*; |
51 import com.sun.tools.javac.code.*; |
77 import com.sun.tools.javac.util.MatchingUtils; |
79 import com.sun.tools.javac.util.MatchingUtils; |
78 import com.sun.tools.javac.util.Name; |
80 import com.sun.tools.javac.util.Name; |
79 import com.sun.tools.javac.util.Names; |
81 import com.sun.tools.javac.util.Names; |
80 import com.sun.tools.javac.util.Options; |
82 import com.sun.tools.javac.util.Options; |
81 import com.sun.tools.javac.util.ServiceLoader; |
83 import com.sun.tools.javac.util.ServiceLoader; |
|
84 |
82 import static com.sun.tools.javac.code.Lint.LintCategory.PROCESSING; |
85 import static com.sun.tools.javac.code.Lint.LintCategory.PROCESSING; |
83 import static com.sun.tools.javac.code.Kinds.Kind.*; |
86 import static com.sun.tools.javac.code.Kinds.Kind.*; |
84 import static com.sun.tools.javac.main.Option.*; |
87 import static com.sun.tools.javac.main.Option.*; |
85 import static com.sun.tools.javac.comp.CompileStates.CompileState; |
88 import static com.sun.tools.javac.comp.CompileStates.CompileState; |
86 import static com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag.*; |
89 import static com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag.*; |
315 private Iterator<Processor> handleServiceLoaderUnavailability(String key, Exception e) { |
318 private Iterator<Processor> handleServiceLoaderUnavailability(String key, Exception e) { |
316 JavaFileManager fileManager = context.get(JavaFileManager.class); |
319 JavaFileManager fileManager = context.get(JavaFileManager.class); |
317 |
320 |
318 if (fileManager instanceof JavacFileManager) { |
321 if (fileManager instanceof JavacFileManager) { |
319 StandardJavaFileManager standardFileManager = (JavacFileManager) fileManager; |
322 StandardJavaFileManager standardFileManager = (JavacFileManager) fileManager; |
320 Iterable<? extends File> workingPath = fileManager.hasLocation(ANNOTATION_PROCESSOR_PATH) |
323 Iterable<? extends Path> workingPath = fileManager.hasLocation(ANNOTATION_PROCESSOR_PATH) |
321 ? standardFileManager.getLocation(ANNOTATION_PROCESSOR_PATH) |
324 ? standardFileManager.getLocationAsPaths(ANNOTATION_PROCESSOR_PATH) |
322 : standardFileManager.getLocation(CLASS_PATH); |
325 : standardFileManager.getLocationAsPaths(CLASS_PATH); |
323 |
326 |
324 if (needClassLoader(options.get(PROCESSOR), workingPath) ) |
327 if (needClassLoader(options.get(PROCESSOR), workingPath) ) |
325 handleException(key, e); |
328 handleException(key, e); |
326 |
329 |
327 } else { |
330 } else { |
1296 |
1299 |
1297 /* |
1300 /* |
1298 * Called retroactively to determine if a class loader was required, |
1301 * Called retroactively to determine if a class loader was required, |
1299 * after we have failed to create one. |
1302 * after we have failed to create one. |
1300 */ |
1303 */ |
1301 private boolean needClassLoader(String procNames, Iterable<? extends File> workingpath) { |
1304 private boolean needClassLoader(String procNames, Iterable<? extends Path> workingpath) { |
1302 if (procNames != null) |
1305 if (procNames != null) |
1303 return true; |
1306 return true; |
1304 |
1307 |
1305 URL[] urls = new URL[1]; |
1308 URL[] urls = new URL[1]; |
1306 for(File pathElement : workingpath) { |
1309 for(Path pathElement : workingpath) { |
1307 try { |
1310 try { |
1308 urls[0] = pathElement.toURI().toURL(); |
1311 urls[0] = pathElement.toUri().toURL(); |
1309 if (ServiceProxy.hasService(Processor.class, urls)) |
1312 if (ServiceProxy.hasService(Processor.class, urls)) |
1310 return true; |
1313 return true; |
1311 } catch (MalformedURLException ex) { |
1314 } catch (MalformedURLException ex) { |
1312 throw new AssertionError(ex); |
1315 throw new AssertionError(ex); |
1313 } |
1316 } |