langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java
changeset 36492 12abe038f3d9
parent 35810 9ee6e90d679c
child 36526 3b41f1c69604
equal deleted inserted replaced
36280:c870cb782aca 36492:12abe038f3d9
    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             }