diff --git a/core/src/main/java/org/springframework/ldap/core/NameAwareAttribute.java b/core/src/main/java/org/springframework/ldap/core/NameAwareAttribute.java index eaf482d8..5d00c0ac 100644 --- a/core/src/main/java/org/springframework/ldap/core/NameAwareAttribute.java +++ b/core/src/main/java/org/springframework/ldap/core/NameAwareAttribute.java @@ -26,6 +26,7 @@ import javax.naming.NamingEnumeration; import javax.naming.NamingException; import javax.naming.directory.Attribute; import javax.naming.directory.DirContext; +import javax.naming.ldap.LdapName; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashSet; @@ -165,6 +166,8 @@ public final class NameAwareAttribute implements Attribute { throw new IllegalArgumentException("This instance has values that are not valid distinguished names; " + "cannot handle Name values", e); } + } else if (value instanceof LdapName) { + newValuesAsNames.put((LdapName) value, value.toString()); } else { throw new IllegalArgumentException("This instance has non-string attribute values; " + "cannot handle Name values"); diff --git a/core/src/test/java/org/springframework/ldap/core/DirContextAdapterTest.java b/core/src/test/java/org/springframework/ldap/core/DirContextAdapterTest.java index 13f5cd39..33896f72 100644 --- a/core/src/test/java/org/springframework/ldap/core/DirContextAdapterTest.java +++ b/core/src/test/java/org/springframework/ldap/core/DirContextAdapterTest.java @@ -367,6 +367,26 @@ public class DirContextAdapterTest { assertEquals("123", attribute.get()); } + @Test + public void testNewLdapNameWithString() throws NamingException { + tested.addAttributeValue("member", LdapUtils.newLdapName("CN=test,DC=root")); + tested.addAttributeValue("member2", LdapUtils.newLdapName("CN=test2,DC=root")); + + Attributes attrs = tested.getAttributes(); + assertEquals(LdapUtils.newLdapName("CN=test,DC=root"), attrs.get("member").get()); + assertEquals(LdapUtils.newLdapName("CN=test2,DC=root"), attrs.get("member2").get()); + } + + @Test + public void testNewLdapNameWithLdapName() throws NamingException { + tested.addAttributeValue("member", "CN=test,DC=root"); + tested.addAttributeValue("member2", LdapUtils.newLdapName("CN=test2,DC=root")); + + Attributes attrs = tested.getAttributes(); + assertEquals("CN=test,DC=root", attrs.get("member").get()); + assertEquals(LdapUtils.newLdapName("CN=test2,DC=root"), attrs.get("member2").get()); + } + @Test public void testRemoveAttributeValueAttributeDoesntExist() { // Perform test