diff -r 01c9d4161882 -r c0f0c41cafa0 src/share/classes/com/sun/tools/javac/main/Main.java --- a/src/share/classes/com/sun/tools/javac/main/Main.java Sat Nov 17 19:01:03 2012 +0000 +++ b/src/share/classes/com/sun/tools/javac/main/Main.java Mon Nov 19 11:38:49 2012 -0800 @@ -33,24 +33,29 @@ import java.security.MessageDigest; import java.util.Arrays; import java.util.Collection; +import java.util.Iterator; import java.util.LinkedHashSet; +import java.util.ServiceLoader; import java.util.Set; + +import javax.annotation.processing.Processor; import javax.tools.JavaFileManager; import javax.tools.JavaFileObject; -import javax.annotation.processing.Processor; +import com.sun.source.util.JavacTask; +import com.sun.source.util.Plugin; import com.sun.tools.javac.code.Source; import com.sun.tools.javac.file.CacheFSInfo; import com.sun.tools.javac.file.JavacFileManager; import com.sun.tools.javac.jvm.Target; +import com.sun.tools.javac.processing.AnnotationProcessingError; +import com.sun.tools.javac.processing.JavacProcessingEnvironment; import com.sun.tools.javac.util.*; +import com.sun.tools.javac.util.Log.PrefixKind; import com.sun.tools.javac.util.Log.WriterKind; -import com.sun.tools.javac.util.Log.PrefixKind; -import com.sun.tools.javac.processing.AnnotationProcessingError; - import static com.sun.tools.javac.main.Option.*; -/** This class provides a commandline interface to the GJC compiler. +/** This class provides a command line interface to the javac compiler. * *
This is NOT part of any supported API.
* If you write code that depends on this, you do so at your own risk.
@@ -423,6 +428,42 @@
if (batchMode)
CacheFSInfo.preRegister(context);
+ // invoke any available plugins
+ String plugins = options.get(PLUGIN);
+ if (plugins != null) {
+ JavacProcessingEnvironment pEnv = JavacProcessingEnvironment.instance(context);
+ ClassLoader cl = pEnv.getProcessorClassLoader();
+ ServiceLoader> pluginsToCall = new LinkedHashSet
>();
+ for (String plugin: plugins.split("\\x00")) {
+ pluginsToCall.add(List.from(plugin.split("\\s+")));
+ }
+ JavacTask task = null;
+ Iterator