From 65f47d9c24da91fdeac1eb6f012f44cc056ac4e4 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Thu, 25 Aug 2016 15:15:46 +0000
Subject: [PATCH] OPENDJ-3160 Support DN templates in reference property base DNs
---
opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/ReferencePropertyMapper.java | 17 +++++++++--------
1 files changed, 9 insertions(+), 8 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 f20052b..a1496b3 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
@@ -72,18 +72,19 @@
*/
private static final int SEARCH_MAX_CANDIDATES = 1000;
- private final DN baseDn;
+ private final DnTemplate baseDnTemplate;
private final Schema schema;
private Filter filter;
private final PropertyMapper mapper;
private final AttributeDescription primaryKey;
private SearchScope scope = SearchScope.WHOLE_SUBTREE;
- ReferencePropertyMapper(final Schema schema, final AttributeDescription ldapAttributeName, final DN baseDn,
- final AttributeDescription primaryKey, final PropertyMapper mapper) {
+ ReferencePropertyMapper(final Schema schema, final AttributeDescription ldapAttributeName,
+ final String baseDnTemplate, final AttributeDescription primaryKey,
+ final PropertyMapper mapper) {
super(ldapAttributeName);
this.schema = schema;
- this.baseDn = baseDn;
+ this.baseDnTemplate = DnTemplate.compile(baseDnTemplate);
this.primaryKey = primaryKey;
this.mapper = mapper;
}
@@ -144,7 +145,7 @@
@Override
public Promise<Filter, ResourceException> apply(final Filter result) {
// Search for all referenced entries and construct a filter.
- final SearchRequest request = createSearchRequest(result);
+ final SearchRequest request = createSearchRequest(context, result);
final List<Filter> subFilters = new LinkedList<>();
return connectionFrom(context).searchAsync(request, new SearchResultHandler() {
@@ -224,7 +225,7 @@
// Now search for the referenced entry in to get its DN.
final ByteString primaryKeyValue = primaryKeyAttribute.firstValue();
final Filter filter = Filter.equality(primaryKey.toString(), primaryKeyValue);
- final SearchRequest search = createSearchRequest(filter);
+ final SearchRequest search = createSearchRequest(context, filter);
connectionFrom(context).searchSingleEntryAsync(search)
.thenOnResult(new ResultHandler<SearchResultEntry>() {
@Override
@@ -325,9 +326,9 @@
}
}
- private SearchRequest createSearchRequest(final Filter result) {
+ private SearchRequest createSearchRequest(final Context context, final Filter result) {
final Filter searchFilter = filter != null ? Filter.and(filter, result) : result;
- return newSearchRequest(baseDn, scope, searchFilter, "1.1");
+ return newSearchRequest(baseDnTemplate.format(context), scope, searchFilter, "1.1");
}
private Promise<JsonValue, ResourceException> readEntry(
--
Gitblit v1.10.0