From 671f2a202e9e8b597dccc30a7ac4c8a1fbdb3625 Mon Sep 17 00:00:00 2001 From: Roel Spilker Date: Tue, 9 Dec 2014 22:25:01 +0100 Subject: [PATCH] Actually the previous commit lied; you CAN use the hider trick to have a class be invisible to most autocomplete dialogs and yet still work as an SPI provider; SPI lines are binary names (with dollars for inner classes), that's all. Name fixed and previous commit reverted. --- build.xml | 2 +- ...rocessor.java => AnnotationProcessor.java} | 76 ++++++++++--------- 2 files changed, 40 insertions(+), 38 deletions(-) rename src/launch/lombok/launch/{_ShadowLaunchingAnnotationProcessor.java => AnnotationProcessor.java} (52%) diff --git a/build.xml b/build.xml index b066539e..9fe952b9 100644 --- a/build.xml +++ b/build.xml @@ -195,7 +195,7 @@ the common tasks and can be called on to run the main aspects of all the sub-scr - lombok.launch._ShadowLaunchingAnnotationProcessor + lombok.launch.AnnotationProcessorHider$AnnotationProcessor diff --git a/src/launch/lombok/launch/_ShadowLaunchingAnnotationProcessor.java b/src/launch/lombok/launch/AnnotationProcessor.java similarity index 52% rename from src/launch/lombok/launch/_ShadowLaunchingAnnotationProcessor.java rename to src/launch/lombok/launch/AnnotationProcessor.java index 36787ec9..35c26b7c 100644 --- a/src/launch/lombok/launch/_ShadowLaunchingAnnotationProcessor.java +++ b/src/launch/lombok/launch/AnnotationProcessor.java @@ -33,43 +33,45 @@ import javax.lang.model.element.Element; import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.TypeElement; -public class _ShadowLaunchingAnnotationProcessor extends AbstractProcessor { - private final AbstractProcessor instance = createWrappedInstance(); - - @Override public Set getSupportedOptions() { - return instance.getSupportedOptions(); - } - - @Override public Set getSupportedAnnotationTypes() { - return instance.getSupportedAnnotationTypes(); - } - - @Override public SourceVersion getSupportedSourceVersion() { - return instance.getSupportedSourceVersion(); - } - - @Override public void init(ProcessingEnvironment processingEnv) { - instance.init(processingEnv); - super.init(processingEnv); - } - - @Override public boolean process(Set annotations, RoundEnvironment roundEnv) { - return instance.process(annotations, roundEnv); - } - - @Override public Iterable getCompletions(Element element, AnnotationMirror annotation, ExecutableElement member, String userText) { - return instance.getCompletions(element, annotation, member, userText); - } - - private static AbstractProcessor createWrappedInstance() { - ClassLoader cl = Main.createShadowClassLoader(); - try { - Class mc = cl.loadClass("lombok.core.AnnotationProcessor"); - return (AbstractProcessor) mc.newInstance(); - } catch (Throwable t) { - if (t instanceof Error) throw (Error) t; - if (t instanceof RuntimeException) throw (RuntimeException) t; - throw new RuntimeException(t); +class AnnotationProcessorHider { + public static class AnnotationProcessor extends AbstractProcessor { + private final AbstractProcessor instance = createWrappedInstance(); + + @Override public Set getSupportedOptions() { + return instance.getSupportedOptions(); + } + + @Override public Set getSupportedAnnotationTypes() { + return instance.getSupportedAnnotationTypes(); + } + + @Override public SourceVersion getSupportedSourceVersion() { + return instance.getSupportedSourceVersion(); + } + + @Override public void init(ProcessingEnvironment processingEnv) { + instance.init(processingEnv); + super.init(processingEnv); + } + + @Override public boolean process(Set annotations, RoundEnvironment roundEnv) { + return instance.process(annotations, roundEnv); + } + + @Override public Iterable getCompletions(Element element, AnnotationMirror annotation, ExecutableElement member, String userText) { + return instance.getCompletions(element, annotation, member, userText); + } + + private static AbstractProcessor createWrappedInstance() { + ClassLoader cl = Main.createShadowClassLoader(); + try { + Class mc = cl.loadClass("lombok.core.AnnotationProcessor"); + return (AbstractProcessor) mc.newInstance(); + } catch (Throwable t) { + if (t instanceof Error) throw (Error) t; + if (t instanceof RuntimeException) throw (RuntimeException) t; + throw new RuntimeException(t); + } } } }