diff -r 0c9d42e88feb -r 1990493b64db langtools/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java --- a/langtools/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java Tue Feb 28 10:25:53 2012 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java Tue Feb 28 10:33:49 2012 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,8 +28,8 @@ import java.io.*; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.LinkedHashSet; -import java.util.LinkedHashMap; import java.util.Map; import java.util.MissingResourceException; import java.util.Queue; @@ -41,13 +41,13 @@ import javax.annotation.processing.Processor; import javax.lang.model.SourceVersion; +import javax.tools.DiagnosticListener; import javax.tools.JavaFileManager; import javax.tools.JavaFileObject; -import javax.tools.DiagnosticListener; +import static javax.tools.StandardLocation.CLASS_OUTPUT; import com.sun.source.util.TaskEvent; -import com.sun.source.util.TaskListener; - +import com.sun.tools.javac.api.MultiTaskListener; import com.sun.tools.javac.code.*; import com.sun.tools.javac.code.Lint.LintCategory; import com.sun.tools.javac.code.Symbol.*; @@ -60,8 +60,6 @@ import com.sun.tools.javac.tree.JCTree.*; import com.sun.tools.javac.util.*; import com.sun.tools.javac.util.Log.WriterKind; - -import static javax.tools.StandardLocation.CLASS_OUTPUT; import static com.sun.tools.javac.main.Option.*; import static com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag.*; import static com.sun.tools.javac.util.ListBuffer.lb; @@ -289,9 +287,9 @@ */ protected ParserFactory parserFactory; - /** Optional listener for progress events + /** Broadcasting listener for progress events */ - protected TaskListener taskListener; + protected MultiTaskListener taskListener; /** * Annotation processing may require and provide a new instance @@ -356,7 +354,7 @@ lower = Lower.instance(context); annotate = Annotate.instance(context); types = Types.instance(context); - taskListener = context.get(TaskListener.class); + taskListener = MultiTaskListener.instance(context); reader.sourceCompleter = this; @@ -592,7 +590,7 @@ if (verbose) { log.printVerbose("parsing.started", filename); } - if (taskListener != null) { + if (!taskListener.isEmpty()) { TaskEvent e = new TaskEvent(TaskEvent.Kind.PARSE, filename); taskListener.started(e); } @@ -605,7 +603,7 @@ tree.sourcefile = filename; - if (content != null && taskListener != null) { + if (content != null && !taskListener.isEmpty()) { TaskEvent e = new TaskEvent(TaskEvent.Kind.PARSE, tree); taskListener.finished(e); } @@ -751,14 +749,14 @@ log.useSource(prev); } - if (taskListener != null) { + if (!taskListener.isEmpty()) { TaskEvent e = new TaskEvent(TaskEvent.Kind.ENTER, tree); taskListener.started(e); } enter.complete(List.of(tree), c); - if (taskListener != null) { + if (!taskListener.isEmpty()) { TaskEvent e = new TaskEvent(TaskEvent.Kind.ENTER, tree); taskListener.finished(e); } @@ -924,7 +922,7 @@ */ public List enterTrees(List roots) { //enter symbols for all files - if (taskListener != null) { + if (!taskListener.isEmpty()) { for (JCCompilationUnit unit: roots) { TaskEvent e = new TaskEvent(TaskEvent.Kind.ENTER, unit); taskListener.started(e); @@ -933,7 +931,7 @@ enter.main(roots); - if (taskListener != null) { + if (!taskListener.isEmpty()) { for (JCCompilationUnit unit: roots) { TaskEvent e = new TaskEvent(TaskEvent.Kind.ENTER, unit); taskListener.finished(e); @@ -1002,7 +1000,7 @@ reader.saveParameterNames = true; keepComments = true; genEndPos = true; - if (taskListener != null) + if (!taskListener.isEmpty()) taskListener.started(new TaskEvent(TaskEvent.Kind.ANNOTATION_PROCESSING)); log.deferDiagnostics = true; } else { // free resources @@ -1017,7 +1015,7 @@ } /** - * Process any anotations found in the specifed compilation units. + * Process any annotations found in the specified compilation units. * @param roots a list of compilation units * @return an instance of the compiler in which to complete the compilation */ @@ -1176,7 +1174,7 @@ if (verbose) log.printVerbose("checking.attribution", env.enclClass.sym); - if (taskListener != null) { + if (!taskListener.isEmpty()) { TaskEvent e = new TaskEvent(TaskEvent.Kind.ANALYZE, env.toplevel, env.enclClass.sym); taskListener.started(e); } @@ -1259,7 +1257,7 @@ } } finally { - if (taskListener != null) { + if (!taskListener.isEmpty()) { TaskEvent e = new TaskEvent(TaskEvent.Kind.ANALYZE, env.toplevel, env.enclClass.sym); taskListener.finished(e); } @@ -1440,7 +1438,7 @@ + " " + cdef.sym + "]"); } - if (taskListener != null) { + if (!taskListener.isEmpty()) { TaskEvent e = new TaskEvent(TaskEvent.Kind.GENERATE, env.toplevel, cdef.sym); taskListener.started(e); } @@ -1464,7 +1462,7 @@ log.useSource(prev); } - if (taskListener != null) { + if (!taskListener.isEmpty()) { TaskEvent e = new TaskEvent(TaskEvent.Kind.GENERATE, env.toplevel, cdef.sym); taskListener.finished(e); }