From 910f7515f24056d91041c5956fe022ab9e43db66 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 16 Oct 2014 13:41:38 +0000
Subject: [PATCH] Converted opendj3 code to use SearchRequest like API

---
 opendj3-server-dev/src/server/org/opends/server/protocols/internal/InternalLDAPOutputStream.java |   49 +++++++++++++++++++++++++++++++------------------
 1 files changed, 31 insertions(+), 18 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/protocols/internal/InternalLDAPOutputStream.java b/opendj3-server-dev/src/server/org/opends/server/protocols/internal/InternalLDAPOutputStream.java
index 166a123..0517e4c 100644
--- a/opendj3-server-dev/src/server/org/opends/server/protocols/internal/InternalLDAPOutputStream.java
+++ b/opendj3-server-dev/src/server/org/opends/server/protocols/internal/InternalLDAPOutputStream.java
@@ -26,30 +26,28 @@
  */
 package org.opends.server.protocols.internal;
 
-
-
-import java.io.OutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
 import java.util.List;
 
 import org.forgerock.i18n.LocalizableMessage;
-import org.opends.server.core.*;
 import org.forgerock.opendj.io.ASN1;
 import org.forgerock.opendj.io.ASN1Reader;
-import org.opends.server.protocols.ldap.*;
-import org.opends.server.types.*;
+import org.forgerock.opendj.ldap.ByteSequenceReader;
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.ByteStringBuilder;
-import org.forgerock.opendj.ldap.ByteSequenceReader;
+import org.opends.server.core.*;
+import org.opends.server.protocols.ldap.*;
+import org.opends.server.types.*;
 
+import static org.forgerock.opendj.ldap.DecodeException.*;
 import static org.opends.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.internal.InternalClientConnection.*;
+import static org.opends.server.protocols.internal.Requests.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
 import static org.opends.server.util.ServerConstants.*;
 
-
-
 /**
  * This class provides an implementation of a
  * {@code java.io.OutputStream} that can be used to facilitate
@@ -737,17 +735,30 @@
           throws IOException
   {
     int messageID = message.getMessageID();
-    SearchRequestProtocolOp request =
-         message.getSearchRequestProtocolOp();
+    SearchRequestProtocolOp request = message.getSearchRequestProtocolOp();
 
     InternalClientConnection conn = socket.getConnection();
-    InternalSearchOperation op =
-         new InternalSearchOperation(conn, nextOperationID(),
-                messageID, message.getControls(), request.getBaseDN(),
-                request.getScope(), request.getDereferencePolicy(),
-                request.getSizeLimit(), request.getTimeLimit(),
-                request.getTypesOnly(), request.getFilter(),
-                request.getAttributes(), this);
+    DN baseDN = null;
+    SearchFilter filter;
+    try
+    {
+      baseDN = DN.valueOf(request.getBaseDN().toString());
+      filter = request.getFilter().toSearchFilter();
+    }
+    catch (DirectoryException e)
+    {
+      final String cause = (baseDN == null ? "baseDN" : "filter");
+      throw error(LocalizableMessage.raw("Could not decode " + cause), e);
+    }
+    SearchRequest sr = newSearchRequest(baseDN, request.getScope(), filter)
+        .setDereferenceAliasesPolicy(request.getDereferencePolicy())
+        .setSizeLimit(request.getSizeLimit())
+        .setTimeLimit(request.getTimeLimit())
+        .setTypesOnly(request.getTypesOnly())
+        .addAttribute(request.getAttributes())
+        .addControl(message.getControls());
+    InternalSearchOperation op = new InternalSearchOperation(
+        conn, nextOperationID(), messageID, sr, this);
     op.run();
 
     SearchResultDoneProtocolOp searchDone =
@@ -773,6 +784,7 @@
    * @param  searchEntry      The matching search result entry to be
    *                          processed.
    */
+  @Override
   @org.opends.server.types.PublicAPI(
        stability=org.opends.server.types.StabilityLevel.PRIVATE,
        mayInstantiate=false,
@@ -803,6 +815,7 @@
    * @param  searchReference  The search result reference to be
    *                          processed.
    */
+  @Override
   @org.opends.server.types.PublicAPI(
        stability=org.opends.server.types.StabilityLevel.PRIVATE,
        mayInstantiate=false,

--
Gitblit v1.10.0