use of com.github.mvp4g.mvp4g2.core.eventbus.IsEventFilter in project mvp4g2 by mvp4g.
the class AbstractEventBus method doFilterEvent.
/**
* Performs the actual filtering by calling each associated event filter in turn. If any event
* filter returns false, then the event will be canceled.
*
* @param eventName event's name
* @param params event parameters for this event
*/
@SuppressWarnings("unchecked")
private boolean doFilterEvent(String eventName, Object[] params) {
int filterCount = eventFilters.size();
@SuppressWarnings("rawtypes") IsEventFilter eventFilter;
for (int i = 0; i < filterCount; i++) {
eventFilter = eventFilters.get(i);
if (!eventFilter.filterEvent(this, eventName, params)) {
return false;
}
}
return true;
}
use of com.github.mvp4g.mvp4g2.core.eventbus.IsEventFilter in project mvp4g2 by mvp4g.
the class FilterAnnotationValidator method validate.
public void validate() throws ProcessorException {
// get elements annotated with EventBus annotation
Set<? extends Element> elementsWithFilterAnnotation = this.roundEnvironment.getElementsAnnotatedWith(Filters.class);
// at least there should only one Application annotation!
if (elementsWithFilterAnnotation.size() > 1) {
throw new ProcessorException("Mvp4g2Processor: There should be at least only one interface, that is annotated with @Filter");
}
// annotated element has to be a interface
for (Element element : elementsWithFilterAnnotation) {
if (element instanceof TypeElement) {
TypeElement typeElement = (TypeElement) element;
if (!typeElement.getKind().isInterface()) {
throw new ProcessorException("Mvp4g2Processor: @Filter can only be used with an interface");
}
// @Filter can only be used on a interface that extends IsEventBus
if (!this.processorUtils.extendsClassOrInterface(this.processingEnvironment.getTypeUtils(), typeElement.asType(), this.processingEnvironment.getElementUtils().getTypeElement(IsEventBus.class.getCanonicalName()).asType())) {
throw new ProcessorException("Mvp4g2Processor: @Filter can only be used on interfaces that extends IsEventBus");
}
// test, that all filters implement IsEventFilter!
List<String> eventFilterAsStringList = this.getEventFiltersAsList(eventBusTypeElement);
for (String eventFilterClassname : eventFilterAsStringList) {
TypeElement filterElement = this.processingEnvironment.getElementUtils().getTypeElement(eventFilterClassname);
if (!this.processorUtils.extendsClassOrInterface(this.processingEnvironment.getTypeUtils(), filterElement.asType(), this.processingEnvironment.getElementUtils().getTypeElement(IsEventFilter.class.getCanonicalName()).asType())) {
throw new ProcessorException("Mvp4g2Processor: @Filter - the filters attribute needs class that implements IsEventFilter");
}
}
} else {
throw new ProcessorException("Mvp4g2Processor: @Filter can only be used on a type (interface)");
}
}
}
Aggregations