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/HTTPConnectionHandler.java |  129 +++++++++---------------------------------
 1 files changed, 29 insertions(+), 100 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/protocols/http/HTTPConnectionHandler.java b/opendj-server-legacy/src/main/java/org/opends/server/protocols/http/HTTPConnectionHandler.java
index e76f317..934b78f 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/protocols/http/HTTPConnectionHandler.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/protocols/http/HTTPConnectionHandler.java
@@ -25,46 +25,38 @@
  */
 package org.opends.server.protocols.http;
 
-import static org.opends.messages.ConfigMessages.*;
+import static org.opends.messages.ConfigMessages.WARN_CONFIG_LOGGER_NO_ACTIVE_HTTP_ACCESS_LOGGERS;
 import static org.opends.messages.ProtocolMessages.*;
-import static org.opends.server.util.ServerConstants.*;
-import static org.opends.server.util.StaticUtils.*;
+import static org.opends.server.util.ServerConstants.ALERT_DESCRIPTION_HTTP_CONNECTION_HANDLER_CONSECUTIVE_FAILURES;
+import static org.opends.server.util.ServerConstants.ALERT_TYPE_HTTP_CONNECTION_HANDLER_CONSECUTIVE_FAILURES;
+import static org.opends.server.util.StaticUtils.getExceptionMessage;
+import static org.opends.server.util.StaticUtils.isAddressInUse;
+import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
 
-import java.io.File;
+import javax.net.ssl.KeyManager;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLEngine;
 import java.io.IOException;
 import java.net.InetAddress;
-import java.util.*;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javax.net.ssl.KeyManager;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLEngine;
-import javax.servlet.DispatcherType;
-import javax.servlet.Filter;
-import javax.servlet.ServletException;
-
-import org.codehaus.jackson.JsonParseException;
-import org.codehaus.jackson.JsonParser;
-import org.codehaus.jackson.map.JsonMappingException;
-import org.codehaus.jackson.map.ObjectMapper;
+import org.forgerock.http.servlet.HttpFrameworkServlet;
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.forgerock.json.fluent.JsonValue;
-import org.forgerock.json.resource.CollectionResourceProvider;
-import org.forgerock.json.resource.ConnectionFactory;
-import org.forgerock.json.resource.Resources;
-import org.forgerock.json.resource.Router;
-import org.forgerock.json.resource.servlet.HttpServlet;
 import org.forgerock.opendj.config.server.ConfigChangeResult;
 import org.forgerock.opendj.config.server.ConfigException;
 import org.forgerock.opendj.ldap.ResultCode;
-import org.forgerock.opendj.ldap.SearchScope;
-import org.forgerock.opendj.rest2ldap.AuthorizationPolicy;
-import org.forgerock.opendj.rest2ldap.Rest2LDAP;
-import org.forgerock.opendj.rest2ldap.servlet.Rest2LDAPContextFactory;
 import org.glassfish.grizzly.http.HttpProbe;
 import org.glassfish.grizzly.http.server.HttpServer;
 import org.glassfish.grizzly.http.server.NetworkListener;
@@ -78,13 +70,21 @@
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.ConnectionHandlerCfg;
 import org.opends.server.admin.std.server.HTTPConnectionHandlerCfg;
-import org.opends.server.api.*;
+import org.opends.server.api.AlertGenerator;
+import org.opends.server.api.ClientConnection;
+import org.opends.server.api.ConnectionHandler;
+import org.opends.server.api.KeyManagerProvider;
+import org.opends.server.api.ServerShutdownListener;
+import org.opends.server.api.TrustManagerProvider;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.extensions.NullKeyManagerProvider;
 import org.opends.server.extensions.NullTrustManagerProvider;
 import org.opends.server.loggers.HTTPAccessLogger;
 import org.opends.server.monitors.ClientConnectionMonitorProvider;
-import org.opends.server.types.*;
+import org.opends.server.types.DN;
+import org.opends.server.types.DirectoryException;
+import org.opends.server.types.HostPort;
+import org.opends.server.types.InitializationException;
 import org.opends.server.util.SelectableCertificateKeyManager;
 import org.opends.server.util.StaticUtils;
 
@@ -107,8 +107,6 @@
   /** SSL instance name used in context creation. */
   private static final String SSL_CONTEXT_INSTANCE_NAME = "TLS";
 
-  private static final ObjectMapper JSON_MAPPER = new ObjectMapper().configure(JsonParser.Feature.ALLOW_COMMENTS, true);
-
   /** The initialization configuration. */
   private HTTPConnectionHandlerCfg initConfig;
 
@@ -779,81 +777,12 @@
 
   private void createAndRegisterServlet(final String servletName, final String... urlPatterns) throws Exception
   {
-    // Parse and use JSON config
-    File jsonConfigFile = getFileForPath(this.currentConfig.getConfigFile());
-    final JsonValue configuration = parseJsonConfiguration(jsonConfigFile).recordKeyAccesses();
-    final HTTPAuthenticationConfig authenticationConfig = getAuthenticationConfig(configuration);
-    final ConnectionFactory connFactory = getConnectionFactory(configuration);
-    configuration.verifyAllKeysAccessed();
-
-    Filter filter = new CollectClientConnectionsFilter(this, authenticationConfig);
-    // Used for hooking our HTTPClientConnection in Rest2LDAP
-    final HttpServlet servlet = new HttpServlet(connFactory, Rest2LDAPContextFactory.getHttpServletContextFactory());
-
     // Create and deploy the Web app context
     final WebappContext ctx = new WebappContext(servletName);
-    ctx.addFilter("collectClientConnections", filter)
-       .addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, urlPatterns);
-    ctx.addServlet(servletName, servlet).addMapping(urlPatterns);
+    ctx.addServlet(servletName, new HttpFrameworkServlet(new LdapHttpApplication(this))).addMapping(urlPatterns);
     ctx.deploy(this.httpServer);
   }
 
-  private HTTPAuthenticationConfig getAuthenticationConfig(final JsonValue configuration)
-  {
-    final HTTPAuthenticationConfig result = new HTTPAuthenticationConfig();
-
-    final JsonValue val = configuration.get("authenticationFilter");
-    result.setBasicAuthenticationSupported(asBool(val, "supportHTTPBasicAuthentication"));
-    result.setCustomHeadersAuthenticationSupported(asBool(val, "supportAltAuthentication"));
-    result.setCustomHeaderUsername(val.get("altAuthenticationUsernameHeader").asString());
-    result.setCustomHeaderPassword(val.get("altAuthenticationPasswordHeader").asString());
-
-    final String searchBaseDN = asString(val, "searchBaseDN");
-    result.setSearchBaseDN(org.forgerock.opendj.ldap.DN.valueOf(searchBaseDN));
-    result.setSearchScope(SearchScope.valueOf(asString(val, "searchScope")));
-    result.setSearchFilterTemplate(asString(val, "searchFilterTemplate"));
-
-    return result;
-  }
-
-  private String asString(JsonValue value, String key)
-  {
-    return value.get(key).required().asString();
-  }
-
-  private boolean asBool(JsonValue value, String key)
-  {
-    return value.get(key).defaultTo(false).asBoolean();
-  }
-
-  private ConnectionFactory getConnectionFactory(final JsonValue configuration)
-  {
-    final Router router = new Router();
-    final JsonValue mappings = configuration.get("servlet").get("mappings").required();
-    for (final String mappingUrl : mappings.keys())
-    {
-      final JsonValue mapping = mappings.get(mappingUrl);
-      final CollectionResourceProvider provider = Rest2LDAP.builder()
-                                                           .authorizationPolicy(AuthorizationPolicy.REUSE)
-                                                           .configureMapping(mapping).build();
-      router.addRoute(mappingUrl, provider);
-    }
-    return Resources.newInternalConnectionFactory(router);
-  }
-
-  private JsonValue parseJsonConfiguration(File configFile)
-      throws IOException, JsonParseException, JsonMappingException, ServletException
-  {
-    // Parse the config file.
-    final Object content = JSON_MAPPER.readValue(configFile, Object.class);
-    if (!(content instanceof Map))
-    {
-      throw new ServletException(
-          "Servlet configuration file '" + configFile + "' does not contain a valid JSON configuration");
-    }
-    return new JsonValue(content);
-  }
-
   private void stopHttpServer()
   {
     if (this.httpServer != null)

--
Gitblit v1.10.0