Additional Warnings in Event Bus Proc #8

Merged
kske merged 2 commits from f/additional-warnings into develop 2021-02-20 21:46:08 +01:00
Showing only changes of commit b56f08e441 - Show all commits

View File

@ -80,14 +80,20 @@ public class EventProcessor extends AbstractProcessor {
} }
} }
// Check for handlers for abstract types that aren't polymorphic // Detect missing or useless @Polymorphic
boolean polymorphic = eventHandler.getAnnotation(Polymorphic.class) != null;
Element eventElement = ((DeclaredType) eventType).asElement(); Element eventElement = ((DeclaredType) eventType).asElement();
if (eventHandler.getAnnotation(Polymorphic.class) == null
&& (eventElement.getKind() == ElementKind.INTERFACE // Check for handlers for abstract types that aren't polymorphic
|| eventElement.getModifiers().contains(Modifier.ABSTRACT))) { if (!polymorphic && (eventElement.getKind() == ElementKind.INTERFACE
|| eventElement.getModifiers().contains(Modifier.ABSTRACT)))
warning(eventHandler, warning(eventHandler,
"Parameter should be instantiable or handler should use @Polymorphic"); "Parameter should be instantiable or handler should use @Polymorphic");
}
// Check for handlers for final types that are polymorphic
else if (polymorphic && eventElement.getModifiers().contains(Modifier.FINAL))
warning(eventHandler,
"@Polymorphic should be removed as parameter cannot be subclassed");
} }
} }