From d89aacc0431eab3dce367e8fe9575eb8f83aa535 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Fri, 08 Feb 2013 11:37:59 +0000
Subject: [PATCH] Checkpoint changes: clean up APIs, separate out MVCC and naming strategies.
---
opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/SimpleAttributeMapper.java | 96 ++++++++++++++++++-----------------------------
1 files changed, 37 insertions(+), 59 deletions(-)
diff --git a/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/SimpleAttributeMapper.java b/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/SimpleAttributeMapper.java
index 8d6a1c5..dabc613 100644
--- a/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/SimpleAttributeMapper.java
+++ b/opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/SimpleAttributeMapper.java
@@ -19,6 +19,7 @@
import static org.forgerock.opendj.rest2ldap.Utils.toFilter;
import static org.forgerock.opendj.rest2ldap.Utils.toLowerCase;
+import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -28,6 +29,7 @@
import org.forgerock.json.fluent.JsonValue;
import org.forgerock.json.resource.ResultHandler;
import org.forgerock.opendj.ldap.Attribute;
+import org.forgerock.opendj.ldap.AttributeDescription;
import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.Entry;
import org.forgerock.opendj.ldap.Filter;
@@ -38,38 +40,29 @@
* An attribute mapper which maps a single JSON attribute to a single LDAP
* attribute.
*/
-public class SimpleAttributeMapper implements AttributeMapper {
+public final class SimpleAttributeMapper extends AttributeMapper {
private Function<ByteString, ?, Void> decoder = null;
private Object defaultValue = null;
+ private Collection<Object> defaultValues = Collections.emptySet();
private boolean forceSingleValued = false;
// private boolean isReadOnly = false;
private final String jsonAttributeName;
- private final String ldapAttributeName;
+ private final AttributeDescription ldapAttributeName;
private final String normalizedJsonAttributeName;
/**
* Creates a new simple attribute mapper which maps a single LDAP attribute
* to an entry.
*
- * @param attributeName
- * The name of the simple JSON and LDAP attribute.
- */
- public SimpleAttributeMapper(final String attributeName) {
- this(attributeName, attributeName);
- }
-
- /**
- * Creates a new simple attribute mapper which maps a single LDAP attribute
- * to an entry.
- *
* @param jsonAttributeName
* The name of the simple JSON attribute.
* @param ldapAttributeName
* The name of the LDAP attribute.
*/
- public SimpleAttributeMapper(final String jsonAttributeName, final String ldapAttributeName) {
+ SimpleAttributeMapper(final String jsonAttributeName,
+ final AttributeDescription ldapAttributeName) {
this.jsonAttributeName = jsonAttributeName;
this.ldapAttributeName = ldapAttributeName;
this.normalizedJsonAttributeName = toLowerCase(jsonAttributeName);
@@ -98,36 +91,12 @@
*/
public SimpleAttributeMapper defaultJSONValue(final Object defaultValue) {
this.defaultValue = defaultValue;
+ this.defaultValues =
+ defaultValue != null ? Collections.singleton(defaultValue) : Collections.emptySet();
return this;
}
/**
- * {@inheritDoc}
- */
- @Override
- public void getLDAPAttributes(final Context c, final JsonPointer jsonAttribute,
- final Set<String> ldapAttributes) {
- if (jsonAttribute.isEmpty() || matches(jsonAttribute)) {
- ldapAttributes.add(ldapAttributeName);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void getLDAPFilter(final Context c, final FilterType type,
- final JsonPointer jsonAttribute, final String operator, final Object valueAssertion,
- final ResultHandler<Filter> h) {
- if (matches(jsonAttribute)) {
- h.handleResult(toFilter(c, type, ldapAttributeName, valueAssertion));
- } else {
- // This attribute mapper cannot handle the provided filter component.
- h.handleResult(null);
- }
- }
-
- /**
* Prevents the LDAP attribute from being updated.
*
* @param readOnly
@@ -154,32 +123,41 @@
return this;
}
- /**
- * {@inheritDoc}
- */
@Override
- public void toJSON(final Context c, final Entry e, final ResultHandler<Map<String, Object>> h) {
- final Attribute a = e.getAttribute(ldapAttributeName);
- if (a != null) {
- final Function<ByteString, ?, Void> f =
- decoder == null ? Functions.fixedFunction(byteStringToJson(), a) : decoder;
- final Object value;
- if (forceSingleValued || a.getAttributeDescription().getAttributeType().isSingleValue()) {
- value = a.parse().as(f, defaultValue);
- } else {
- value = a.parse().asSetOf(f, defaultValue);
- }
- h.handleResult(Collections.singletonMap(jsonAttributeName, value));
+ void getLDAPAttributes(final Context c, final JsonPointer jsonAttribute,
+ final Set<String> ldapAttributes) {
+ if (jsonAttribute.isEmpty() || matches(jsonAttribute)) {
+ ldapAttributes.add(ldapAttributeName.toString());
+ }
+ }
+
+ @Override
+ void getLDAPFilter(final Context c, final FilterType type, final JsonPointer jsonAttribute,
+ final String operator, final Object valueAssertion, final ResultHandler<Filter> h) {
+ if (matches(jsonAttribute)) {
+ h.handleResult(toFilter(c, type, ldapAttributeName.toString(), valueAssertion));
} else {
+ // This attribute mapper cannot handle the provided filter component.
h.handleResult(null);
}
}
- /**
- * {@inheritDoc}
- */
@Override
- public void toLDAP(final Context c, final JsonValue v, final ResultHandler<List<Attribute>> h) {
+ void toJSON(final Context c, final Entry e, final ResultHandler<Map<String, Object>> h) {
+ final Function<ByteString, ?, Void> f =
+ decoder == null ? Functions.fixedFunction(byteStringToJson(), ldapAttributeName)
+ : decoder;
+ final Object value;
+ if (forceSingleValued || ldapAttributeName.getAttributeType().isSingleValue()) {
+ value = e.parseAttribute(ldapAttributeName).as(f, defaultValue);
+ } else {
+ value = e.parseAttribute(ldapAttributeName).asSetOf(f, defaultValues);
+ }
+ h.handleResult(Collections.singletonMap(jsonAttributeName, value));
+ }
+
+ @Override
+ void toLDAP(final Context c, final JsonValue v, final ResultHandler<List<Attribute>> h) {
// TODO Auto-generated method stub
}
--
Gitblit v1.10.0