From 33db777770ba0a2e612d60d26a4e44f280263201 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Wed, 06 Mar 2013 11:57:52 +0000
Subject: [PATCH] Partial fix for OPENDJ-699: Implement DN reference mapping

---
 opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LDAP.java |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LDAP.java b/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LDAP.java
index 6a9d558..9964e7f 100644
--- a/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LDAP.java
+++ b/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/Rest2LDAP.java
@@ -184,6 +184,7 @@
          *         },
          *         "manager"     : { "reference" : {
          *             "ldapAttribute" : "manager",
+         *             "baseDN"        : "ou=people,dc=example,dc=com",
          *             "mapper"        : { "object" : {
          *                 "id"          : { "simple"   : { "ldapAttribute" : "uid", "isSingleValued" : true } },
          *                 "displayName" : { "simple"   : { "ldapAttribute" : "cn", "isSingleValued" : true } }
@@ -367,14 +368,18 @@
                 final JsonValue config = mapper.get("reference");
                 final AttributeDescription ldapAttribute =
                         ad(config.get("ldapAttribute").required().asString());
+                final DN baseDN = DN.valueOf(config.get("baseDN").required().asString(), schema);
                 final AttributeMapper m = configureMapper(config.get("mapper").required());
-                final ReferenceAttributeMapper r = reference(ldapAttribute, m);
+                final ReferenceAttributeMapper r = reference(ldapAttribute, baseDN, m);
                 if (config.get("isRequired").defaultTo(false).asBoolean()) {
                     r.isRequired();
                 }
                 if (config.get("isSingleValued").defaultTo(false).asBoolean()) {
                     r.isSingleValued();
                 }
+                if (config.isDefined("searchFilter")) {
+                    r.searchFilter(config.get("searchFilter").asString());
+                }
                 r.writability(parseWritability(mapper, config));
                 return r;
             } else if (mapper.isDefined("object")) {
@@ -644,13 +649,13 @@
     }
 
     public static ReferenceAttributeMapper reference(final AttributeDescription attribute,
-            final AttributeMapper mapper) {
-        return new ReferenceAttributeMapper(attribute, mapper);
+            final DN baseDN, final AttributeMapper mapper) {
+        return new ReferenceAttributeMapper(attribute, baseDN, mapper);
     }
 
-    public static ReferenceAttributeMapper reference(final String attribute,
+    public static ReferenceAttributeMapper reference(final String attribute, final String baseDN,
             final AttributeMapper mapper) {
-        return reference(AttributeDescription.valueOf(attribute), mapper);
+        return reference(AttributeDescription.valueOf(attribute), DN.valueOf(baseDN), mapper);
     }
 
     public static SimpleAttributeMapper simple(final AttributeDescription attribute) {

--
Gitblit v1.10.0