/** * Call passed on event if possible. * * @param filter the filter * @param descriptor the descriptor of the filter * @param id the id of the event * @param parameters the parameters of the event * @return true if the event has been sent, false otherwise * @throws FilterException when the passed filter exposes the event but failed anyway */ public static boolean sendOnEvent(Object filter, FilterDescriptor descriptor, String id, FilterEventParameters parameters) throws FilterException { FilterElementDescriptor elementDescriptor = descriptor.getElement(id); if (elementDescriptor != null && elementDescriptor.getOnMethod() != null) { sendEvent(elementDescriptor.getOnMethod(), elementDescriptor, filter, parameters); } else if (filter instanceof UnknownFilter) { ((UnknownFilter) filter).onUnknwon(id, parameters); } else { return false; } return true; } }
/** * @param element the element * @param method the method to add to the element */ private void addMethod(FilterElementDescriptor element, Method method) { String methodName = method.getName(); Type[] methodTypes = method.getGenericParameterTypes(); if (methodName.startsWith(PREFIX_BEGIN)) { if (element.getBeginMethod() == null || element.getBeginMethod().getGenericParameterTypes().length < methodTypes.length) { element.setBeginMethod(method); } } else if (methodName.startsWith(PREFIX_END)) { if (element.getEndMethod() == null || element.getEndMethod().getGenericParameterTypes().length < methodTypes.length) { element.setEndMethod(method); } } else { if (element.getOnMethod() == null || element.getOnMethod().getGenericParameterTypes().length < methodTypes.length) { element.setOnMethod(method); } } }