messageId = ASN1Integer.toIntValue(values[0]);
if (values[1] == null) {
return;
}
ChosenValue chosen = (ChosenValue) values[1];
opIndex = chosen.getIndex();
// failed to retrieve responseOp
responseOp = getResponseOp();
if (responseOp == null) {
return;
}
if (opIndex == LdapASN1Constant.OP_SEARCH_RESULT_DONE
|| opIndex == LdapASN1Constant.OP_SEARCH_RESULT_ENTRY
|| opIndex == LdapASN1Constant.OP_SEARCH_RESULT_REF) {
/*
* we use LdapSearchResult to decode all types of search responses,
* so we need index to determine which type of response to decode
*/
responseOp.decodeValues(new Object[] { chosen });
} else {
responseOp.decodeValues((Object[]) chosen.getValue());
}
if (values[2] != null) {
Collection<Object[]> list = (Collection<Object[]>) values[2];
controls = new Control[list.size()];