DIRSTUDIO-1265: Clear entry from all caches when deleted
diff --git a/plugins/ldapbrowser.core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/BrowserConnection.java b/plugins/ldapbrowser.core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/BrowserConnection.java
index f1845d4..6717710 100644
--- a/plugins/ldapbrowser.core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/BrowserConnection.java
+++ b/plugins/ldapbrowser.core/src/main/java/org/apache/directory/studio/ldapbrowser/core/model/impl/BrowserConnection.java
@@ -608,6 +608,9 @@
protected synchronized void uncacheEntry( IEntry entry )
{
dnToEntryCache.remove( Utils.getNormalizedOidString( entry.getDn(), getSchema() ) );
+ setAttributeInfo( entry, null );
+ setChildrenInfo( entry, null );
+ setChildrenFilter(entry, null);
}
@@ -629,17 +632,6 @@
/**
- * Removes the entry from the cache.
- *
- * @param dn the Dn of the entry to remove from cache
- */
- protected synchronized void uncacheEntry( Dn dn )
- {
- dnToEntryCache.remove( Utils.getNormalizedOidString( dn, getSchema() ) );
- }
-
-
- /**
* Gets the children filter of the entry.
*
* @param entry the entry
diff --git a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/BrowserTest.java b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/BrowserTest.java
index d3298d9..3a6c9ad 100644
--- a/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/BrowserTest.java
+++ b/tests/test.integration.ui/src/main/java/org/apache/directory/studio/test/integration/ui/BrowserTest.java
@@ -810,7 +810,45 @@
assertTrue( browserViewBot.existsEntry( "DIT", "Root DSE", "ou=system", "ou=users (13)" ) );
assertTrue( browserViewBot.existsEntry( "DIT", "Root DSE", "ou=system", "ou=users", "uid=user.1" ) );
assertTrue( browserViewBot.existsEntry( "DIT", "Root DSE", "ou=system", "ou=users", "uid=user.8" ) );
+ }
+ @Test
+ public void testDeleteClearsEntryCache() throws Exception
+ {
+ browserViewBot.selectEntry( "DIT", "Root DSE", "ou=system", "ou=users" );
+ browserViewBot.expandEntry( "DIT", "Root DSE", "ou=system", "ou=users" );
+
+ browserViewBot.selectEntry( "DIT", "Root DSE", "ou=system", "ou=users", "uid=user.1" );
+ EntryEditorBot entryEditorBot = studioBot.getEntryEditorBot( "uid=user.1,ou=users,ou=system" );
+ List<String> attributeValues = entryEditorBot.getAttributeValues();
+ assertEquals( 23, attributeValues.size() );
+ assertTrue( attributeValues.contains( "uid: user.1" ) );
+ assertTrue( entryEditorBot.getAttributeValues().contains( "initials: AA" ) );
+
+ DeleteDialogBot deleteDialog = browserViewBot.openDeleteDialog();
+ deleteDialog.clickOkButton();
+ browserViewBot.selectEntry( "DIT", "Root DSE", "ou=system", "ou=users" );
+ assertFalse( browserViewBot.existsEntry( "DIT", "Root DSE", "ou=system", "ou=users", "uid=user.1" ) );
+
+ Entry entry = new DefaultEntry( service.getSchemaManager() );
+ entry.setDn( new Dn( "uid=user.1,ou=users,ou=system" ) );
+ entry.add( "objectClass", "top", "person", "organizationalPerson", "inetOrgPerson" );
+ entry.add( "uid", "user.1" );
+ entry.add( "givenName", "Foo" );
+ entry.add( "sn", "Bar" );
+ entry.add( "cn", "Foo Bar" );
+ entry.add( "initials", "FB" );
+ service.getAdminSession().add( entry );
+
+ browserViewBot.refresh();
+ assertTrue( browserViewBot.existsEntry( "DIT", "Root DSE", "ou=system", "ou=users", "uid=user.1" ) );
+
+ browserViewBot.selectEntry( "DIT", "Root DSE", "ou=system", "ou=users", "uid=user.1" );
+ entryEditorBot = studioBot.getEntryEditorBot( "uid=user.1,ou=users,ou=system" );
+ attributeValues = entryEditorBot.getAttributeValues();
+ assertEquals( 9, attributeValues.size() );
+ assertTrue( attributeValues.contains( "uid: user.1" ) );
+ assertTrue( entryEditorBot.getAttributeValues().contains( "initials: FB" ) );
}
}