mirror of
https://github.com/tiennm99/lombok.git
synced 2026-08-24 10:27:17 +00:00
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.
This commit is contained in:
@@ -195,7 +195,7 @@ the common tasks and can be called on to run the main aspects of all the sub-scr
|
||||
</ivy:compile>
|
||||
<mkdir dir="build/lombok/META-INF" />
|
||||
<mkdir dir="build/lombok/META-INF/services" />
|
||||
<echo file="build/lombok/META-INF/services/javax.annotation.processing.Processor">lombok.launch._ShadowLaunchingAnnotationProcessor</echo>
|
||||
<echo file="build/lombok/META-INF/services/javax.annotation.processing.Processor">lombok.launch.AnnotationProcessorHider$AnnotationProcessor</echo>
|
||||
</target>
|
||||
|
||||
<target name="dist" description="Builds THE lombok.jar file which contains everything." depends="version, compile">
|
||||
|
||||
+39
-37
@@ -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<String> getSupportedOptions() {
|
||||
return instance.getSupportedOptions();
|
||||
}
|
||||
|
||||
@Override public Set<String> 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<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
|
||||
return instance.process(annotations, roundEnv);
|
||||
}
|
||||
|
||||
@Override public Iterable<? extends Completion> 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<String> getSupportedOptions() {
|
||||
return instance.getSupportedOptions();
|
||||
}
|
||||
|
||||
@Override public Set<String> 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<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
|
||||
return instance.process(annotations, roundEnv);
|
||||
}
|
||||
|
||||
@Override public Iterable<? extends Completion> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user