From db786032bf45be89c4a893281911364d158cfb6e Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Sat, 20 Oct 2012 10:10:53 +0000
Subject: [PATCH] Update to use new json-resource 2.0 APIs.
---
opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/EntryContainer.java | 63 +++++++++++++++++--------------
1 files changed, 35 insertions(+), 28 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 b2ff886..a40b006 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
@@ -18,6 +18,7 @@
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;
@@ -32,25 +33,15 @@
import org.forgerock.opendj.ldap.responses.Result;
import org.forgerock.opendj.ldap.responses.SearchResultEntry;
import org.forgerock.opendj.ldap.responses.SearchResultReference;
-import org.forgerock.resource.provider.Context;
/**
*
*/
public final class EntryContainer {
- // FIXME: make this configurable, also allow use of DN.
- private static final String UUID_ATTRIBUTE = "entryUUID";
-
- // FIXME: make this configurable.
- private static final String ETAG_ATTRIBUTE = "etag";
-
- private final ConnectionFactory factory;
- private final DN baseDN;
-
private abstract class AbstractRequestCompletionHandler<R, H extends ResultHandler<? super R>>
implements ResultHandler<R> {
- final H resultHandler;
final Connection connection;
+ final H resultHandler;
AbstractRequestCompletionHandler(final Connection connection, final H resultHandler) {
this.connection = connection;
@@ -123,12 +114,32 @@
}
- public EntryContainer(DN baseDN, ConnectionFactory factory) {
+ // FIXME: make this configurable.
+ private static final String ETAG_ATTRIBUTE = "etag";
+
+ // FIXME: make this configurable, also allow use of DN.
+ private static final String UUID_ATTRIBUTE = "entryUUID";
+
+ private final DN baseDN;
+
+ private final ConnectionFactory factory;
+
+ public EntryContainer(final DN baseDN, final ConnectionFactory factory) {
this.baseDN = baseDN;
this.factory = factory;
}
- public void listEntries(final Context context, final SearchResultHandler handler) {
+ public String getEtagFromEntry(final Entry entry) {
+ return entry.parseAttribute(ETAG_ATTRIBUTE).asString();
+ }
+
+ public String getIDFromEntry(final Entry entry) {
+ return entry.parseAttribute(UUID_ATTRIBUTE).asString();
+ }
+
+ public void listEntries(final Context context, final Collection<String> attributes,
+ final SearchResultHandler handler) {
+ final String[] tmp = getSearchAttributes(attributes);
final ConnectionCompletionHandler<Result> outerHandler =
new ConnectionCompletionHandler<Result>(handler) {
@@ -136,9 +147,9 @@
public void handleResult(final Connection connection) {
final SearchRequestCompletionHandler innerHandler =
new SearchRequestCompletionHandler(connection, handler);
- SearchRequest request =
+ final SearchRequest request =
Requests.newSearchRequest(baseDN, SearchScope.SINGLE_LEVEL, Filter
- .objectClassPresent(), UUID_ATTRIBUTE, ETAG_ATTRIBUTE);
+ .objectClassPresent(), tmp);
connection.searchAsync(request, null, innerHandler);
}
@@ -149,6 +160,7 @@
public void readEntry(final Context c, final String id, final Collection<String> attributes,
final ResultHandler<SearchResultEntry> handler) {
+ final String[] tmp = getSearchAttributes(attributes);
final ConnectionCompletionHandler<SearchResultEntry> outerHandler =
new ConnectionCompletionHandler<SearchResultEntry>(handler) {
@@ -156,13 +168,7 @@
public void handleResult(final Connection connection) {
final RequestCompletionHandler<SearchResultEntry> innerHandler =
new RequestCompletionHandler<SearchResultEntry>(connection, handler);
- // FIXME: who is responsible for adding the UUID and
- // etag attributes to this search?
- String[] tmp = attributes.toArray(new String[attributes.size() + 2]);
- tmp[tmp.length - 2] = UUID_ATTRIBUTE;
- tmp[tmp.length - 1] = ETAG_ATTRIBUTE;
-
- SearchRequest request =
+ final SearchRequest request =
Requests.newSearchRequest(baseDN, SearchScope.SINGLE_LEVEL, Filter
.equality(UUID_ATTRIBUTE, id), tmp);
connection.searchSingleEntryAsync(request, innerHandler);
@@ -173,12 +179,13 @@
factory.getConnectionAsync(outerHandler);
}
- public String getIDFromEntry(final Entry entry) {
- return entry.parseAttribute(UUID_ATTRIBUTE).asString();
- }
-
- public String getEtagFromEntry(final Entry entry) {
- return entry.parseAttribute(ETAG_ATTRIBUTE).asString();
+ private String[] getSearchAttributes(final Collection<String> attributes) {
+ // FIXME: who is responsible for adding the UUID and etag attributes to
+ // this search?
+ final String[] tmp = attributes.toArray(new String[attributes.size() + 2]);
+ tmp[tmp.length - 2] = UUID_ATTRIBUTE;
+ tmp[tmp.length - 1] = ETAG_ATTRIBUTE;
+ return tmp;
}
}
--
Gitblit v1.10.0