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