diff --git a/rse/plugins/org.eclipse.rse.services.dstore/miners/org/eclipse/rse/dstore/universal/miners/filesystem/UniversalSearchHandler.java b/rse/plugins/org.eclipse.rse.services.dstore/miners/org/eclipse/rse/dstore/universal/miners/filesystem/UniversalSearchHandler.java index cb6ef126d42..e372dd17323 100644 --- a/rse/plugins/org.eclipse.rse.services.dstore/miners/org/eclipse/rse/dstore/universal/miners/filesystem/UniversalSearchHandler.java +++ b/rse/plugins/org.eclipse.rse.services.dstore/miners/org/eclipse/rse/dstore/universal/miners/filesystem/UniversalSearchHandler.java @@ -145,8 +145,17 @@ public class UniversalSearchHandler extends Thread implements ICancellableHandle _isCancelled = true; } - protected boolean hasSearchedDirectory(File file) { - return _alreadySearched.contains(file); + protected boolean hasSearchedDirectory(File file) + { + try + { + return _alreadySearched.contains(file.getCanonicalFile()); + } + catch (IOException e) + { + _dataStore.trace(e); + return _alreadySearched.contains(file); + } } protected void internalSearch(File theFile, int depth) { @@ -256,7 +265,15 @@ public class UniversalSearchHandler extends Thread implements ICancellableHandle if (!hasSearchedDirectory(theFile)) { - _alreadySearched.add(theFile); + try + { + _alreadySearched.add(theFile.getCanonicalFile()); + } + catch (IOException e) + { + _dataStore.trace(e); + _alreadySearched.add(theFile); + } File[] children = null; diff --git a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/search/LocalSearchHandler.java b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/search/LocalSearchHandler.java index 24e8203f380..b56f9cb8f6a 100644 --- a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/search/LocalSearchHandler.java +++ b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/search/LocalSearchHandler.java @@ -174,7 +174,14 @@ public class LocalSearchHandler implements ISearchHandler private boolean hasSearchedDirectory(File file) { - return _alreadySearched.contains(file); + try + { + return _alreadySearched.contains(file.getCanonicalFile()); + } + catch (IOException e) + { + return _alreadySearched.contains(file); + } } private boolean internalSearch(File theFile, int depth, IHostFile context) @@ -306,7 +313,14 @@ public class LocalSearchHandler implements ISearchHandler if (!hasSearchedDirectory(theFile)) { - _alreadySearched.add(theFile); + try + { + _alreadySearched.add(theFile.getCanonicalFile()); + } + catch (IOException e) + { + _alreadySearched.add(theFile); + } File[] children = null; diff --git a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFileSubSystem.java b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFileSubSystem.java index 50d56027890..a9a69aaee88 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFileSubSystem.java +++ b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFileSubSystem.java @@ -979,7 +979,8 @@ public abstract class RemoteFileSubSystem extends SubSystem implements IRemoteFi for (int i = 0; i < folderOrFileNames.size(); i++) { String path = (String)folderOrFileNames.get(i); - results.addResource(getRemoteFileObject(path)); + IRemoteFile nextFile = getRemoteFileObject(path); + if (nextFile != null) results.addResource(nextFile); } return results; }