in json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java [2234:2289]
private int findOnError(ExecutableElement errElem, TypeElement te, String name, String className) {
String err = null;
METHODS:
for (Element e : te.getEnclosedElements()) {
if (e.getKind() != ElementKind.METHOD) {
continue;
}
if (!e.getSimpleName().contentEquals(name)) {
continue;
}
if (!e.getModifiers().contains(Modifier.STATIC)) {
errElem = (ExecutableElement) e;
err = "Would have to be static";
continue;
}
ExecutableElement ee = (ExecutableElement) e;
TypeMirror excType = processingEnv.getElementUtils().getTypeElement(Exception.class.getName()).asType();
final List<? extends VariableElement> params = ee.getParameters();
boolean error = false;
if (params.size() < 2 || params.size() > errElem.getParameters().size()) {
error = true;
} else {
String firstType = params.get(0).asType().toString();
int lastDot = firstType.lastIndexOf('.');
if (lastDot != -1) {
firstType = firstType.substring(lastDot + 1);
}
if (!firstType.equals(className)) {
error = true;
}
if (!processingEnv.getTypeUtils().isAssignable(excType, params.get(1).asType())) {
error = true;
}
for (int i = 2; i < params.size(); i++) {
final VariableElement expectedParam = errElem.getParameters().get(i);
if (!processingEnv.getTypeUtils().isSameType(params.get(i).asType(), errElem.getParameters().get(i).asType())) {
error = true;
err = "Parameter #" + (i + 1) + " should be of type " + expectedParam;
}
}
}
if (error) {
errElem = (ExecutableElement) e;
if (err == null) {
err = "Error method first argument needs to be " + className + " and second Exception";
}
continue;
}
return params.size();
}
if (err == null) {
err = "Cannot find " + name + "(" + className + ", Exception) method in this class";
}
error(err, errElem);
return -1;
}