ModifyAttributesOperationRecorder implements
        CompensatingTransactionOperationRecorder { protected ModificationItem getCompensatingModificationItem( Attributes originalAttributes, ModificationItem modificationItem) { Attribute modificationAttribute = modificationItem.getAttribute(); Attribute originalAttribute = originalAttributes .get(modificationAttribute.getID()); if (modificationItem.getModificationOp() == DirContext.REMOVE_ATTRIBUTE) { if (modificationAttribute.size() == 0) { return new ModificationItem(DirContext.ADD_ATTRIBUTE, (Attribute) originalAttribute.clone()); } else { return new ModificationItem(DirContext.ADD_ATTRIBUTE, (Attribute) modificationAttribute.clone()); } } else if (modificationItem.getModificationOp() == DirContext.REPLACE_ATTRIBUTE) { if (originalAttribute != null) { return new ModificationItem(DirContext.REPLACE_ATTRIBUTE, (Attribute) originalAttribute.clone()); } else { return new ModificationItem(DirContext.REMOVE_ATTRIBUTE, new BasicAttribute(modificationAttribute.getID())); } } else { if (originalAttribute == null) { return new ModificationItem(DirContext.REMOVE_ATTRIBUTE, new BasicAttribute(modificationAttribute.getID())); } else { return new ModificationItem(DirContext.REPLACE_ATTRIBUTE, (Attribute) originalAttribute.clone()); } } } ModifyAttributesOperationRecorder(LdapOperations ldapOperations); CompensatingTransactionOperationExecutor recordOperation(
            Object[] args);  }
@Test public void testGetCompensatingModificationItem_RemoveFullExistingAttribute() throws NamingException { BasicAttribute attribute = new BasicAttribute("someattr"); attribute.add("value1"); attribute.add("value2"); Attributes attributes = new BasicAttributes(); attributes.put(attribute); ModificationItem originalItem = new ModificationItem( DirContext.REMOVE_ATTRIBUTE, new BasicAttribute("someattr")); ModificationItem result = tested.getCompensatingModificationItem( attributes, originalItem); assertThat(result.getModificationOp()).isEqualTo(DirContext.ADD_ATTRIBUTE); Attribute resultAttribute = result.getAttribute(); assertThat(resultAttribute.getID()).isEqualTo("someattr"); Object object = resultAttribute.get(0); assertThat(object).isEqualTo("value1"); assertThat(resultAttribute.get(1)).isEqualTo("value2"); }
@Test public void testGetCompensatingModificationItem_RemoveTwoAttributeValues() throws NamingException { BasicAttribute attribute = new BasicAttribute("someattr"); attribute.add("value1"); attribute.add("value2"); attribute.add("value3"); Attributes attributes = new BasicAttributes(); attributes.put(attribute); BasicAttribute modificationAttribute = new BasicAttribute("someattr"); modificationAttribute.add("value1"); modificationAttribute.add("value2"); ModificationItem originalItem = new ModificationItem( DirContext.REMOVE_ATTRIBUTE, modificationAttribute); ModificationItem result = tested.getCompensatingModificationItem( attributes, originalItem); assertThat(result.getModificationOp()).isEqualTo(DirContext.ADD_ATTRIBUTE); Attribute resultAttribute = result.getAttribute(); assertThat(resultAttribute.getID()).isEqualTo("someattr"); Object object = resultAttribute.get(0); assertThat(object).isEqualTo("value1"); assertThat(resultAttribute.get(1)).isEqualTo("value2"); }
@Test public void testGetCompensatingModificationItem_ReplaceExistingAttribute() throws NamingException { BasicAttribute attribute = new BasicAttribute("someattr"); attribute.add("value1"); attribute.add("value2"); Attributes attributes = new BasicAttributes(); attributes.put(attribute); BasicAttribute modificationAttribute = new BasicAttribute("someattr"); modificationAttribute.add("newvalue1"); modificationAttribute.add("newvalue2"); ModificationItem originalItem = new ModificationItem( DirContext.REPLACE_ATTRIBUTE, new BasicAttribute("someattr")); ModificationItem result = tested.getCompensatingModificationItem( attributes, originalItem); assertThat(result.getModificationOp()).isEqualTo(DirContext.REPLACE_ATTRIBUTE); Attribute resultAttribute = result.getAttribute(); assertThat(resultAttribute.getID()).isEqualTo("someattr"); Object object = resultAttribute.get(0); assertThat(object).isEqualTo("value1"); assertThat(resultAttribute.get(1)).isEqualTo("value2"); }
@Test public void testGetCompensatingModificationItem_ReplaceNonExistingAttribute() throws NamingException { Attributes attributes = new BasicAttributes(); BasicAttribute modificationAttribute = new BasicAttribute("someattr"); modificationAttribute.add("newvalue1"); modificationAttribute.add("newvalue2"); ModificationItem originalItem = new ModificationItem( DirContext.REPLACE_ATTRIBUTE, modificationAttribute); ModificationItem result = tested.getCompensatingModificationItem( attributes, originalItem); assertThat(result.getModificationOp()).isEqualTo(DirContext.REMOVE_ATTRIBUTE); Attribute resultAttribute = result.getAttribute(); assertThat(resultAttribute.getID()).isEqualTo("someattr"); assertThat(resultAttribute.size()).isEqualTo(0); }
@Test public void testGetCompensatingModificationItem_AddNonExistingAttribute() throws NamingException { Attributes attributes = new BasicAttributes(); BasicAttribute modificationAttribute = new BasicAttribute("someattr"); modificationAttribute.add("newvalue1"); modificationAttribute.add("newvalue2"); ModificationItem originalItem = new ModificationItem( DirContext.ADD_ATTRIBUTE, modificationAttribute); ModificationItem result = tested.getCompensatingModificationItem( attributes, originalItem); assertThat(result.getModificationOp()).isEqualTo(DirContext.REMOVE_ATTRIBUTE); Attribute resultAttribute = result.getAttribute(); assertThat(resultAttribute.getID()).isEqualTo("someattr"); assertThat(resultAttribute.size()).isEqualTo(0); }
@Test public void testGetCompensatingModificationItem_AddExistingAttribute() throws NamingException { BasicAttribute attribute = new BasicAttribute("someattr"); attribute.add("value1"); attribute.add("value2"); Attributes attributes = new BasicAttributes(); attributes.put(attribute); BasicAttribute modificationAttribute = new BasicAttribute("someattr"); modificationAttribute.add("newvalue1"); modificationAttribute.add("newvalue2"); ModificationItem originalItem = new ModificationItem( DirContext.ADD_ATTRIBUTE, new BasicAttribute("someattr")); ModificationItem result = tested.getCompensatingModificationItem( attributes, originalItem); assertThat(result.getModificationOp()).isEqualTo(DirContext.REPLACE_ATTRIBUTE); Attribute resultAttribute = result.getAttribute(); assertThat(resultAttribute.getID()).isEqualTo("someattr"); assertThat(result.getAttribute().get(0)).isEqualTo("value1"); assertThat(result.getAttribute().get(1)).isEqualTo("value2"); }