From 4ba67b612ac446dd8e0a83689983499491324eef Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Mon, 11 Feb 2013 14:13:31 +0000
Subject: [PATCH] Fix OPENDJ-691: Implement add/create support

---
 opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/DefaultAttributeMapper.java |   35 ++++-------------------------------
 1 files changed, 4 insertions(+), 31 deletions(-)

diff --git a/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/DefaultAttributeMapper.java b/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/DefaultAttributeMapper.java
index 3d29ddc..96b68f7 100644
--- a/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/DefaultAttributeMapper.java
+++ b/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/DefaultAttributeMapper.java
@@ -17,11 +17,11 @@
 
 import static org.forgerock.opendj.rest2ldap.Utils.attributeToJson;
 import static org.forgerock.opendj.rest2ldap.Utils.getAttributeName;
+import static org.forgerock.opendj.rest2ldap.Utils.jsonToAttribute;
 import static org.forgerock.opendj.rest2ldap.Utils.toFilter;
 import static org.forgerock.opendj.rest2ldap.Utils.toLowerCase;
 
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -34,7 +34,6 @@
 import org.forgerock.json.resource.ResultHandler;
 import org.forgerock.opendj.ldap.Attribute;
 import org.forgerock.opendj.ldap.AttributeDescription;
-import org.forgerock.opendj.ldap.Attributes;
 import org.forgerock.opendj.ldap.Entry;
 import org.forgerock.opendj.ldap.Filter;
 
@@ -138,38 +137,16 @@
                 if (!isIncludedAttribute(field.getKey())) {
                     continue;
                 }
-                final AttributeDescription ad;
                 try {
-                    ad = AttributeDescription.valueOf(field.getKey(), c.getConfig().schema());
+                    final AttributeDescription ad =
+                            AttributeDescription.valueOf(field.getKey(), c.getConfig().schema());
+                    result.add(jsonToAttribute(field.getValue(), ad));
                 } catch (final Exception e) {
                     // FIXME: improve error message.
                     h.handleError(new BadRequestException("The field " + field.getKey()
                             + " is invalid"));
                     return;
                 }
-                final Object value = field.getValue();
-                if (isJSONPrimitive(value)) {
-                    result.add(Attributes.singletonAttribute(ad, value));
-                } else if (value instanceof Collection<?>) {
-                    final Attribute a =
-                            c.getConfig().decodeOptions().getAttributeFactory().newAttribute(ad);
-                    for (final Object o : (Collection<?>) value) {
-                        if (isJSONPrimitive(o)) {
-                            a.add(o);
-                        } else {
-                            // FIXME: improve error message.
-                            h.handleError(new BadRequestException("The field " + field.getKey()
-                                    + " is invalid"));
-                            return;
-                        }
-                    }
-                    result.add(a);
-                } else {
-                    // FIXME: improve error message.
-                    h.handleError(new BadRequestException("The field " + field.getKey()
-                            + " is invalid"));
-                    return;
-                }
             }
             h.handleResult(result);
         } else {
@@ -192,8 +169,4 @@
 
         return false;
     }
-
-    private boolean isJSONPrimitive(final Object value) {
-        return value instanceof String || value instanceof Boolean || value instanceof Number;
-    }
 }

--
Gitblit v1.10.0