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/ReferencePropertyMapper.java |   21 ++++++++++++++++-----
 1 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/ReferencePropertyMapper.java b/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/ReferencePropertyMapper.java
index a1496b3..69169a4 100644
--- a/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/ReferencePropertyMapper.java
+++ b/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/ReferencePropertyMapper.java
@@ -15,14 +15,15 @@
  */
 package org.forgerock.opendj.rest2ldap;
 
+import static org.forgerock.json.JsonValue.*;
 import static org.forgerock.opendj.ldap.ResultCode.ADMIN_LIMIT_EXCEEDED;
-import static org.forgerock.opendj.rest2ldap.Rest2ldapMessages.*;
 import static org.forgerock.opendj.ldap.LdapException.newLdapException;
 import static org.forgerock.opendj.ldap.requests.Requests.newSearchRequest;
 import static org.forgerock.opendj.rest2ldap.Rest2Ldap.asResourceException;
+import static org.forgerock.opendj.rest2ldap.Rest2ldapMessages.*;
 import static org.forgerock.opendj.rest2ldap.Utils.connectionFrom;
-import static org.forgerock.util.Reject.checkNotNull;
 import static org.forgerock.opendj.rest2ldap.Utils.newBadRequestException;
+import static org.forgerock.util.Reject.checkNotNull;
 import static org.forgerock.util.promise.Promises.newResultPromise;
 
 import java.util.ArrayList;
@@ -67,9 +68,7 @@
  * valued LDAP attribute.
  */
 public final class ReferencePropertyMapper extends AbstractLdapPropertyMapper<ReferencePropertyMapper> {
-    /**
-     * The maximum number of candidate references to allow in search filters.
-     */
+    /** The maximum number of candidate references to allow in search filters. */
     private static final int SEARCH_MAX_CANDIDATES = 1000;
 
     private final DnTemplate baseDnTemplate;
@@ -358,4 +357,16 @@
                     }
                 });
     }
+
+    @Override
+    JsonValue toJsonSchema() {
+        if (mapper.isMultiValued()) {
+            final JsonValue jsonSchema = json(object(field("type", "array")));
+            jsonSchema.put("items", mapper.toJsonSchema());
+            jsonSchema.put("uniqueItems", true);
+            putWritabilityProperties(jsonSchema);
+            return jsonSchema;
+        }
+        return mapper.toJsonSchema();
+    }
 }

--
Gitblit v1.10.0