1.1 --- a/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java Tue Feb 28 10:25:53 2012 -0800 1.2 +++ b/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java Tue Feb 28 10:33:49 2012 -0800 1.3 @@ -1,5 +1,5 @@ 1.4 /* 1.5 - * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. 1.6 + * Copyright (c) 2005, 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 @@ -25,34 +25,33 @@ 1.11 1.12 package com.sun.tools.javac.processing; 1.13 1.14 -import java.lang.reflect.*; 1.15 -import java.util.*; 1.16 -import java.util.regex.*; 1.17 - 1.18 -import java.net.URL; 1.19 import java.io.Closeable; 1.20 import java.io.File; 1.21 import java.io.PrintWriter; 1.22 -import java.io.IOException; 1.23 import java.io.StringWriter; 1.24 import java.net.MalformedURLException; 1.25 +import java.net.URL; 1.26 +import java.util.*; 1.27 +import java.util.regex.*; 1.28 1.29 import javax.annotation.processing.*; 1.30 import javax.lang.model.SourceVersion; 1.31 import javax.lang.model.element.AnnotationMirror; 1.32 import javax.lang.model.element.Element; 1.33 +import javax.lang.model.element.PackageElement; 1.34 import javax.lang.model.element.TypeElement; 1.35 -import javax.lang.model.element.PackageElement; 1.36 import javax.lang.model.util.*; 1.37 +import javax.tools.DiagnosticListener; 1.38 import javax.tools.JavaFileManager; 1.39 +import javax.tools.JavaFileObject; 1.40 import javax.tools.StandardJavaFileManager; 1.41 -import javax.tools.JavaFileObject; 1.42 -import javax.tools.DiagnosticListener; 1.43 +import static javax.tools.StandardLocation.*; 1.44 1.45 +import com.sun.source.util.JavacTask; 1.46 import com.sun.source.util.TaskEvent; 1.47 -import com.sun.source.util.TaskListener; 1.48 import com.sun.tools.javac.api.JavacTaskImpl; 1.49 import com.sun.tools.javac.api.JavacTrees; 1.50 +import com.sun.tools.javac.api.MultiTaskListener; 1.51 import com.sun.tools.javac.code.*; 1.52 import com.sun.tools.javac.code.Symbol.*; 1.53 import com.sun.tools.javac.file.FSInfo; 1.54 @@ -71,19 +70,16 @@ 1.55 import com.sun.tools.javac.util.ClientCodeException; 1.56 import com.sun.tools.javac.util.Context; 1.57 import com.sun.tools.javac.util.Convert; 1.58 -import com.sun.tools.javac.util.FatalError; 1.59 import com.sun.tools.javac.util.JCDiagnostic; 1.60 +import com.sun.tools.javac.util.JavacMessages; 1.61 import com.sun.tools.javac.util.List; 1.62 import com.sun.tools.javac.util.Log; 1.63 -import com.sun.tools.javac.util.JavacMessages; 1.64 import com.sun.tools.javac.util.Name; 1.65 import com.sun.tools.javac.util.Names; 1.66 import com.sun.tools.javac.util.Options; 1.67 - 1.68 -import static javax.tools.StandardLocation.*; 1.69 +import static com.sun.tools.javac.code.Lint.LintCategory.PROCESSING; 1.70 +import static com.sun.tools.javac.main.Option.*; 1.71 import static com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag.*; 1.72 -import static com.sun.tools.javac.main.Option.*; 1.73 -import static com.sun.tools.javac.code.Lint.LintCategory.PROCESSING; 1.74 1.75 /** 1.76 * Objects of this class hold and manage the state needed to support 1.77 @@ -157,6 +153,8 @@ 1.78 */ 1.79 private JavacMessages messages; 1.80 1.81 + private MultiTaskListener taskListener; 1.82 + 1.83 private Context context; 1.84 1.85 public JavacProcessingEnvironment(Context context, Iterable<? extends Processor> processors) { 1.86 @@ -185,6 +183,7 @@ 1.87 processorOptions = initProcessorOptions(context); 1.88 unmatchedProcessorOptions = initUnmatchedProcessorOptions(); 1.89 messages = JavacMessages.instance(context); 1.90 + taskListener = MultiTaskListener.instance(context); 1.91 initProcessorIterator(context, processors); 1.92 } 1.93 1.94 @@ -976,8 +975,7 @@ 1.95 void run(boolean lastRound, boolean errorStatus) { 1.96 printRoundInfo(lastRound); 1.97 1.98 - TaskListener taskListener = context.get(TaskListener.class); 1.99 - if (taskListener != null) 1.100 + if (!taskListener.isEmpty()) 1.101 taskListener.started(new TaskEvent(TaskEvent.Kind.ANNOTATION_PROCESSING_ROUND)); 1.102 1.103 try { 1.104 @@ -993,7 +991,7 @@ 1.105 discoverAndRunProcs(context, annotationsPresent, topLevelClasses, packageInfoFiles); 1.106 } 1.107 } finally { 1.108 - if (taskListener != null) 1.109 + if (!taskListener.isEmpty()) 1.110 taskListener.finished(new TaskEvent(TaskEvent.Kind.ANNOTATION_PROCESSING_ROUND)); 1.111 } 1.112 1.113 @@ -1051,9 +1049,9 @@ 1.114 if (dl != null) 1.115 next.put(DiagnosticListener.class, dl); 1.116 1.117 - TaskListener tl = context.get(TaskListener.class); 1.118 - if (tl != null) 1.119 - next.put(TaskListener.class, tl); 1.120 + MultiTaskListener mtl = context.get(MultiTaskListener.taskListenerKey); 1.121 + if (mtl != null) 1.122 + next.put(MultiTaskListener.taskListenerKey, mtl); 1.123 1.124 FSInfo fsInfo = context.get(FSInfo.class); 1.125 if (fsInfo != null) 1.126 @@ -1086,9 +1084,9 @@ 1.127 elementUtils.setContext(next); 1.128 typeUtils.setContext(next); 1.129 1.130 - JavacTaskImpl task = context.get(JavacTaskImpl.class); 1.131 + JavacTaskImpl task = (JavacTaskImpl) context.get(JavacTask.class); 1.132 if (task != null) { 1.133 - next.put(JavacTaskImpl.class, task); 1.134 + next.put(JavacTask.class, task); 1.135 task.updateContext(next); 1.136 } 1.137 1.138 @@ -1110,8 +1108,6 @@ 1.139 List<JCCompilationUnit> roots, 1.140 List<ClassSymbol> classSymbols, 1.141 Iterable<? extends PackageSymbol> pckSymbols) { 1.142 - 1.143 - TaskListener taskListener = context.get(TaskListener.class); 1.144 log = Log.instance(context); 1.145 1.146 Set<PackageSymbol> specifiedPackages = new LinkedHashSet<PackageSymbol>(); 1.147 @@ -1182,7 +1178,7 @@ 1.148 // Free resources 1.149 this.close(); 1.150 1.151 - if (taskListener != null) 1.152 + if (!taskListener.isEmpty()) 1.153 taskListener.finished(new TaskEvent(TaskEvent.Kind.ANNOTATION_PROCESSING)); 1.154 1.155 if (errorStatus) {