From eec7ba4411d0535c8229d08f0cdad60d04da7ca6 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Thu, 25 Aug 2016 14:28:39 +0000
Subject: [PATCH] OPENDJ-3160 Pass Context through to PropertyMapper methods
---
opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/ReferencePropertyMapper.java | 27 ++++++++++++++-------------
1 files changed, 14 insertions(+), 13 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 e01c530..f20052b 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
@@ -20,6 +20,7 @@
import static org.forgerock.opendj.ldap.LdapException.newLdapException;
import static org.forgerock.opendj.ldap.requests.Requests.newSearchRequest;
import static org.forgerock.opendj.rest2ldap.Rest2Ldap.asResourceException;
+import static org.forgerock.opendj.rest2ldap.Utils.connectionFrom;
import static org.forgerock.util.Reject.checkNotNull;
import static org.forgerock.opendj.rest2ldap.Utils.newBadRequestException;
import static org.forgerock.util.promise.Promises.newResultPromise;
@@ -38,7 +39,6 @@
import org.forgerock.opendj.ldap.Attribute;
import org.forgerock.opendj.ldap.AttributeDescription;
import org.forgerock.opendj.ldap.ByteString;
-import org.forgerock.opendj.ldap.Connection;
import org.forgerock.opendj.ldap.DN;
import org.forgerock.opendj.ldap.Entry;
import org.forgerock.opendj.ldap.EntryNotFoundException;
@@ -53,6 +53,7 @@
import org.forgerock.opendj.ldap.responses.SearchResultEntry;
import org.forgerock.opendj.ldap.responses.SearchResultReference;
import org.forgerock.opendj.ldap.schema.Schema;
+import org.forgerock.services.context.Context;
import org.forgerock.util.AsyncFunction;
import org.forgerock.util.Function;
import org.forgerock.util.promise.ExceptionHandler;
@@ -134,11 +135,11 @@
}
@Override
- Promise<Filter, ResourceException> getLdapFilter(final Connection connection, final Resource resource,
+ Promise<Filter, ResourceException> getLdapFilter(final Context context, final Resource resource,
final JsonPointer path, final JsonPointer subPath,
final FilterType type, final String operator,
final Object valueAssertion) {
- return mapper.getLdapFilter(connection, resource, path, subPath, type, operator, valueAssertion)
+ return mapper.getLdapFilter(context, resource, path, subPath, type, operator, valueAssertion)
.thenAsync(new AsyncFunction<Filter, Filter, ResourceException>() {
@Override
public Promise<Filter, ResourceException> apply(final Filter result) {
@@ -146,7 +147,7 @@
final SearchRequest request = createSearchRequest(result);
final List<Filter> subFilters = new LinkedList<>();
- return connection.searchAsync(request, new SearchResultHandler() {
+ return connectionFrom(context).searchAsync(request, new SearchResultHandler() {
@Override
public boolean handleEntry(final SearchResultEntry entry) {
if (subFilters.size() < SEARCH_MAX_CANDIDATES) {
@@ -184,7 +185,7 @@
}
@Override
- Promise<Attribute, ResourceException> getNewLdapAttributes(final Connection connection, final Resource resource,
+ Promise<Attribute, ResourceException> getNewLdapAttributes(final Context context, final Resource resource,
final JsonPointer path, final List<Object> newValues) {
/*
* For each value use the subordinate mapper to obtain the LDAP primary
@@ -196,7 +197,7 @@
final PromiseImpl<Attribute, ResourceException> promise = PromiseImpl.create();
for (final Object value : newValues) {
- mapper.create(connection, resource, path, new JsonValue(value))
+ mapper.create(context, resource, path, new JsonValue(value))
.thenOnResult(new ResultHandler<List<Attribute>>() {
@Override
public void handleResult(List<Attribute> result) {
@@ -224,7 +225,7 @@
final ByteString primaryKeyValue = primaryKeyAttribute.firstValue();
final Filter filter = Filter.equality(primaryKey.toString(), primaryKeyValue);
final SearchRequest search = createSearchRequest(filter);
- connection.searchSingleEntryAsync(search)
+ connectionFrom(context).searchSingleEntryAsync(search)
.thenOnResult(new ResultHandler<SearchResultEntry>() {
@Override
public void handleResult(final SearchResultEntry result) {
@@ -276,7 +277,7 @@
@SuppressWarnings("fallthrough")
@Override
- Promise<JsonValue, ResourceException> read(final Connection connection, final Resource resource,
+ Promise<JsonValue, ResourceException> read(final Context context, final Resource resource,
final JsonPointer path, final Entry e) {
final Set<DN> dns = e.parseAttribute(ldapAttributeName).usingSchema(schema).asSetOfDN();
switch (dns.size()) {
@@ -285,7 +286,7 @@
case 1:
if (attributeIsSingleValued()) {
try {
- return readEntry(connection, resource, path, dns.iterator().next());
+ return readEntry(context, resource, path, dns.iterator().next());
} catch (final Exception ex) {
// The LDAP attribute could not be decoded.
return Promises.newExceptionPromise(asResourceException(ex));
@@ -296,7 +297,7 @@
try {
final List<Promise<JsonValue, ResourceException>> promises = new ArrayList<>(dns.size());
for (final DN dn : dns) {
- promises.add(readEntry(connection, resource, path, dn));
+ promises.add(readEntry(context, resource, path, dn));
}
return Promises.when(promises)
.then(new Function<List<JsonValue>, JsonValue, ResourceException>() {
@@ -330,7 +331,7 @@
}
private Promise<JsonValue, ResourceException> readEntry(
- final Connection connection, final Resource resource, final JsonPointer path, final DN dn) {
+ final Context context, final Resource resource, final JsonPointer path, final DN dn) {
final Set<String> requestedLDAPAttributes = new LinkedHashSet<>();
mapper.getLdapAttributes(path, new JsonPointer(), requestedLDAPAttributes);
@@ -338,12 +339,12 @@
final String[] attributes = requestedLDAPAttributes.toArray(new String[requestedLDAPAttributes.size()]);
final SearchRequest request = newSearchRequest(dn, SearchScope.BASE_OBJECT, searchFilter, attributes);
- return connection
+ return connectionFrom(context)
.searchSingleEntryAsync(request)
.thenAsync(new AsyncFunction<SearchResultEntry, JsonValue, ResourceException>() {
@Override
public Promise<JsonValue, ResourceException> apply(final SearchResultEntry result) {
- return mapper.read(connection, resource, path, result);
+ return mapper.read(context, resource, path, result);
}
}, new AsyncFunction<LdapException, JsonValue, ResourceException>() {
@Override
--
Gitblit v1.10.0