From b0a81eda9a0b2717e90dee49af53adc71f7cc3dc Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Thu, 31 Jan 2013 18:01:23 +0000
Subject: [PATCH] Fix OPENDJ-690: Rest2LDAP - Implement basic search support
---
opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/EntryContainer.java | 52 ++++++++++++++++++++++++++++------------------------
1 files changed, 28 insertions(+), 24 deletions(-)
diff --git a/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/EntryContainer.java b/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/EntryContainer.java
index e318c3a..f6916de 100644
--- a/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/EntryContainer.java
+++ b/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/EntryContainer.java
@@ -11,13 +11,12 @@
* Header, with the fields enclosed by brackets [] replaced by your own identifying
* information: "Portions Copyright [year] [name of copyright owner]".
*
- * Copyright 2012 ForgeRock AS.
+ * Copyright 2012-2013 ForgeRock AS.
*/
package org.forgerock.opendj.rest2ldap;
import java.util.Collection;
-import org.forgerock.json.resource.Context;
import org.forgerock.opendj.ldap.Connection;
import org.forgerock.opendj.ldap.ConnectionFactory;
import org.forgerock.opendj.ldap.DN;
@@ -119,6 +118,7 @@
// FIXME: make this configurable, also allow use of DN.
private static final String UUID_ATTRIBUTE = "entryUUID";
+ // TODO: support template variables.
private final DN baseDN;
private final ConnectionFactory factory;
@@ -164,27 +164,30 @@
*
* @param context
* The request context.
+ * @param filter
+ * The LDAP search filter.
* @param attributes
* The list of LDAP attributes to be returned.
* @param handler
* The search result handler.
*/
- public void listEntries(final Context context, final Collection<String> attributes,
- final SearchResultHandler handler) {
+ public void listEntries(final Context context, final Filter filter,
+ final Collection<String> attributes, final SearchResultHandler handler) {
final String[] tmp = getSearchAttributes(attributes);
- final ConnectionCompletionHandler<Result> outerHandler = new ConnectionCompletionHandler<Result>(
- handler) {
+ final ConnectionCompletionHandler<Result> outerHandler =
+ new ConnectionCompletionHandler<Result>(handler) {
- @Override
- public void handleResult(final Connection connection) {
- final SearchRequestCompletionHandler innerHandler = new SearchRequestCompletionHandler(
- connection, handler);
- final SearchRequest request = Requests.newSearchRequest(baseDN,
- SearchScope.SINGLE_LEVEL, Filter.objectClassPresent(), tmp);
- connection.searchAsync(request, null, innerHandler);
- }
+ @Override
+ public void handleResult(final Connection connection) {
+ final SearchRequestCompletionHandler innerHandler =
+ new SearchRequestCompletionHandler(connection, handler);
+ final SearchRequest request =
+ Requests.newSearchRequest(baseDN, SearchScope.SINGLE_LEVEL, filter,
+ tmp);
+ connection.searchAsync(request, null, innerHandler);
+ }
- };
+ };
factory.getConnectionAsync(outerHandler);
}
@@ -208,16 +211,17 @@
final ConnectionCompletionHandler<SearchResultEntry> outerHandler =
new ConnectionCompletionHandler<SearchResultEntry>(handler) {
- @Override
- public void handleResult(final Connection connection) {
- final RequestCompletionHandler<SearchResultEntry> innerHandler =
- new RequestCompletionHandler<SearchResultEntry>(connection, handler);
- final SearchRequest request = Requests.newSearchRequest(baseDN,
- SearchScope.SINGLE_LEVEL, Filter.equality(UUID_ATTRIBUTE, id), tmp);
- connection.searchSingleEntryAsync(request, innerHandler);
- }
+ @Override
+ public void handleResult(final Connection connection) {
+ final RequestCompletionHandler<SearchResultEntry> innerHandler =
+ new RequestCompletionHandler<SearchResultEntry>(connection, handler);
+ final SearchRequest request =
+ Requests.newSearchRequest(baseDN, SearchScope.SINGLE_LEVEL, Filter
+ .equality(UUID_ATTRIBUTE, id), tmp);
+ connection.searchSingleEntryAsync(request, innerHandler);
+ }
- };
+ };
// @Checkstyle:on
factory.getConnectionAsync(outerHandler);
}
--
Gitblit v1.10.0