From 5d8774080700c97c4f290818e4b5aa42a209740b Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Wed, 23 May 2012 16:39:10 +0000
Subject: [PATCH] Add support for complex and simple JSON attribute mappings.
---
opendj3/opendj-rest2ldap/src/main/java/org/forgerock/opendj/rest2ldap/SimpleAttributeMapper.java | 111 ++++++++++++++++++++++++++-----------------------------
1 files changed, 53 insertions(+), 58 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 43bdf36..3d3b5bf 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
@@ -16,10 +16,10 @@
package org.forgerock.opendj.rest2ldap;
-import static org.forgerock.opendj.rest2ldap.Utils.getAttributeName;
+import static org.forgerock.opendj.rest2ldap.Utils.attributeToJson;
import static org.forgerock.opendj.rest2ldap.Utils.toLowerCase;
-import java.util.LinkedHashMap;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -33,78 +33,73 @@
/**
*
*/
-public final class SimpleAttributeMapper implements AttributeMapper {
+public class SimpleAttributeMapper implements AttributeMapper {
- // All user attributes by default.
- private final Map<String, String> includedAttributes = new LinkedHashMap<String, String>();
- private final Map<String, String> excludedAttributes = new LinkedHashMap<String, String>();
+ private final String ldapAttributeName;
+ private final String jsonAttributeName;
+ private final String normalizedJsonAttributeName;
- public SimpleAttributeMapper() {
- // No implementation required.
+ /**
+ * 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(String attributeName) {
+ this(attributeName, attributeName);
}
- public SimpleAttributeMapper includeAttribute(String... attributes) {
- for (String attribute : attributes) {
- includedAttributes.put(toLowerCase(attribute), attribute);
- }
- return this;
+ /**
+ * 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(String jsonAttributeName, String ldapAttributeName) {
+ this.jsonAttributeName = jsonAttributeName;
+ this.normalizedJsonAttributeName = toLowerCase(jsonAttributeName);
+ this.ldapAttributeName = ldapAttributeName;
}
- public SimpleAttributeMapper excludeAttribute(String... attributes) {
- for (String attribute : attributes) {
- excludedAttributes.put(toLowerCase(attribute), attribute);
- }
- return this;
- }
-
+ /**
+ * {@inheritDoc}
+ */
public void getLDAPAttributes(Set<String> ldapAttributes) {
- if (!includedAttributes.isEmpty()) {
- ldapAttributes.addAll(includedAttributes.values());
- } else {
- // All user attributes.
- ldapAttributes.add("*");
- }
+ ldapAttributes.add(ldapAttributeName);
}
+ /**
+ * {@inheritDoc}
+ */
public void getLDAPAttributes(Set<String> ldapAttributes, JsonPointer resourceAttribute) {
- String name = resourceAttribute.leaf();
- if (name != null) {
- if (isIncludedAttribute(name)) {
- ldapAttributes.add(name);
- } else {
- // FIXME: log something or return a ResourceException?
- }
+ if (toLowerCase(resourceAttribute.leaf()).equals(normalizedJsonAttributeName)) {
+ ldapAttributes.add(ldapAttributeName);
}
}
- public void toJson(Context c, Entry e, AttributeMapperCompletionHandler<Map<String, Object>> h) {
- Map<String, Object> result = new LinkedHashMap<String, Object>(e.getAttributeCount());
- for (Attribute a : e.getAllAttributes()) {
- String name = getAttributeName(a);
- if (isIncludedAttribute(name)) {
- result.put(name, Utils.attributeToJson(a));
- }
+ /**
+ * {@inheritDoc}
+ */
+ public void toJson(Context c, Entry e,
+ final AttributeMapperCompletionHandler<Map<String, Object>> h) {
+ Attribute a = e.getAttribute(ldapAttributeName);
+ if (a != null) {
+ Map<String, Object> result =
+ Collections.singletonMap(jsonAttributeName, attributeToJson(a));
+ h.onSuccess(result);
}
- h.onSuccess(result);
}
- private boolean isIncludedAttribute(String name) {
- String lowerName = toLowerCase(name);
-
- // Ignore the requested attribute if it has been excluded.
- if (excludedAttributes.containsKey(lowerName)) {
- return false;
- }
-
- // Include all attributes by default.
- if (includedAttributes.isEmpty() || includedAttributes.containsKey(lowerName)) {
- return true;
- }
-
- return false;
- }
-
+ /**
+ * {@inheritDoc}
+ */
public void toLDAP(Context c, JsonValue v, AttributeMapperCompletionHandler<List<Attribute>> h) {
- // TODO:
+ // TODO Auto-generated method stub
+
}
+
}
--
Gitblit v1.10.0