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/AbstractLdapPropertyMapper.java |   32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/AbstractLdapPropertyMapper.java b/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/AbstractLdapPropertyMapper.java
index 0feff58..f529243 100644
--- a/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/AbstractLdapPropertyMapper.java
+++ b/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/AbstractLdapPropertyMapper.java
@@ -18,6 +18,8 @@
 import static org.forgerock.opendj.rest2ldap.Rest2ldapMessages.*;
 import static java.util.Collections.emptyList;
 import static java.util.Collections.singletonList;
+
+import static org.forgerock.api.enums.WritePolicy.WRITE_ON_CREATE;
 import static org.forgerock.opendj.ldap.Attributes.emptyAttribute;
 import static org.forgerock.opendj.rest2ldap.Rest2Ldap.asResourceException;
 import static org.forgerock.opendj.rest2ldap.Utils.isNullOrEmpty;
@@ -85,6 +87,16 @@
         return getThis();
     }
 
+    @Override
+    boolean isRequired() {
+        return isRequired;
+    }
+
+    @Override
+    boolean isMultiValued() {
+        return isMultiValued;
+    }
+
     /**
      * Indicates whether the LDAP attribute supports updates. The default is {@link WritabilityPolicy#READ_WRITE}.
      *
@@ -351,4 +363,24 @@
         }
     }
 
+    void putWritabilityProperties(JsonValue jsonSchema) {
+        switch (writabilityPolicy != null ? writabilityPolicy : WritabilityPolicy.READ_WRITE) {
+        case CREATE_ONLY:
+            jsonSchema.put("writePolicy", WRITE_ON_CREATE.toString());
+            jsonSchema.put("errorOnWritePolicyFailure", true);
+            break;
+        case CREATE_ONLY_DISCARD_WRITES:
+            jsonSchema.put("writePolicy", WRITE_ON_CREATE.toString());
+            break;
+        case READ_ONLY:
+            jsonSchema.put("readOnly", true);
+            jsonSchema.put("errorOnWritePolicyFailure", true);
+            break;
+        case READ_ONLY_DISCARD_WRITES:
+            jsonSchema.put("readOnly", true);
+            break;
+        default:
+            break;
+        }
+    }
 }

--
Gitblit v1.10.0