Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/apache/directory-studio.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Seelmann <mail@stefan-seelmann.de>2021-05-19 08:13:49 +0300
committerStefan Seelmann <mail@stefan-seelmann.de>2021-05-19 08:13:49 +0300
commitbb684b4ba0ac8ef775eb91ecfa053c7ed58139cd (patch)
tree8d360fcd0a60a2d2fef4da9912aeb0002ad6675f
parent13b8a239a7beea5f923dc93cf6380b32ea4c7de2 (diff)
DIRSTUDIO-1273, DIRSTUDIO-1276: Fix file delete issue on Windows
-rw-r--r--plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/ILdapLogger.java25
-rw-r--r--plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/LdifModificationLogger.java6
-rw-r--r--plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/LdifSearchLogger.java6
-rw-r--r--plugins/ldapbrowser.ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/views/modificationlogs/ModificationLogsViewUniversalListener.java25
-rw-r--r--plugins/ldapbrowser.ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/views/searchlogs/SearchLogsViewUniversalListener.java25
5 files changed, 41 insertions, 46 deletions
diff --git a/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/ILdapLogger.java b/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/ILdapLogger.java
index 8d561864e..9e3dfeef4 100644
--- a/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/ILdapLogger.java
+++ b/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/ILdapLogger.java
@@ -20,6 +20,7 @@
package org.apache.directory.studio.connection.core;
+import java.io.File;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
@@ -236,4 +237,28 @@ public interface ILdapLogger
return maskedAttributes;
}
+
+ /**
+ * Deletes a file. Retries up to 5 times to work around Windows file delete issues.
+ */
+ default void deleteFileWithRetry( File file )
+ {
+ for ( int i = 0; i < 6; i++ )
+ {
+ if ( file != null && file.exists() )
+ {
+ if ( file.delete() )
+ {
+ break;
+ }
+ try
+ {
+ Thread.sleep( 500L );
+ }
+ catch ( InterruptedException e )
+ {
+ }
+ }
+ }
+ }
}
diff --git a/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/LdifModificationLogger.java b/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/LdifModificationLogger.java
index c0c6c706e..8144b6249 100644
--- a/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/LdifModificationLogger.java
+++ b/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/LdifModificationLogger.java
@@ -194,6 +194,12 @@ public class LdifModificationLogger implements ILdapLogger
handler.close();
}
+ File[] files = getLogFiles( connection );
+ for ( File file : files )
+ {
+ deleteFileWithRetry( file );
+ }
+
loggers.remove( id );
}
}
diff --git a/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/LdifSearchLogger.java b/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/LdifSearchLogger.java
index f20e04895..2e04f9e92 100644
--- a/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/LdifSearchLogger.java
+++ b/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/LdifSearchLogger.java
@@ -189,6 +189,12 @@ public class LdifSearchLogger implements ILdapLogger
handler.close();
}
+ File[] files = getLogFiles( connection );
+ for ( File file : files )
+ {
+ deleteFileWithRetry( file );
+ }
+
loggers.remove( id );
}
}
diff --git a/plugins/ldapbrowser.ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/views/modificationlogs/ModificationLogsViewUniversalListener.java b/plugins/ldapbrowser.ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/views/modificationlogs/ModificationLogsViewUniversalListener.java
index 3fb1341e3..48661577e 100644
--- a/plugins/ldapbrowser.ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/views/modificationlogs/ModificationLogsViewUniversalListener.java
+++ b/plugins/ldapbrowser.ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/views/modificationlogs/ModificationLogsViewUniversalListener.java
@@ -23,7 +23,6 @@ package org.apache.directory.studio.ldapbrowser.ui.views.modificationlogs;
import java.io.File;
import java.io.FileReader;
-import java.io.FileWriter;
import org.apache.directory.studio.connection.core.Connection;
import org.apache.directory.studio.connection.core.ConnectionCorePlugin;
@@ -153,9 +152,8 @@ public class ModificationLogsViewUniversalListener implements EntryUpdateListene
int i = input.getIndex();
if ( 0 <= i && i < files.length && files[i] != null && files[i].exists() && files[i].canRead() )
{
- try
+ try ( FileReader fr = new FileReader( files[i] ) )
{
- FileReader fr = new FileReader( files[i] );
char[] cbuf = new char[4096];
for ( int length = fr.read( cbuf ); length > 0; length = fr.read( cbuf ) )
{
@@ -227,29 +225,10 @@ public class ModificationLogsViewUniversalListener implements EntryUpdateListene
{
if ( input.getBrowserConnection().getConnection() != null )
{
- StringBuffer sb = new StringBuffer( "" ); //$NON-NLS-1$
- FileWriter fw = null;
LdifModificationLogger modificationLogger = ConnectionCorePlugin.getDefault().getLdifModificationLogger();
- File[] files = modificationLogger.getFiles( input.getBrowserConnection().getConnection() );
modificationLogger.dispose( input.getBrowserConnection().getConnection() );
- for ( int i = 0; i < files.length; i++ )
- {
- try
- {
- if ( files[i] != null && files[i].exists() && !files[i].delete() )
- {
- fw = new FileWriter( files[i] );
- fw.write( "" ); //$NON-NLS-1$
- }
-
- }
- catch ( Exception e )
- {
- sb.append( e.getMessage() );
- }
- }
view.getMainWidget().getSourceViewer().setTopIndex( 0 );
- view.getMainWidget().getSourceViewer().getDocument().set( sb.toString() );
+ view.getMainWidget().getSourceViewer().getDocument().set( "" );
}
}
diff --git a/plugins/ldapbrowser.ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/views/searchlogs/SearchLogsViewUniversalListener.java b/plugins/ldapbrowser.ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/views/searchlogs/SearchLogsViewUniversalListener.java
index cd7c17791..45e334a44 100644
--- a/plugins/ldapbrowser.ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/views/searchlogs/SearchLogsViewUniversalListener.java
+++ b/plugins/ldapbrowser.ui/src/main/java/org/apache/directory/studio/ldapbrowser/ui/views/searchlogs/SearchLogsViewUniversalListener.java
@@ -23,7 +23,6 @@ package org.apache.directory.studio.ldapbrowser.ui.views.searchlogs;
import java.io.File;
import java.io.FileReader;
-import java.io.FileWriter;
import org.apache.directory.studio.connection.core.Connection;
import org.apache.directory.studio.connection.core.ConnectionCorePlugin;
@@ -165,9 +164,8 @@ public class SearchLogsViewUniversalListener implements BrowserConnectionUpdateL
int i = input.getIndex();
if ( 0 <= i && i < files.length && files[i] != null && files[i].exists() && files[i].canRead() )
{
- try
+ try ( FileReader fr = new FileReader( files[i] ) )
{
- FileReader fr = new FileReader( files[i] );
char[] cbuf = new char[4096];
for ( int length = fr.read( cbuf ); length > 0; length = fr.read( cbuf ) )
{
@@ -280,29 +278,10 @@ public class SearchLogsViewUniversalListener implements BrowserConnectionUpdateL
{
if ( input.getBrowserConnection().getConnection() != null )
{
- StringBuffer sb = new StringBuffer( "" ); //$NON-NLS-1$
- FileWriter fw = null;
LdifSearchLogger searchLogger = ConnectionCorePlugin.getDefault().getLdifSearchLogger();
- File[] files = searchLogger.getFiles( input.getBrowserConnection().getConnection() );
searchLogger.dispose( input.getBrowserConnection().getConnection() );
- for ( int i = 0; i < files.length; i++ )
- {
- try
- {
- if ( files[i] != null && files[i].exists() && !files[i].delete() )
- {
- fw = new FileWriter( files[i] );
- fw.write( "" ); //$NON-NLS-1$
- }
-
- }
- catch ( Exception e )
- {
- sb.append( e.getMessage() );
- }
- }
view.getMainWidget().getSourceViewer().setTopIndex( 0 );
- view.getMainWidget().getSourceViewer().getDocument().set( sb.toString() );
+ view.getMainWidget().getSourceViewer().getDocument().set( "" );
}
}