int colonPos = token.indexOf(':');
if (colonPos < 0)
{
if (token.length() == 0)
{
Message message =
INFO_SORTREQ_CONTROL_NO_ATTR_NAME.get(sortOrderString);
throw new LDAPException(LDAPResultCode.PROTOCOL_ERROR, message);
}
if (reverseOrder)
{
decodedKeyList.add(new String[]{token, null, "r"});
}
else
{
decodedKeyList.add(new String[]{token, null, null});
}
}
else if (colonPos == 0)
{
Message message =
INFO_SORTREQ_CONTROL_NO_ATTR_NAME.get(sortOrderString);
throw new LDAPException(LDAPResultCode.PROTOCOL_ERROR, message);
}
else if (colonPos == (token.length() - 1))
{
Message message =
INFO_SORTREQ_CONTROL_NO_MATCHING_RULE.get(sortOrderString);
throw new LDAPException(LDAPResultCode.PROTOCOL_ERROR, message);
}
else
{
String attrName = token.substring(0, colonPos);
String ruleID = token.substring(colonPos+1);
if (reverseOrder)
{
decodedKeyList.add(new String[]{attrName, ruleID, "r"});
}
else
{
decodedKeyList.add(new String[]{attrName, ruleID, null});
}
}
}
if (decodedKeyList.isEmpty())
{
Message message = INFO_SORTREQ_CONTROL_NO_SORT_KEYS.get();
throw new LDAPException(LDAPResultCode.PROTOCOL_ERROR, message);
}
}