in boot/src/main/java/org/netbeans/html/boot/impl/JavaScriptProcesor.java [418:469]
protected CharSequence callMethod(String ident, boolean promise, String fqn, String method, String params) {
final TypeElement type = findClass(fqn);
if (type == null) {
processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,
"Callback to non-existing class " + fqn, e
);
return "";
}
String binName = processingEnv.getElementUtils().getBinaryName(type).toString();
if (!fqn.equals(binName)) {
processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,
"Use binary classname " + binName + " in the callback", e);
}
ExecutableElement found = null;
String paramTypes = null;
StringBuilder foundParams = new StringBuilder();
for (Element m : type.getEnclosedElements()) {
if (m.getKind() != ElementKind.METHOD) {
continue;
}
if (m.getSimpleName().contentEquals(method)) {
paramTypes = findParamTypes((ExecutableElement)m);
if (paramTypes.equals(params)) {
found = (ExecutableElement) m;
break;
}
foundParams.append(paramTypes).append("\n");
}
}
if (found == null) {
if (foundParams.length() == 0) {
processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,
"Callback to class " + fqn + " with unknown method " + method, e
);
} else {
processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,
"Callback to " + fqn + "." + method + " with wrong parameters: " +
params + ". Only known parameters are " + foundParams, e
);
}
} else {
Map<String,ExecutableElement> mangledOnes = javacalls.get(findPkg(e));
if (mangledOnes == null) {
mangledOnes = new TreeMap<>();
javacalls.put(findPkg(e), mangledOnes);
}
String mangled = JsCallback.mangle(fqn, method, paramTypes);
mangledOnes.put(mangled, found);
}
return "";
}