private String[] parseAuthority(String authority) {
		String[] parts = new String[3];
		
		if (authority != null) {
			// userInfo
			int first_ampersand = authority.indexOf(USERINFO_DELIM);
			if (first_ampersand >= 0) {
				parts[0] = authority.substring(0, first_ampersand);
				authority = authority.substring(first_ampersand + 1);
			}
			
			// host
			int first_colon = authority.indexOf(PORT_DELIM);
			if (first_colon >= 0) {
				parts[1] = authority.substring(0, first_colon);
				authority = authority.substring(first_colon + 1);
			} else {
				parts[1] = authority;
				authority = "";
			}
			
			// port
			parts[2] = authority;
		}
		
		return parts;
	}