Как правильно выполнить поисковый вызов в асинхронном режиме в unboundId ldap sdk для Java?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как правильно выполнить поисковый вызов в асинхронном режиме в unboundId ldap sdk для Java?

Сообщение Anonymous »

На основе https://docs.ldap.com/ldap-sdk/docs/get ... onous.html
Я пытаюсь реализовать функцию, которая будет возвращать запись по DN в асинхронном режиме. Итак, мой код:

Код: Выделить всё

      val searchRequest = SearchRequest(
EmptyAsyncListener(),
dn,
SearchScope.BASE,
DereferencePolicy.NEVER,
1,
0,
false,
Filter.createPresenceFilter("objectClass"),
*attributes,
)
val asyncRequestId = getConnection().asyncSearch(searchRequest)
val ldapResult = asyncRequestId.get()
Но в данном случае я вижу, что ldapResult имеет тип SearchResult, но я ожидаю, что у меня будет SearchResultEntry (или коллекция SearchResultEntry)
Изображение

В конце концов мне удалось реализовать рабочий пример с использованием параллельного примитивы из java.util.concurrent:

Код: Выделить всё

        val latch = CountDownLatch(1)
val ref = AtomicReference()
val searchRequest = SearchRequest(
SimpleAsyncListener(latch, ref),
dn,
SearchScope.BASE,
DereferencePolicy.NEVER,
1,
0,
false,
Filter.createPresenceFilter("objectClass"),
*attributes,
)
getConnection().asyncSearch(searchRequest)
latch.await()
val entry = ref.get()
реализация прослушивателя:

Код: Выделить всё

class SimpleAsyncListener(private val latch: CountDownLatch, private val ref: AtomicReference) :
AsyncSearchResultListener {

override fun searchEntryReturned(@NotNull searchEntry: SearchResultEntry) {
ref.set(searchEntry)
latch.countDown()
}

override fun searchReferenceReturned(
@NotNull searchReference: SearchResultReference
) {
// No implementation required.
}

override fun searchResultReceived(
@NotNull requestID: AsyncRequestID,
@NotNull searchResult: SearchResult
) {

}
}
Это работает, но я боюсь, что это перебор. Есть ли способ добиться того же результата более простым способом?
P.S. Пример искусственный, просто для изучения асинхронного API

Подробнее здесь: https://stackoverflow.com/questions/792 ... d-ldap-sdk
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»