1.1 --- a/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java Tue Feb 28 10:25:53 2012 -0800 1.2 +++ b/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java Tue Feb 28 10:33:49 2012 -0800 1.3 @@ -1,5 +1,5 @@ 1.4 /* 1.5 - * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. 1.6 + * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. 1.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.8 * 1.9 * This code is free software; you can redistribute it and/or modify it 1.10 @@ -28,8 +28,8 @@ 1.11 import java.io.*; 1.12 import java.util.HashMap; 1.13 import java.util.HashSet; 1.14 +import java.util.LinkedHashMap; 1.15 import java.util.LinkedHashSet; 1.16 -import java.util.LinkedHashMap; 1.17 import java.util.Map; 1.18 import java.util.MissingResourceException; 1.19 import java.util.Queue; 1.20 @@ -41,13 +41,13 @@ 1.21 1.22 import javax.annotation.processing.Processor; 1.23 import javax.lang.model.SourceVersion; 1.24 +import javax.tools.DiagnosticListener; 1.25 import javax.tools.JavaFileManager; 1.26 import javax.tools.JavaFileObject; 1.27 -import javax.tools.DiagnosticListener; 1.28 +import static javax.tools.StandardLocation.CLASS_OUTPUT; 1.29 1.30 import com.sun.source.util.TaskEvent; 1.31 -import com.sun.source.util.TaskListener; 1.32 - 1.33 +import com.sun.tools.javac.api.MultiTaskListener; 1.34 import com.sun.tools.javac.code.*; 1.35 import com.sun.tools.javac.code.Lint.LintCategory; 1.36 import com.sun.tools.javac.code.Symbol.*; 1.37 @@ -60,8 +60,6 @@ 1.38 import com.sun.tools.javac.tree.JCTree.*; 1.39 import com.sun.tools.javac.util.*; 1.40 import com.sun.tools.javac.util.Log.WriterKind; 1.41 - 1.42 -import static javax.tools.StandardLocation.CLASS_OUTPUT; 1.43 import static com.sun.tools.javac.main.Option.*; 1.44 import static com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag.*; 1.45 import static com.sun.tools.javac.util.ListBuffer.lb; 1.46 @@ -289,9 +287,9 @@ 1.47 */ 1.48 protected ParserFactory parserFactory; 1.49 1.50 - /** Optional listener for progress events 1.51 + /** Broadcasting listener for progress events 1.52 */ 1.53 - protected TaskListener taskListener; 1.54 + protected MultiTaskListener taskListener; 1.55 1.56 /** 1.57 * Annotation processing may require and provide a new instance 1.58 @@ -356,7 +354,7 @@ 1.59 lower = Lower.instance(context); 1.60 annotate = Annotate.instance(context); 1.61 types = Types.instance(context); 1.62 - taskListener = context.get(TaskListener.class); 1.63 + taskListener = MultiTaskListener.instance(context); 1.64 1.65 reader.sourceCompleter = this; 1.66 1.67 @@ -592,7 +590,7 @@ 1.68 if (verbose) { 1.69 log.printVerbose("parsing.started", filename); 1.70 } 1.71 - if (taskListener != null) { 1.72 + if (!taskListener.isEmpty()) { 1.73 TaskEvent e = new TaskEvent(TaskEvent.Kind.PARSE, filename); 1.74 taskListener.started(e); 1.75 } 1.76 @@ -605,7 +603,7 @@ 1.77 1.78 tree.sourcefile = filename; 1.79 1.80 - if (content != null && taskListener != null) { 1.81 + if (content != null && !taskListener.isEmpty()) { 1.82 TaskEvent e = new TaskEvent(TaskEvent.Kind.PARSE, tree); 1.83 taskListener.finished(e); 1.84 } 1.85 @@ -751,14 +749,14 @@ 1.86 log.useSource(prev); 1.87 } 1.88 1.89 - if (taskListener != null) { 1.90 + if (!taskListener.isEmpty()) { 1.91 TaskEvent e = new TaskEvent(TaskEvent.Kind.ENTER, tree); 1.92 taskListener.started(e); 1.93 } 1.94 1.95 enter.complete(List.of(tree), c); 1.96 1.97 - if (taskListener != null) { 1.98 + if (!taskListener.isEmpty()) { 1.99 TaskEvent e = new TaskEvent(TaskEvent.Kind.ENTER, tree); 1.100 taskListener.finished(e); 1.101 } 1.102 @@ -924,7 +922,7 @@ 1.103 */ 1.104 public List<JCCompilationUnit> enterTrees(List<JCCompilationUnit> roots) { 1.105 //enter symbols for all files 1.106 - if (taskListener != null) { 1.107 + if (!taskListener.isEmpty()) { 1.108 for (JCCompilationUnit unit: roots) { 1.109 TaskEvent e = new TaskEvent(TaskEvent.Kind.ENTER, unit); 1.110 taskListener.started(e); 1.111 @@ -933,7 +931,7 @@ 1.112 1.113 enter.main(roots); 1.114 1.115 - if (taskListener != null) { 1.116 + if (!taskListener.isEmpty()) { 1.117 for (JCCompilationUnit unit: roots) { 1.118 TaskEvent e = new TaskEvent(TaskEvent.Kind.ENTER, unit); 1.119 taskListener.finished(e); 1.120 @@ -1002,7 +1000,7 @@ 1.121 reader.saveParameterNames = true; 1.122 keepComments = true; 1.123 genEndPos = true; 1.124 - if (taskListener != null) 1.125 + if (!taskListener.isEmpty()) 1.126 taskListener.started(new TaskEvent(TaskEvent.Kind.ANNOTATION_PROCESSING)); 1.127 log.deferDiagnostics = true; 1.128 } else { // free resources 1.129 @@ -1017,7 +1015,7 @@ 1.130 } 1.131 1.132 /** 1.133 - * Process any anotations found in the specifed compilation units. 1.134 + * Process any annotations found in the specified compilation units. 1.135 * @param roots a list of compilation units 1.136 * @return an instance of the compiler in which to complete the compilation 1.137 */ 1.138 @@ -1176,7 +1174,7 @@ 1.139 if (verbose) 1.140 log.printVerbose("checking.attribution", env.enclClass.sym); 1.141 1.142 - if (taskListener != null) { 1.143 + if (!taskListener.isEmpty()) { 1.144 TaskEvent e = new TaskEvent(TaskEvent.Kind.ANALYZE, env.toplevel, env.enclClass.sym); 1.145 taskListener.started(e); 1.146 } 1.147 @@ -1259,7 +1257,7 @@ 1.148 } 1.149 } 1.150 finally { 1.151 - if (taskListener != null) { 1.152 + if (!taskListener.isEmpty()) { 1.153 TaskEvent e = new TaskEvent(TaskEvent.Kind.ANALYZE, env.toplevel, env.enclClass.sym); 1.154 taskListener.finished(e); 1.155 } 1.156 @@ -1440,7 +1438,7 @@ 1.157 + " " + cdef.sym + "]"); 1.158 } 1.159 1.160 - if (taskListener != null) { 1.161 + if (!taskListener.isEmpty()) { 1.162 TaskEvent e = new TaskEvent(TaskEvent.Kind.GENERATE, env.toplevel, cdef.sym); 1.163 taskListener.started(e); 1.164 } 1.165 @@ -1464,7 +1462,7 @@ 1.166 log.useSource(prev); 1.167 } 1.168 1.169 - if (taskListener != null) { 1.170 + if (!taskListener.isEmpty()) { 1.171 TaskEvent e = new TaskEvent(TaskEvent.Kind.GENERATE, env.toplevel, cdef.sym); 1.172 taskListener.finished(e); 1.173 }