in json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java [1629:1736]
private CharSequence wrapParams(
ExecutableElement ee, String id, String className, String classRef, String evName, String dataName
) {
TypeMirror stringType = processingEnv.getElementUtils().getTypeElement("java.lang.String").asType();
StringBuilder params = new StringBuilder();
boolean first = true;
for (VariableElement ve : ee.getParameters()) {
if (!first) {
params.append(", ");
}
first = false;
String toCall = null;
String toFinish = null;
boolean addNull = true;
if (ve.asType().equals(stringType)) {
if (ve.getSimpleName().contentEquals("id")) {
params.append('"').append(id).append('"');
continue;
}
toCall = classRef + ".proto.toString(";
}
if (ve.asType().getKind() == TypeKind.DOUBLE) {
toCall = classRef + ".proto.toNumber(";
toFinish = ".doubleValue()";
}
if (ve.asType().getKind() == TypeKind.FLOAT) {
toCall = classRef + ".proto.toNumber(";
toFinish = ".floatValue()";
}
if (ve.asType().getKind() == TypeKind.INT) {
toCall = classRef + ".proto.toNumber(";
toFinish = ".intValue()";
}
if (ve.asType().getKind() == TypeKind.BYTE) {
toCall = classRef + ".proto.toNumber(";
toFinish = ".byteValue()";
}
if (ve.asType().getKind() == TypeKind.SHORT) {
toCall = classRef + ".proto.toNumber(";
toFinish = ".shortValue()";
}
if (ve.asType().getKind() == TypeKind.LONG) {
toCall = classRef + ".proto.toNumber(";
toFinish = ".longValue()";
}
if (ve.asType().getKind() == TypeKind.BOOLEAN) {
toCall = "\"true\".equals(" + classRef + ".proto.toString(";
toFinish = ")";
}
if (ve.asType().getKind() == TypeKind.CHAR) {
toCall = "(char)" + classRef + ".proto.toNumber(";
toFinish = ".intValue()";
}
if (dataName != null && ve.getSimpleName().contentEquals(dataName) && isModel(ve.asType())) {
toCall = classRef + ".proto.toModel(" + ve.asType() + ".class, ";
addNull = false;
}
if (toCall != null) {
params.append(toCall);
if (dataName != null && ve.getSimpleName().contentEquals(dataName)) {
params.append(dataName);
if (addNull) {
params.append(", null");
}
} else {
if (evName == null) {
final StringBuilder sb = new StringBuilder();
sb.append("Unexpected string parameter name.");
if (dataName != null) {
sb.append(" Try \"").append(dataName).append("\"");
}
error(sb.toString(), ee);
}
params.append(evName);
params.append(", \"");
params.append(ve.getSimpleName().toString());
params.append("\"");
}
params.append(")");
if (toFinish != null) {
params.append(toFinish);
}
continue;
}
String rn = fqn(ve.asType(), ee);
int last = rn.lastIndexOf('.');
if (last >= 0) {
rn = rn.substring(last + 1);
}
if (rn.equals(className)) {
params.append(classRef);
continue;
}
StringBuilder err = new StringBuilder();
err.append("Argument ").
append(ve.getSimpleName()).
append(" is not valid. The annotated method can only accept ").
append(className).
append(" argument");
if (dataName != null) {
err.append(" or argument named '").append(dataName).append("'");
}
err.append(".");
error(err.toString(), ee);
}
return params;
}