From df59285898b635c3c9f3011609eb7a73e779ecb9 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 07 Feb 2014 10:10:50 +0000
Subject: [PATCH] OPENDJ-1307 Migrate server ASN1 classes to SDK 

---
 opendj3-server-dev/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java |   50 ++++++++++++++++++++++++++++----------------------
 1 files changed, 28 insertions(+), 22 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java b/opendj3-server-dev/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java
index 7a59b05..62d151f 100644
--- a/opendj3-server-dev/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java
+++ b/opendj3-server-dev/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java
@@ -28,14 +28,7 @@
 
 
 
-import static org.opends.messages.CoreMessages.*;
-import static org.opends.messages.ProtocolMessages.*;
-import static org.opends.server.core.DirectoryServer.*;
-import static org.opends.server.loggers.AccessLogger.*;
-import static org.opends.server.protocols.ldap.LDAPConstants.*;
-import static org.opends.server.util.ServerConstants.*;
-import static org.opends.server.util.StaticUtils.*;
-
+import java.io.Closeable;
 import java.io.IOException;
 import java.net.InetAddress;
 import java.nio.ByteBuffer;
@@ -54,6 +47,11 @@
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.LocalizableMessageBuilder;
+import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.io.ASN1;
+import org.forgerock.opendj.io.ASN1Writer;
+import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.ByteStringBuilder;
 import org.opends.server.api.ClientConnection;
 import org.opends.server.api.ConnectionHandler;
 import org.opends.server.core.*;
@@ -62,16 +60,18 @@
 import org.opends.server.extensions.RedirectingByteChannel;
 import org.opends.server.extensions.TLSByteChannel;
 import org.opends.server.extensions.TLSCapableConnection;
-import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.opends.server.protocols.asn1.ASN1;
-import org.opends.server.protocols.asn1.ASN1ByteChannelReader;
-import org.opends.server.protocols.asn1.ASN1Reader;
-import org.opends.server.protocols.asn1.ASN1Writer;
 import org.opends.server.types.*;
-import org.forgerock.opendj.ldap.ByteString;
-import org.forgerock.opendj.ldap.ByteStringBuilder;
+import org.opends.server.util.StaticUtils;
 import org.opends.server.util.TimeThread;
 
+import static org.opends.messages.CoreMessages.*;
+import static org.opends.messages.ProtocolMessages.*;
+import static org.opends.server.core.DirectoryServer.*;
+import static org.opends.server.loggers.AccessLogger.*;
+import static org.opends.server.protocols.ldap.LDAPConstants.*;
+import static org.opends.server.util.ServerConstants.*;
+import static org.opends.server.util.StaticUtils.*;
+
 
 /**
  * This class defines an LDAP client connection, which is a type of
@@ -90,13 +90,13 @@
   private static final class ConnectionFinalizerJob implements Runnable
   {
     /** The client connection ASN1 reader. */
-    private final ASN1Reader asn1Reader;
+    private final ASN1ByteChannelReader asn1Reader;
 
     /** The client connection socket channel. */
     private final SocketChannel socketChannel;
 
     /** Creates a new connection finalizer job. */
-    private ConnectionFinalizerJob(ASN1Reader asn1Reader,
+    private ConnectionFinalizerJob(ASN1ByteChannelReader asn1Reader,
         SocketChannel socketChannel)
     {
       this.asn1Reader = asn1Reader;
@@ -308,7 +308,7 @@
   /**
    * Thread local ASN1Writer and buffer.
    */
-  private static final class ASN1WriterHolder
+  private static final class ASN1WriterHolder implements Closeable
   {
     private final ASN1Writer writer;
     private final ByteStringBuilder buffer;
@@ -320,6 +320,14 @@
       this.maxBufferSize = getMaxInternalBufferSize();
       this.writer = ASN1.getWriter(buffer, maxBufferSize);
     }
+
+    /** {@inheritDoc} */
+    @Override
+    public void close() throws IOException
+    {
+      StaticUtils.close(writer);
+      buffer.clearAndTruncate(maxBufferSize, maxBufferSize);
+    }
   }
 
   /**
@@ -503,9 +511,7 @@
             timeoutClientChannel);
     saslChannel =
         RedirectingByteChannel.getRedirectingByteChannel(tlsChannel);
-    this.asn1Reader =
-        ASN1.getReader(saslChannel, bufferSize, connectionHandler
-            .getMaxRequestSize());
+    this.asn1Reader = new ASN1ByteChannelReader(saslChannel, bufferSize, connectionHandler.getMaxRequestSize());
 
     if (connectionHandler.useSSL())
     {
@@ -1004,7 +1010,7 @@
       // Clear and reset all of the internal buffers ready for the next usage.
       // The ASN1Writer is based on a ByteStringBuilder so closing will cause
       // the internal buffers to be resized if needed.
-      close(holder.writer);
+      close(holder);
     }
  }
 

--
Gitblit v1.10.0