Fix for LDAP-15: DirContextAdapter.setAttribute()

This commit is contained in:
Mattias Arthursson
2007-01-10 18:37:09 +00:00
parent ffa9af7d27
commit e4c9a36eaf
2 changed files with 34 additions and 1 deletions

View File

@@ -710,7 +710,11 @@ public class DirContextAdapter implements DirContextOperations {
* the attribute to set.
*/
public void setAttribute(Attribute attribute) {
attrs.put(attribute);
if (!updateMode) {
attrs.put(attribute);
} else {
updatedAttrs.put(attribute);
}
}
/**

View File

@@ -17,6 +17,7 @@
package org.springframework.ldap.support;
import javax.naming.Name;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.BasicAttribute;
@@ -653,6 +654,34 @@ public class DirContextAdapterTest extends TestCase {
assertEquals("new", classUnderTest.getStringAttribute("zzz"));
}
/**
* Test for LDAP-15: DirContextAdapter.setAttribute(). Verifies that setting
* an Attribute should modify updatedAttrs if in update mode.
*
* @throws NamingException
*/
public void testSetAttribute_UpdateMode() throws NamingException {
// Set original attribute value
Attribute attribute = new BasicAttribute("cn", "john doe");
classUnderTest.setAttribute(attribute);
// Set to update mode
classUnderTest.setUpdateMode(true);
// Perform test - update the attribute
Attribute updatedAttribute = new BasicAttribute("cn", "nisse hult");
classUnderTest.setAttribute(updatedAttribute);
// Verify result
ModificationItem[] mods = classUnderTest.getModificationItems();
assertEquals(1, mods.length);
assertEquals(DirContext.REPLACE_ATTRIBUTE, mods[0].getModificationOp());
Attribute modificationAttribute = mods[0].getAttribute();
assertEquals("cn", modificationAttribute.getID());
assertEquals("nisse hult", modificationAttribute.get());
}
private ModificationItem getModificationItem(ModificationItem[] mods,
int operation) {
for (int i = 0; i < mods.length; i++) {