src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java

changeset 1210
62e611704863
parent 1159
4261dc8af622
child 1323
1a7c11b22192
     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) {

mercurial