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

diff --git a/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/AbstractRequestHandler.java b/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/AbstractRequestHandler.java
index 4b02050..8a71663 100644
--- a/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/AbstractRequestHandler.java
+++ b/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/AbstractRequestHandler.java
@@ -15,6 +15,8 @@
  */
 package org.forgerock.opendj.rest2ldap;
 
+import org.forgerock.api.models.ApiDescription;
+import org.forgerock.http.ApiProducer;
 import org.forgerock.json.resource.ActionRequest;
 import org.forgerock.json.resource.ActionResponse;
 import org.forgerock.json.resource.CreateRequest;
@@ -31,13 +33,14 @@
 import org.forgerock.json.resource.ResourceResponse;
 import org.forgerock.json.resource.UpdateRequest;
 import org.forgerock.services.context.Context;
+import org.forgerock.services.descriptor.Describable;
 import org.forgerock.util.promise.Promise;
 
 /**
  * An abstract base class from which request handlers may be easily implemented. The default implementation of each
  * method is to invoke the {@link #handleRequest(Context, Request)} method.
  */
-public abstract class AbstractRequestHandler implements RequestHandler {
+public abstract class AbstractRequestHandler implements RequestHandler, Describable<ApiDescription, Request> {
     /** Creates a new {@code AbstractRequestHandler}. */
     protected AbstractRequestHandler() {
         // Nothing to do.
@@ -96,4 +99,28 @@
     protected <V> Promise<V, ResourceException> handleRequest(final Context context, final Request request) {
         return new NotSupportedException().asPromise();
     }
+
+    @Override
+    public ApiDescription api(ApiProducer<ApiDescription> producer) {
+        // api descriptions that are null will be ignored
+        return null;
+    }
+
+    @Override
+    public ApiDescription handleApiRequest(Context context, Request request) {
+        // api requests are handled at a higher level by org.forgerock.opendj.rest2ldap.DescribableRequestHandler.
+        // So this code is never reached.
+        throw new UnsupportedOperationException("This should be handled by "
+            + "org.forgerock.opendj.rest2ldap.DescribableRequestHandler.handleApiRequest()");
+    }
+
+    @Override
+    public void addDescriptorListener(Describable.Listener listener) {
+        // nothing to do
+    }
+
+    @Override
+    public void removeDescriptorListener(Describable.Listener listener) {
+        // nothing to do
+    }
 }

--
Gitblit v1.10.0