From e4c0edea06c8fee28369f03f393b7d54b2b6235c Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 16 Sep 2016 13:25:06 +0000
Subject: [PATCH] OPENDJ-3246 Return the CREST descriptor over REST for rest2ldap endpoints

---
 opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LdapHttpApplication.java |   27 ++++++++++++++++++++++++++-
 1 files changed, 26 insertions(+), 1 deletions(-)

diff --git a/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LdapHttpApplication.java b/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LdapHttpApplication.java
index fd5ac89..2afe7d0 100644
--- a/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LdapHttpApplication.java
+++ b/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LdapHttpApplication.java
@@ -22,7 +22,6 @@
 import static org.forgerock.json.JsonValueFunctions.duration;
 import static org.forgerock.json.JsonValueFunctions.enumConstant;
 import static org.forgerock.json.JsonValueFunctions.setOf;
-import static org.forgerock.json.resource.http.CrestHttp.newHttpHandler;
 import static org.forgerock.opendj.ldap.KeyManagers.useSingleCertificate;
 import static org.forgerock.opendj.rest2ldap.Rest2LdapJsonConfigurator.*;
 import static org.forgerock.opendj.rest2ldap.Rest2ldapMessages.*;
@@ -69,7 +68,10 @@
 import org.forgerock.i18n.LocalizedIllegalArgumentException;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
 import org.forgerock.json.JsonValue;
+import org.forgerock.json.resource.CrestApplication;
 import org.forgerock.json.resource.RequestHandler;
+import org.forgerock.json.resource.Resources;
+import org.forgerock.json.resource.http.CrestHttp;
 import org.forgerock.opendj.ldap.Connection;
 import org.forgerock.opendj.ldap.ConnectionFactory;
 import org.forgerock.opendj.ldap.DN;
@@ -94,6 +96,8 @@
 import org.forgerock.util.time.Duration;
 import org.forgerock.util.time.TimeService;
 
+import com.forgerock.opendj.util.ManifestUtil;
+
 /** Rest2ldap HTTP application. */
 public class Rest2LdapHttpApplication implements HttpApplication {
     private static final String DEFAULT_ROOT_FACTORY = "root";
@@ -231,6 +235,27 @@
         return configureEndpoints(endpointsDirectory, options);
     }
 
+    private static Handler newHttpHandler(final RequestHandler requestHandler) {
+        final org.forgerock.json.resource.ConnectionFactory factory =
+                Resources.newInternalConnectionFactory(requestHandler);
+        return CrestHttp.newHttpHandler(new CrestApplication() {
+            @Override
+            public org.forgerock.json.resource.ConnectionFactory getConnectionFactory() {
+                return factory;
+            }
+
+            @Override
+            public String getApiId() {
+                return "frapi:opendj:rest2ldap";
+            }
+
+            @Override
+            public String getApiVersion() {
+                return ManifestUtil.getVersionWithRevision("opendj-core");
+            }
+        });
+    }
+
     private void configureSecurity(final JsonValue configuration) {
         trustManager = configureTrustManager(configuration);
         keyManager = configureKeyManager(configuration);

--
Gitblit v1.10.0