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

changeset 372
7dbb79875a63
parent 323
14b1a8ede954
child 382
25f15fdd168a
     1.1 --- a/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java	Wed Aug 12 07:54:30 2009 -0700
     1.2 +++ b/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java	Wed Aug 12 10:34:13 2009 -0700
     1.3 @@ -136,6 +136,8 @@
     1.4       */
     1.5      Source source;
     1.6  
     1.7 +    private ClassLoader processorClassLoader;
     1.8 +
     1.9      /**
    1.10       * JavacMessages object used for localization
    1.11       */
    1.12 @@ -203,7 +205,7 @@
    1.13              JavaFileManager fileManager = context.get(JavaFileManager.class);
    1.14              try {
    1.15                  // If processorpath is not explicitly set, use the classpath.
    1.16 -                ClassLoader processorCL = fileManager.hasLocation(ANNOTATION_PROCESSOR_PATH)
    1.17 +                processorClassLoader = fileManager.hasLocation(ANNOTATION_PROCESSOR_PATH)
    1.18                      ? fileManager.getClassLoader(ANNOTATION_PROCESSOR_PATH)
    1.19                      : fileManager.getClassLoader(CLASS_PATH);
    1.20  
    1.21 @@ -213,9 +215,9 @@
    1.22                   * provider mechanism to create the processor iterator.
    1.23                   */
    1.24                  if (processorNames != null) {
    1.25 -                    processorIterator = new NameProcessIterator(processorNames, processorCL, log);
    1.26 +                    processorIterator = new NameProcessIterator(processorNames, processorClassLoader, log);
    1.27                  } else {
    1.28 -                    processorIterator = new ServiceIterator(processorCL, log);
    1.29 +                    processorIterator = new ServiceIterator(processorClassLoader, log);
    1.30                  }
    1.31              } catch (SecurityException e) {
    1.32                  /*
    1.33 @@ -1019,9 +1021,11 @@
    1.34      /**
    1.35       * Free resources related to annotation processing.
    1.36       */
    1.37 -    public void close() {
    1.38 +    public void close() throws IOException {
    1.39          filer.close();
    1.40          discoveredProcs = null;
    1.41 +        if (processorClassLoader != null && processorClassLoader instanceof Closeable)
    1.42 +            ((Closeable) processorClassLoader).close();
    1.43      }
    1.44  
    1.45      private List<ClassSymbol> getTopLevelClasses(List<? extends JCCompilationUnit> units) {

mercurial