From ac7b89261c27a9653d7751aa055b3638bbb315bd Mon Sep 17 00:00:00 2001 From: Rob Winch Date: Mon, 27 Apr 2015 10:28:47 -0500 Subject: [PATCH] LDAP-304: Check for modify null attribute --- .../springframework/ldap/core/DirContextAdapter.java | 2 +- .../ldap/core/DirContextAdapterTest.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/springframework/ldap/core/DirContextAdapter.java b/core/src/main/java/org/springframework/ldap/core/DirContextAdapter.java index 0c70c4bb..9ce525b7 100644 --- a/core/src/main/java/org/springframework/ldap/core/DirContextAdapter.java +++ b/core/src/main/java/org/springframework/ldap/core/DirContextAdapter.java @@ -333,7 +333,7 @@ public class DirContextAdapter implements DirContextOperations { private void collectModifications(NameAwareAttribute changedAttr, List modificationList) throws NamingException { NameAwareAttribute currentAttribute = originalAttrs.get(changedAttr.getID()); - if(changedAttr.hasValuesAsNames()) { + if(currentAttribute != null && changedAttr.hasValuesAsNames()) { try { currentAttribute.initValuesAsNames(); } catch(IllegalArgumentException e) { 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 7a88ce26..13f5cd39 100644 --- a/core/src/test/java/org/springframework/ldap/core/DirContextAdapterTest.java +++ b/core/src/test/java/org/springframework/ldap/core/DirContextAdapterTest.java @@ -571,6 +571,18 @@ public class DirContextAdapterTest { assertEquals("123", (String) attr.get()); } + // LDAP-304 + @Test + public void testModifyNull() throws Exception { + tested.setAttributeValue("memberDN", null); + tested.setUpdateMode(true); + assertTrue(tested.isUpdateMode()); + tested.setAttributeValue("memberDN", new LdapName("ou=test")); + + ModificationItem[] mods = tested.getModificationItems(); + assertEquals(1, mods.length); + } + @Test public void testGetDn() throws Exception { DirContextAdapter tested = new DirContextAdapter(DUMMY_NAME);