From 33255bfee39fb3cb3813894831a76bc7c014c13a Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Fri, 08 Feb 2013 18:23:37 +0000
Subject: [PATCH] Partial fix for OPENDJ-691: Implement add/create support

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

diff --git a/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/CompositeAttributeMapper.java b/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/CompositeAttributeMapper.java
index ca359ed..cf77ea8 100644
--- a/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/CompositeAttributeMapper.java
+++ b/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/CompositeAttributeMapper.java
@@ -121,7 +121,31 @@
 
     @Override
     void toLDAP(final Context c, final JsonValue v, final ResultHandler<List<Attribute>> h) {
-        // TODO Auto-generated method stub
+        final ResultHandler<List<Attribute>> handler =
+                accumulate(attributeMappers.size(), transform(
+                        new Function<List<List<Attribute>>, List<Attribute>, Void>() {
+                            @Override
+                            public List<Attribute> apply(final List<List<Attribute>> value,
+                                    final Void p) {
+                                switch (value.size()) {
+                                case 0:
+                                    return Collections.emptyList();
+                                case 1:
+                                    return value.get(0) != null ? value.get(0) : Collections
+                                            .<Attribute> emptyList();
+                                default:
+                                    List<Attribute> attributes =
+                                            new ArrayList<Attribute>(value.size());
+                                    for (List<Attribute> a : value) {
+                                        attributes.addAll(a);
+                                    }
+                                    return attributes;
+                                }
+                            }
+                        }, h));
+        for (final AttributeMapper mapper : attributeMappers) {
+            mapper.toLDAP(c, v, handler);
+        }
     }
 
     @SuppressWarnings("unchecked")

--
Gitblit v1.10.0