langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java Mon Jun 13 12:04:09 2016 +0100
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java Mon Jun 13 09:12:35 2016 -0700
@@ -31,6 +31,7 @@
import java.io.PrintWriter;
import java.io.StringWriter;
import java.lang.reflect.Method;
+import java.lang.reflect.Constructor;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.file.Path;
@@ -282,9 +283,7 @@
if (options.isSet(XPRINT)) {
try {
- @SuppressWarnings("deprecation")
- Processor processor = PrintingProcessor.class.newInstance();
- processorIterator = List.of(processor).iterator();
+ processorIterator = List.of(new PrintingProcessor()).iterator();
} catch (Throwable t) {
AssertionError assertError =
new AssertionError("Problem instantiating PrintingProcessor.");
@@ -540,38 +539,40 @@
if (nextProc != null)
return true;
else {
- if (!names.hasNext())
+ if (!names.hasNext()) {
return false;
- else {
- String processorName = names.next();
+ } else {
+ Processor processor = getNextProcessor(names.next());
+ if (processor == null) {
+ return false;
+ } else {
+ nextProc = processor;
+ return true;
+ }
+ }
+ }
+ }
- Processor processor;
- try {
- try {
- Class<?> processorClass = processorCL.loadClass(processorName);
- ensureReadable(processorClass);
- @SuppressWarnings("deprecation")
- Object tmp = processorClass.newInstance();
- processor = (Processor) tmp;
- } catch (ClassNotFoundException cnfe) {
- log.error("proc.processor.not.found", processorName);
- return false;
- } catch (ClassCastException cce) {
- log.error("proc.processor.wrong.type", processorName);
- return false;
- } catch (Exception e ) {
- log.error("proc.processor.cant.instantiate", processorName);
- return false;
- }
- } catch(ClientCodeException e) {
- throw e;
- } catch(Throwable t) {
- throw new AnnotationProcessingError(t);
- }
- nextProc = processor;
- return true;
+ private Processor getNextProcessor(String processorName) {
+ try {
+ try {
+ Class<?> processorClass = processorCL.loadClass(processorName);
+ ensureReadable(processorClass);
+ return (Processor) processorClass.getConstructor().newInstance();
+ } catch (ClassNotFoundException cnfe) {
+ log.error("proc.processor.not.found", processorName);
+ return null;
+ } catch (ClassCastException cce) {
+ log.error("proc.processor.wrong.type", processorName);
+ return null;
+ } catch (Exception e ) {
+ log.error("proc.processor.cant.instantiate", processorName);
+ return null;
}
-
+ } catch (ClientCodeException e) {
+ throw e;
+ } catch (Throwable t) {
+ throw new AnnotationProcessingError(t);
}
}