< prev index next >
src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java
Print this page
rev 2977 : JDK-8058150
*** 31,40 ****
--- 31,41 ----
import java.io.StringWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.*;
import java.util.regex.*;
+ import java.util.stream.Collectors;
import javax.annotation.processing.*;
import javax.lang.model.SourceVersion;
import javax.lang.model.element.*;
import javax.lang.model.util.*;
*** 55,73 ****
--- 56,77 ----
import com.sun.tools.javac.comp.Env;
import com.sun.tools.javac.file.JavacFileManager;
import com.sun.tools.javac.main.JavaCompiler;
import com.sun.tools.javac.model.JavacElements;
import com.sun.tools.javac.model.JavacTypes;
+ import com.sun.tools.javac.platform.PlatformProvider;
+ import com.sun.tools.javac.platform.PlatformProvider.PluginInfo;
import com.sun.tools.javac.tree.*;
import com.sun.tools.javac.tree.JCTree.*;
import com.sun.tools.javac.util.Abort;
import com.sun.tools.javac.util.Assert;
import com.sun.tools.javac.util.ClientCodeException;
import com.sun.tools.javac.util.Context;
import com.sun.tools.javac.util.Convert;
import com.sun.tools.javac.util.DefinedBy;
import com.sun.tools.javac.util.DefinedBy.Api;
+ import com.sun.tools.javac.util.Iterators;
import com.sun.tools.javac.util.JCDiagnostic;
import com.sun.tools.javac.util.JavacMessages;
import com.sun.tools.javac.util.List;
import com.sun.tools.javac.util.Log;
import com.sun.tools.javac.util.MatchingUtils;
*** 280,290 ****
*/
processorIterator = handleServiceLoaderUnavailability("proc.cant.create.loader",
processorClassLoaderException);
}
}
! discoveredProcs = new DiscoveredProcessors(processorIterator);
}
/**
* Returns an empty processor iterator if no processors are on the
* relevant path, otherwise if processors are present, logs an
--- 284,306 ----
*/
processorIterator = handleServiceLoaderUnavailability("proc.cant.create.loader",
processorClassLoaderException);
}
}
! PlatformProvider platformProvider = context.get(PlatformProvider.class);
! java.util.List<Processor> platformProcessors = Collections.emptyList();
! if (platformProvider != null) {
! platformProcessors = platformProvider.getAnnotationProcessors()
! .stream()
! .map(ap -> ap.getPlugin())
! .collect(Collectors.toList());
! }
! List<Iterator<? extends Processor>> iterators = List.of(processorIterator,
! platformProcessors.iterator());
! Iterator<? extends Processor> compoundIterator =
! Iterators.createCompoundIterator(iterators, i -> i);
! discoveredProcs = new DiscoveredProcessors(compoundIterator);
}
/**
* Returns an empty processor iterator if no processors are on the
* relevant path, otherwise if processors are present, logs an
*** 479,488 ****
--- 495,512 ----
}
tempOptions.put(candidateKey, candidateValue);
}
}
+ PlatformProvider platformProvider = context.get(PlatformProvider.class);
+
+ if (platformProvider != null) {
+ for (PluginInfo<Processor> ap : platformProvider.getAnnotationProcessors()) {
+ tempOptions.putAll(ap.getOptions());
+ }
+ }
+
return Collections.unmodifiableMap(tempOptions);
}
private Set<String> initUnmatchedProcessorOptions() {
Set<String> unmatchedProcessorOptions = new HashSet<>();
< prev index next >