Skip to content

Commit 6c289ff

Browse files
author
Niall Pemberton
committed
IO-132 Always do the compare on files names, but provide case-sensitivity options (allowing any comparator is going to result in someone shooting themselves in the foot)
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/io/trunk@1005682 13f79535-47bb-0310-9956-ffa450edef68
1 parent f11021d commit 6c289ff

1 file changed

Lines changed: 15 additions & 12 deletions

File tree

src/main/java/org/apache/commons/io/monitor/FilesystemObserver.java

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import java.util.List;
2525
import java.util.concurrent.CopyOnWriteArrayList;
2626

27+
import org.apache.commons.io.IOCase;
2728
import org.apache.commons.io.comparator.NameFileComparator;
2829

2930
/**
@@ -169,10 +170,10 @@ public FilesystemObserver(String directoryName, FileFilter fileFilter) {
169170
*
170171
* @param directoryName the name of the directory to observe
171172
* @param fileFilter The file filter or null if none
172-
* @param comparator The comparator to use when comparing file names, may be null
173+
* @param caseSensitivity what case sensitivity to use comparing file names, null means system sensitive
173174
*/
174-
public FilesystemObserver(String directoryName, FileFilter fileFilter, Comparator<File> comparator) {
175-
this(new File(directoryName), fileFilter, comparator);
175+
public FilesystemObserver(String directoryName, FileFilter fileFilter, IOCase caseSensitivity) {
176+
this(new File(directoryName), fileFilter, caseSensitivity);
176177
}
177178

178179
/**
@@ -191,7 +192,7 @@ public FilesystemObserver(File directory) {
191192
* @param fileFilter The file filter or null if none
192193
*/
193194
public FilesystemObserver(File directory, FileFilter fileFilter) {
194-
this(directory, fileFilter, (Comparator<File>)null);
195+
this(directory, fileFilter, (IOCase)null);
195196
}
196197

197198
/**
@@ -200,10 +201,10 @@ public FilesystemObserver(File directory, FileFilter fileFilter) {
200201
*
201202
* @param directory the directory to observe
202203
* @param fileFilter The file filter or null if none
203-
* @param comparator The comparator to use when comparing file names, may be null
204+
* @param caseSensitivity what case sensitivity to use comparing file names, null means system sensitive
204205
*/
205-
public FilesystemObserver(File directory, FileFilter fileFilter, Comparator<File> comparator) {
206-
this(new FilesystemEntry(directory), fileFilter, comparator);
206+
public FilesystemObserver(File directory, FileFilter fileFilter, IOCase caseSensitivity) {
207+
this(new FilesystemEntry(directory), fileFilter, caseSensitivity);
207208
}
208209

209210
/**
@@ -212,9 +213,9 @@ public FilesystemObserver(File directory, FileFilter fileFilter, Comparator<File
212213
*
213214
* @param rootEntry the root directory to observe
214215
* @param fileFilter The file filter or null if none
215-
* @param comparator The comparator to use when comparing file names, may be null
216+
* @param caseSensitivity what case sensitivity to use comparing file names, null means system sensitive
216217
*/
217-
protected FilesystemObserver(FilesystemEntry rootEntry, FileFilter fileFilter, Comparator<File> comparator) {
218+
protected FilesystemObserver(FilesystemEntry rootEntry, FileFilter fileFilter, IOCase caseSensitivity) {
218219
if (rootEntry == null) {
219220
throw new IllegalArgumentException("Root entry is missing");
220221
}
@@ -223,10 +224,12 @@ protected FilesystemObserver(FilesystemEntry rootEntry, FileFilter fileFilter, C
223224
}
224225
this.rootEntry = rootEntry;
225226
this.fileFilter = fileFilter;
226-
if (comparator == null) {
227-
this.comparator = NameFileComparator.NAME_COMPARATOR;
227+
if (caseSensitivity == null || caseSensitivity.equals(IOCase.SYSTEM)) {
228+
this.comparator = NameFileComparator.NAME_SYSTEM_COMPARATOR;
229+
} else if (caseSensitivity.equals(IOCase.INSENSITIVE)) {
230+
this.comparator = NameFileComparator.NAME_INSENSITIVE_COMPARATOR;
228231
} else {
229-
this.comparator = comparator;
232+
this.comparator = NameFileComparator.NAME_COMPARATOR;
230233
}
231234
}
232235

0 commit comments

Comments
 (0)