Warn about unnecessarily polymorphic event handlers
When Event Bus Proc detects a handler for a final type that uses the @Polymorphic annotation, it issues a warning.
This commit is contained in:
parent
4a5b94a9b7
commit
b56f08e441
@ -80,14 +80,20 @@ public class EventProcessor extends AbstractProcessor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Detect missing or useless @Polymorphic
|
||||||
|
boolean polymorphic = eventHandler.getAnnotation(Polymorphic.class) != null;
|
||||||
|
Element eventElement = ((DeclaredType) eventType).asElement();
|
||||||
|
|
||||||
// Check for handlers for abstract types that aren't polymorphic
|
// Check for handlers for abstract types that aren't polymorphic
|
||||||
Element eventElement = ((DeclaredType) eventType).asElement();
|
if (!polymorphic && (eventElement.getKind() == ElementKind.INTERFACE
|
||||||
if (eventHandler.getAnnotation(Polymorphic.class) == null
|
|| eventElement.getModifiers().contains(Modifier.ABSTRACT)))
|
||||||
&& (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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user