langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/api/BasicJavacTask.java
changeset 31506 4e07f827a794
parent 27387 54142fc27e8a
child 36526 3b41f1c69604
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/api/BasicJavacTask.java	Wed Jul 01 09:51:47 2015 +0200
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/api/BasicJavacTask.java	Wed Jul 01 09:51:48 2015 +0200
@@ -29,6 +29,7 @@
 import java.util.LinkedHashSet;
 import java.util.Locale;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import javax.annotation.processing.Processor;
 import javax.lang.model.element.Element;
@@ -46,6 +47,8 @@
 import com.sun.tools.javac.main.JavaCompiler;
 import com.sun.tools.javac.model.JavacElements;
 import com.sun.tools.javac.model.JavacTypes;
+import com.sun.tools.javac.platform.PlatformDescription;
+import com.sun.tools.javac.platform.PlatformDescription.PluginInfo;
 import com.sun.tools.javac.processing.JavacProcessingEnvironment;
 import com.sun.tools.javac.tree.JCTree;
 import com.sun.tools.javac.util.Context;
@@ -171,6 +174,22 @@
     }
 
     public void initPlugins(Set<List<String>> pluginOpts) {
+        PlatformDescription platformProvider = context.get(PlatformDescription.class);
+
+        if (platformProvider != null) {
+            for (PluginInfo<Plugin> pluginDesc : platformProvider.getPlugins()) {
+                java.util.List<String> options =
+                        pluginDesc.getOptions().entrySet().stream()
+                                                          .map(e -> e.getKey() + "=" + e.getValue())
+                                                          .collect(Collectors.toList());
+                try {
+                    pluginDesc.getPlugin().init(this, options.toArray(new String[options.size()]));
+                } catch (RuntimeException ex) {
+                    throw new PropagatedException(ex);
+                }
+            }
+        }
+
         if (pluginOpts.isEmpty())
             return;