in boot/src/main/java/org/netbeans/html/boot/impl/JavaScriptProcesor.java [720:762]
private String findParamTypes(ExecutableElement method) {
ExecutableType t = (ExecutableType) method.asType();
StringBuilder sb = new StringBuilder();
sb.append('(');
for (TypeMirror paramType : t.getParameterTypes()) {
TypeMirror tm = paramType;
boolean isArray = false;
while (tm.getKind() == TypeKind.ARRAY) {
sb.append('[');
tm = ((ArrayType) tm).getComponentType();
isArray = true;
}
if (tm.getKind().isPrimitive()) {
switch (tm.getKind()) {
case INT: sb.append('I'); break;
case BOOLEAN: sb.append('Z'); break;
case BYTE: sb.append('B'); break;
case CHAR: sb.append('C'); break;
case SHORT: sb.append('S'); break;
case DOUBLE: sb.append('D'); break;
case FLOAT: sb.append('F'); break;
case LONG: sb.append('J'); break;
default:
throw new IllegalStateException("Unknown " + tm.getKind());
}
if (isArray) {
wrongArrayError(paramType, method);
}
} else {
sb.append('L');
Types tu = processingEnv.getTypeUtils();
final TypeMirror erasedType = tu.erasure(tm);
TypeMirror objectType = processingEnv.getElementUtils().getTypeElement("java.lang.Object").asType();
if (isArray && !processingEnv.getTypeUtils().isSameType(objectType, erasedType)) {
wrongArrayError(paramType, method);
}
Element elm = tu.asElement(erasedType);
dumpElems(sb, elm, ';');
}
}
sb.append(')');
return sb.toString();
}