langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/api/BasicJavacTask.java
changeset 31506 4e07f827a794
parent 27387 54142fc27e8a
child 36526 3b41f1c69604
equal deleted inserted replaced
31505:98c52b994430 31506:4e07f827a794
    27 
    27 
    28 import java.util.Collection;
    28 import java.util.Collection;
    29 import java.util.LinkedHashSet;
    29 import java.util.LinkedHashSet;
    30 import java.util.Locale;
    30 import java.util.Locale;
    31 import java.util.Set;
    31 import java.util.Set;
       
    32 import java.util.stream.Collectors;
    32 
    33 
    33 import javax.annotation.processing.Processor;
    34 import javax.annotation.processing.Processor;
    34 import javax.lang.model.element.Element;
    35 import javax.lang.model.element.Element;
    35 import javax.lang.model.type.TypeMirror;
    36 import javax.lang.model.type.TypeMirror;
    36 import javax.lang.model.util.Elements;
    37 import javax.lang.model.util.Elements;
    44 import com.sun.source.util.TaskListener;
    45 import com.sun.source.util.TaskListener;
    45 import com.sun.tools.doclint.DocLint;
    46 import com.sun.tools.doclint.DocLint;
    46 import com.sun.tools.javac.main.JavaCompiler;
    47 import com.sun.tools.javac.main.JavaCompiler;
    47 import com.sun.tools.javac.model.JavacElements;
    48 import com.sun.tools.javac.model.JavacElements;
    48 import com.sun.tools.javac.model.JavacTypes;
    49 import com.sun.tools.javac.model.JavacTypes;
       
    50 import com.sun.tools.javac.platform.PlatformDescription;
       
    51 import com.sun.tools.javac.platform.PlatformDescription.PluginInfo;
    49 import com.sun.tools.javac.processing.JavacProcessingEnvironment;
    52 import com.sun.tools.javac.processing.JavacProcessingEnvironment;
    50 import com.sun.tools.javac.tree.JCTree;
    53 import com.sun.tools.javac.tree.JCTree;
    51 import com.sun.tools.javac.util.Context;
    54 import com.sun.tools.javac.util.Context;
    52 import com.sun.tools.javac.util.DefinedBy;
    55 import com.sun.tools.javac.util.DefinedBy;
    53 import com.sun.tools.javac.util.DefinedBy.Api;
    56 import com.sun.tools.javac.util.DefinedBy.Api;
   169     public Context getContext() {
   172     public Context getContext() {
   170         return context;
   173         return context;
   171     }
   174     }
   172 
   175 
   173     public void initPlugins(Set<List<String>> pluginOpts) {
   176     public void initPlugins(Set<List<String>> pluginOpts) {
       
   177         PlatformDescription platformProvider = context.get(PlatformDescription.class);
       
   178 
       
   179         if (platformProvider != null) {
       
   180             for (PluginInfo<Plugin> pluginDesc : platformProvider.getPlugins()) {
       
   181                 java.util.List<String> options =
       
   182                         pluginDesc.getOptions().entrySet().stream()
       
   183                                                           .map(e -> e.getKey() + "=" + e.getValue())
       
   184                                                           .collect(Collectors.toList());
       
   185                 try {
       
   186                     pluginDesc.getPlugin().init(this, options.toArray(new String[options.size()]));
       
   187                 } catch (RuntimeException ex) {
       
   188                     throw new PropagatedException(ex);
       
   189                 }
       
   190             }
       
   191         }
       
   192 
   174         if (pluginOpts.isEmpty())
   193         if (pluginOpts.isEmpty())
   175             return;
   194             return;
   176 
   195 
   177         Set<List<String>> pluginsToCall = new LinkedHashSet<>(pluginOpts);
   196         Set<List<String>> pluginsToCall = new LinkedHashSet<>(pluginOpts);
   178         JavacProcessingEnvironment pEnv = JavacProcessingEnvironment.instance(context);
   197         JavacProcessingEnvironment pEnv = JavacProcessingEnvironment.instance(context);