Я получил это некоторое время назад, но у меня не было времени опубликовать решение.
На примере этой страницы: Как написать простой пользовательский раздел для apache ds.
Мне удалось построить начальный раздел.Это, однако, не было полезным для моего случая.Было бы замечательно, если бы у ApacheDS была более приятная документация.
Так что для фильтрации я получил письмо из списка разработчиков Apache, в основном объясняющее, что нет классов, которые могли бы вам помочь, вы должны сделать это самостоятельно (пожалуйста, исправьте меня, если я ошибаюсь, так как я заинтересован в улучшении моего кода в ближайшее время).
Например, вы получили фильтр (objectClass = person), тогда вы должны сделать что-то вроде этого:
if(ctx.getFilter().toString().contains("objectClass=person")) {
//Somehow return entries that only correspond to persons on the data base (were you store your directory entries).
}
На самом деле, обратите внимание, что приведенный выше пример кода не будет работать, поскольку ApacheDS преобразует имена атрибутов в соответствующие им OID.Таким образом, вместо «objectClass» мы получили бы 2.5.6, который является OID для атрибута «objectClass».
Теперь, что касается областей поиска, ответ от JPBlanc говорит об этом в значительной степени, поэтому я не повторюсьчто он сказал.В вашем пользовательском разделе вам нужно написать свой код для обработки дерева по-разному.
Например:
switch (ctx.getScope()) {
case OBJECT:
//Find a particular entry on your entry database.
case ONELEVEL:
//Find all entries that match directly below a given entry.
case SUBTREE:
//Find all entries that match recursively below a given entry.
С уважением.