private int parseRegName()

in ldap/model/src/main/java/org/apache/directory/api/ldap/model/url/LdapUrl.java [822:881]


    private int parseRegName( char[] chars, int pos )
    {
        int start = pos;

        while ( !Chars.isCharASCII( chars, pos, ':' ) && !Chars.isCharASCII( chars, pos, '/' ) && ( pos < chars.length ) )
        {
            switch ( chars[pos] )
            {
            // Unserserved
            // ALPHA
                case 'a' : case 'b' : case 'c' : case 'd' : case 'e' :
                case 'A' : case 'B' : case 'C' : case 'D' : case 'E' :
                case 'f' : case 'g' : case 'h' : case 'i' : case 'j' :
                case 'F' : case 'G' : case 'H' : case 'I' : case 'J' :
                case 'k' : case 'l' : case 'm' : case 'n' : case 'o' :
                case 'K' : case 'L' : case 'M' : case 'N' : case 'O' :
                case 'p' : case 'q' : case 'r' : case 's' : case 't' :
                case 'P' : case 'Q' : case 'R' : case 'S' : case 'T' :
                case 'u' : case 'v' : case 'w' : case 'x' : case 'y' :
                case 'U' : case 'V' : case 'W' : case 'X' : case 'Y' :
                case 'z' : case 'Z' : 

                    // DIGITs
                case '0' : case '1' : case '2' : case '3' : case '4' : 
                case '5' : case '6' : case '7' : case '8' : case '9' :

                    // others
                case '-' : case '.' : case '_' : case '~' :  

                    // sub-delims
                case '!' : case '$' : case '&' : case '\'' : 
                case '(' : case ')' : case '*' : case '+' : case ',' : 
                case ';' : case '=' :
                    pos++;
                    break;

                // pct-encoded
                case '%':
                    if ( Chars.isHex( chars, pos + 1 ) && Chars.isHex( chars, pos + 2 ) )
                    {
                        pos += 3;
                    }
                    else
                    {
                        return INVALID;
                    }
                    
                    break;

                default:
                    // Wrong char
                    return INVALID;
            }
        }

        host = new String( chars, start, pos - start );
        hostType = HostTypeEnum.REGULAR_NAME;

        return pos;
    }