static String[] decodeAuthPassword(final String authPasswordValue) throws DecodeException {
  final int length=authPasswordValue.length();
  int pos=0;
  pos=readSpaces(authPasswordValue,pos);
  final StringBuilder scheme=new StringBuilder();
  pos=readScheme(authPasswordValue,scheme,pos);
  if (scheme.length() == 0) {
    throw DecodeException.error(ERR_ATTR_SYNTAX_AUTHPW_NO_SCHEME.get());
  }
  pos=readSpaces(authPasswordValue,pos);
  throwIfEndReached(authPasswordValue,length,pos,ERR_ATTR_SYNTAX_AUTHPW_NO_SCHEME_SEPARATOR);
  pos++;
  pos=readSpaces(authPasswordValue,pos);
  final StringBuilder authInfo=new StringBuilder();
  pos=readAuthInfo(authPasswordValue,authInfo,pos);
  if (authInfo.length() == 0) {
    throw DecodeException.error(ERR_ATTR_SYNTAX_AUTHPW_NO_AUTH_INFO.get());
  }
  pos=readSpaces(authPasswordValue,pos);
  throwIfEndReached(authPasswordValue,length,pos,ERR_ATTR_SYNTAX_AUTHPW_NO_AUTH_INFO_SEPARATOR);
  pos++;
  pos=readSpaces(authPasswordValue,pos);
  final StringBuilder authValue=new StringBuilder();
  pos=readAuthValue(authPasswordValue,length,pos,authValue);
  if (authValue.length() == 0) {
    throw DecodeException.error(ERR_ATTR_SYNTAX_AUTHPW_NO_AUTH_VALUE.get());
  }
  while (pos < length) {
    final char c=authPasswordValue.charAt(pos);
    if (c == ' ') {
      pos++;
    }
 else {
      throw DecodeException.error(ERR_ATTR_SYNTAX_AUTHPW_INVALID_TRAILING_CHAR.get(pos));
    }
  }
  return new String[]{scheme.toString(),authInfo.toString(),authValue.toString()};
}

static String [ ] decodeAuthPassword ( final String authPasswordValue ) throws DecodeException { final int length = authPasswordValue . length ( ) ; int pos = 0 ; pos = readSpaces ( authPasswordValue , pos ) ; final StringBuilder scheme = new StringBuilder ( ) ; pos = readScheme ( authPasswordValue , scheme , pos ) ; if ( scheme . length ( ) == 0 ) { throw DecodeException . error ( ERR_ATTR_SYNTAX_AUTHPW_NO_SCHEME . get ( ) ) ; } pos = readSpaces ( authPasswordValue , pos ) ; throwIfEndReached ( authPasswordValue , length , pos , ERR_ATTR_SYNTAX_AUTHPW_NO_SCHEME_SEPARATOR ) ; pos ++ ; pos = readSpaces ( authPasswordValue , pos ) ; final StringBuilder authInfo = new StringBuilder ( ) ; pos = readAuthInfo ( authPasswordValue , authInfo , pos ) ; if ( authInfo . length ( ) == 0 ) { throw DecodeException . error ( ERR_ATTR_SYNTAX_AUTHPW_NO_AUTH_INFO . get ( ) ) ; } pos = readSpaces ( authPasswordValue , pos ) ; throwIfEndReached ( authPasswordValue , length , pos , ERR_ATTR_SYNTAX_AUTHPW_NO_AUTH_INFO_SEPARATOR ) ; pos ++ ; pos = readSpaces ( authPasswordValue , pos ) ; final StringBuilder authValue = new StringBuilder ( ) ; pos = readAuthValue ( authPasswordValue , length , pos , authValue ) ; if ( authValue . length ( ) == 0 ) { throw DecodeException . error ( ERR_ATTR_SYNTAX_AUTHPW_NO_AUTH_VALUE . get ( ) ) ; } while ( pos < length ) { final char c = authPasswordValue . charAt ( pos ) ; if ( c == ' ' ) { pos ++ ; } else { throw DecodeException . error ( ERR_ATTR_SYNTAX_AUTHPW_INVALID_TRAILING_CHAR . get ( pos ) ) ; } } return new String [ ] { scheme . toString ( ) , authInfo . toString ( ) , authValue . toString ( ) } ; }
decodes the provided authentication password value into its component parts .
