From 1df4f51adf614210ca4a9b9728327090ec5ea264 Mon Sep 17 00:00:00 2001
From: Gaetan Boismal <gaetan.boismal@forgerock.com>
Date: Fri, 11 Sep 2015 20:33:53 +0000
Subject: [PATCH] OPENDJ-1666 PR-19 CREST-3.0.0 Migration

---
 opendj-server-legacy/src/main/java/org/opends/server/protocols/http/HTTPClientConnection.java |   64 +++++++++++++++----------------
 1 files changed, 31 insertions(+), 33 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/protocols/http/HTTPClientConnection.java b/opendj-server-legacy/src/main/java/org/opends/server/protocols/http/HTTPClientConnection.java
index 5251ee6..b2447ef 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/protocols/http/HTTPClientConnection.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/protocols/http/HTTPClientConnection.java
@@ -25,6 +25,12 @@
  */
 package org.opends.server.protocols.http;
 
+import static org.forgerock.opendj.adapter.server3x.Converters.from;
+import static org.forgerock.opendj.adapter.server3x.Converters.getResponseResult;
+import static org.forgerock.opendj.ldap.LdapException.newLdapException;
+import static org.opends.messages.ProtocolMessages.WARN_CLIENT_DISCONNECT_IN_PROGRESS;
+import static org.opends.server.loggers.AccessLogger.logDisconnect;
+
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
@@ -34,16 +40,19 @@
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 
-import javax.servlet.http.HttpServletRequest;
-
+import org.forgerock.http.Context;
+import org.forgerock.http.MutableUri;
+import org.forgerock.http.context.ClientContext;
+import org.forgerock.http.context.AttributesContext;
+import org.forgerock.http.protocol.Request;
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.LocalizableMessageBuilder;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.opendj.ldap.LdapException;
-import org.forgerock.opendj.ldap.spi.LdapPromiseImpl;
 import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.SearchResultHandler;
 import org.forgerock.opendj.ldap.responses.Result;
+import org.forgerock.opendj.ldap.spi.LdapPromiseImpl;
 import org.opends.server.api.ClientConnection;
 import org.opends.server.core.AddOperation;
 import org.opends.server.core.BindOperation;
@@ -79,11 +88,6 @@
 import org.opends.server.types.SearchResultEntry;
 import org.opends.server.types.SearchResultReference;
 
-import static org.forgerock.opendj.adapter.server3x.Converters.*;
-import static org.forgerock.opendj.ldap.LdapException.*;
-import static org.opends.messages.ProtocolMessages.*;
-import static org.opends.server.loggers.AccessLogger.*;
-
 /**
  * This class defines an HTTP client connection, which is a type of client
  * connection that will be accepted by an instance of the HTTP connection
@@ -234,7 +238,7 @@
   private final InetAddress localAddress;
 
   /** Whether this connection is secure. */
-  private final boolean isSecure;
+  private boolean isSecure;
 
   /** Security-Strength Factor extracted from the request attribute. */
   private final int securityStrengthFactor;
@@ -244,26 +248,29 @@
    *
    * @param connectionHandler
    *          the connection handler that accepted this connection
-   * @param request
-   *          represents this client connection.
+   * @param context
+   *          represents the context of this client connection.
    */
-  public HTTPClientConnection(HTTPConnectionHandler connectionHandler, HttpServletRequest request)
+  public HTTPClientConnection(HTTPConnectionHandler connectionHandler, Context context, Request request)
   {
     this.connectionHandler = connectionHandler;
-
+    final ClientContext clientCtx = context.asContext(ClientContext.class);
     // Memorize all the fields we need from the request before Grizzly decides to recycle it
-    this.clientAddress = request.getRemoteAddr();
-    this.clientPort = request.getRemotePort();
-    this.serverAddress = request.getLocalAddr();
-    this.serverPort = request.getLocalPort();
-    this.remoteAddress = toInetAddress(request.getRemoteAddr());
-    this.localAddress = toInetAddress(request.getLocalAddr());
-    this.isSecure = request.isSecure();
-    this.securityStrengthFactor = calcSSF(request.getAttribute(SERVLET_SSF_CONSTANT));
+    this.clientAddress = clientCtx.getRemoteAddress();
+    this.remoteAddress = toInetAddress(clientAddress);
+    this.clientPort = clientCtx.getRemotePort();
+    this.isSecure = clientCtx.isSecure();
+
+    final MutableUri uri = request.getUri();
+    this.serverAddress = uri.getHost();
+    this.localAddress = toInetAddress(serverAddress);
+    this.serverPort = uri.getPort();
+    this.securityStrengthFactor = calcSSF(
+            context.asContext(AttributesContext.class).getAttributes().get(SERVLET_SSF_CONSTANT));
     this.method = request.getMethod();
-    this.query = computeQuery(request);
-    this.protocol = request.getProtocol();
-    this.userAgent = request.getHeader("User-Agent");
+    this.query = uri.getQuery();
+    this.protocol = request.getVersion();
+    this.userAgent = clientCtx.getUserAgent();
 
     this.statTracker = this.connectionHandler.getStatTracker();
 
@@ -277,15 +284,6 @@
     this.connectionID = DirectoryServer.newConnectionAccepted(this);
   }
 
-  private String computeQuery(HttpServletRequest request)
-  {
-    if (request.getQueryString() != null)
-    {
-      return request.getRequestURI() + "?" + request.getQueryString();
-    }
-    return request.getRequestURI();
-  }
-
   @Override
   public String getAuthUser()
   {

--
Gitblit v1.10.0