function decodeSignatureType()

in remoting/server/web/web.ui.frontend/public_html/index/ui/script.js [150:229]


function decodeSignatureType(signature, pos) {
    var c = signature.charAt(pos[0]++);
    switch (c) {
        case 'V':
            return "void";
        case 'Z':
            return "boolean";
        case 'B':
            return "byte";
        case 'S':
            return "short";
        case 'I':
            return "int";
        case 'J':
            return "long";
        case 'C':
            return "char";
        case 'F':
            return "float";
        case 'D':
            return "double";
        case '[':
            return decodeSignatureType(signature, pos) + "[]";
        case 'L':
            {
                var lastSlash = pos[0];
                var result = "";

                while (signature.charAt(pos[0]) !== ';' && signature.charAt(pos[0]) !== '<') {
                    if (signature.charAt(pos[0]) === '/') {
                        lastSlash = pos[0] + 1;
                    }
                    if (signature.charAt(pos[0]) === '$') {
                        lastSlash = pos[0] + 1;
                    }
                    pos[0]++;
                }

                result += signature.substring(lastSlash, pos[0]);

                if (signature.charAt(pos[0]++) === '<') {
                    result += '<';

                    while (signature.charAt(pos[0]) !== '>') {
                        if (result.charAt(result.length - 1) !== '<') {
                            result += ", ";
                        }
                        result += decodeSignatureType(signature, pos);
                    }

                    result += '>';
                    pos[0] += 2;
                }


                return result;
            }
        case 'T':
            {
                var result = "";

                while (signature.charAt(pos[0]) !== ';') {
                    result += signature.charAt(pos[0]);
                    pos[0]++;
                }

                pos[0]++;

                return result;
            }
        case '+':
            return "? extends " + decodeSignatureType(signature, pos);
        case '-':
            return "? super " + decodeSignatureType(signature, pos);
        case '*':
            return "?";
        default:
            return "unknown";
    }
}