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