private void addElement(String elementName, FilterDescriptor descriptor, Method method)
throws IncompatibleFilterException
{
String lowerElementName = elementName.toLowerCase();
FilterElementDescriptor element = descriptor.getElements().get(lowerElementName);
Type[] methodTypes = method.getGenericParameterTypes();
if (element == null || methodTypes.length > element.getParameters().length) {
FilterElementParameterDescriptor<?>[] parameters =
new FilterElementParameterDescriptor<?>[methodTypes.length];
for (int i = 0; i < methodTypes.length; ++i) {
parameters[i] = createFilterElementParameter(method, i, methodTypes[i]);
}
if (element != null) {
checkCompatible(element, parameters);
}
element = new FilterElementDescriptor(elementName, parameters);
descriptor.getElements().put(lowerElementName, element);
}
addMethod(element, method);
}