private CharSequence wrapParams()

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;
    }