mirror of
https://github.com/zaaarf/lillero-processor.git
synced 2024-11-22 10:34:51 +01:00
fix: skip invalid bare injectors
This commit is contained in:
parent
ee12ab20c1
commit
fbd3d0c35a
1 changed files with 12 additions and 8 deletions
|
@ -134,7 +134,7 @@ public class LilleroProcessor extends AbstractProcessor {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
|
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
|
||||||
for (TypeElement annotation : annotations) {
|
for(TypeElement annotation : annotations) {
|
||||||
if(annotation.getQualifiedName().contentEquals(Patch.class.getName())) {
|
if(annotation.getQualifiedName().contentEquals(Patch.class.getName())) {
|
||||||
Set<TypeElement> validInjectors =
|
Set<TypeElement> validInjectors =
|
||||||
roundEnv.getElementsAnnotatedWith(annotation)
|
roundEnv.getElementsAnnotatedWith(annotation)
|
||||||
|
@ -145,17 +145,21 @@ public class LilleroProcessor extends AbstractProcessor {
|
||||||
if(!validInjectors.isEmpty())
|
if(!validInjectors.isEmpty())
|
||||||
validInjectors.forEach(this::generateClasses);
|
validInjectors.forEach(this::generateClasses);
|
||||||
} else if(annotation.getQualifiedName().contentEquals(RegisterBareInjector.class.getName())) {
|
} else if(annotation.getQualifiedName().contentEquals(RegisterBareInjector.class.getName())) {
|
||||||
for(Element e : roundEnv.getElementsAnnotatedWith(annotation))
|
TypeMirror injectorType = this.processingEnv.getElementUtils().getTypeElement("ftbsc.lll.IInjector").asType();
|
||||||
|
for(Element e : roundEnv.getElementsAnnotatedWith(annotation)) {
|
||||||
|
if(this.processingEnv.getTypeUtils().isAssignable(e.asType(), injectorType))
|
||||||
this.generatedInjectors.add(((TypeElement) e).getQualifiedName().toString());
|
this.generatedInjectors.add(((TypeElement) e).getQualifiedName().toString());
|
||||||
|
else this.processingEnv.getMessager().printMessage(Diagnostic.Kind.WARNING, String.format(
|
||||||
|
"Class %s annotated with @RegisterBareInjector is not an instance of IInjector, skipping...",
|
||||||
|
((TypeElement) e).getQualifiedName().toString()
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.generatedInjectors.isEmpty()) {
|
if (!this.generatedInjectors.isEmpty()) {
|
||||||
generateServiceProvider();
|
generateServiceProvider();
|
||||||
return true;
|
return true;
|
||||||
}
|
} else return false;
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -168,7 +172,7 @@ public class LilleroProcessor extends AbstractProcessor {
|
||||||
private boolean isValidInjector(TypeElement elem) {
|
private boolean isValidInjector(TypeElement elem) {
|
||||||
TypeMirror classNodeType = this.processingEnv.getElementUtils().getTypeElement("org.objectweb.asm.tree.ClassNode").asType();
|
TypeMirror classNodeType = this.processingEnv.getElementUtils().getTypeElement("org.objectweb.asm.tree.ClassNode").asType();
|
||||||
TypeMirror methodNodeType = this.processingEnv.getElementUtils().getTypeElement("org.objectweb.asm.tree.MethodNode").asType();
|
TypeMirror methodNodeType = this.processingEnv.getElementUtils().getTypeElement("org.objectweb.asm.tree.MethodNode").asType();
|
||||||
if (elem.getEnclosedElements().stream().anyMatch(e -> e.getAnnotation(Target.class) != null)
|
if(elem.getEnclosedElements().stream().anyMatch(e -> e.getAnnotation(Target.class) != null)
|
||||||
&& elem.getEnclosedElements().stream().filter(e -> e instanceof ExecutableElement).anyMatch(e -> {
|
&& elem.getEnclosedElements().stream().filter(e -> e instanceof ExecutableElement).anyMatch(e -> {
|
||||||
List<? extends TypeMirror> params = ((ExecutableType) e.asType()).getParameterTypes();
|
List<? extends TypeMirror> params = ((ExecutableType) e.asType()).getParameterTypes();
|
||||||
return e.getAnnotation(Injector.class) != null
|
return e.getAnnotation(Injector.class) != null
|
||||||
|
|
Loading…
Reference in a new issue