< prev index next >

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

Print this page
rev 2973 : 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,64 **** --- 56,67 ---- 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;
*** 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 --- 283,327 ---- */ 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()); ! } ! discoveredProcs = new DiscoveredProcessors(new JoiningIterator(List.of(processorIterator, platformProcessors.iterator()))); ! } ! ! private static final class JoiningIterator implements Iterator<Processor> { ! private List<Iterator<? extends Processor>> delegateTo; ! ! public JoiningIterator(List<Iterator<? extends Processor>> delegateTo) { ! this.delegateTo = delegateTo; ! } ! ! @Override ! public boolean hasNext() { ! while (delegateTo.nonEmpty() && !delegateTo.head.hasNext()) ! delegateTo = delegateTo.tail; ! ! return delegateTo.nonEmpty(); ! } ! ! @Override ! public Processor next() { ! if (delegateTo.isEmpty()) { ! throw new NoSuchElementException(); ! } ! ! return delegateTo.head.next(); ! } ! } /** * Returns an empty processor iterator if no processors are on the * relevant path, otherwise if processors are present, logs an
*** 479,488 **** --- 516,533 ---- } 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 >