From c369e9fbfae06fa83719e1d6305a160757271573 Mon Sep 17 00:00:00 2001 From: David McKnight Date: Fri, 27 Apr 2007 18:28:39 +0000 Subject: [PATCH] [181553] need to make cached files stale when doing the discard check Also, for dstore need to make sure we invalidate the file type if the file no longer exists since a valid file type will indicate that the file exists --- .../UniversalFileTransferUtility.java | 21 ++++++++++++++----- .../miners/UniversalFileSystemMiner.java | 4 +++- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/resources/UniversalFileTransferUtility.java b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/resources/UniversalFileTransferUtility.java index 5bb4ccd13ab..f05f6262f07 100644 --- a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/resources/UniversalFileTransferUtility.java +++ b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/resources/UniversalFileTransferUtility.java @@ -69,6 +69,7 @@ import org.eclipse.rse.subsystems.files.core.servicesubsystem.FileServiceSubSyst import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile; import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem; import org.eclipse.rse.subsystems.files.core.subsystems.IVirtualRemoteFile; +import org.eclipse.rse.subsystems.files.core.subsystems.RemoteFileSubSystem; import org.eclipse.rse.subsystems.files.core.util.ValidatorFileUniqueName; import org.eclipse.rse.ui.ISystemMessages; import org.eclipse.rse.ui.RSEUIPlugin; @@ -446,7 +447,7 @@ public class UniversalFileTransferUtility try { IResource[] members = folder.members(); - for (int i = 0; i < members.length; i++) + for (int i = members.length -1; i >= 0; i--) { IResource member = members[i]; if (member instanceof IFile) @@ -454,13 +455,23 @@ public class UniversalFileTransferUtility // is this a valid replica? SystemIFileProperties properties = new SystemIFileProperties(member); String path = properties.getRemoteFilePath(); - if (path != null) - { - IRemoteFile remoteFile = ss.getRemoteFileObject(path, new NullProgressMonitor()); + if (path != null) + { + IRemoteFile remoteFile = null; + if (ss instanceof RemoteFileSubSystem) + { + // mark any cached remote file stale so we know for sure + remoteFile = ((RemoteFileSubSystem)ss).getCachedRemoteFile(path); + if (remoteFile != null) + { + remoteFile.markStale(true); + } + } + remoteFile = ss.getRemoteFileObject(path, new NullProgressMonitor()); if (remoteFile != null && !remoteFile.exists()) { // this must be old so we should delete this - member.delete(false, new NullProgressMonitor()); + member.delete(true, new NullProgressMonitor()); } } } diff --git a/rse/plugins/org.eclipse.rse.services.dstore/miners/org/eclipse/rse/dstore/universal/miners/UniversalFileSystemMiner.java b/rse/plugins/org.eclipse.rse.services.dstore/miners/org/eclipse/rse/dstore/universal/miners/UniversalFileSystemMiner.java index a9eee96aa55..3800508ae96 100644 --- a/rse/plugins/org.eclipse.rse.services.dstore/miners/org/eclipse/rse/dstore/universal/miners/UniversalFileSystemMiner.java +++ b/rse/plugins/org.eclipse.rse.services.dstore/miners/org/eclipse/rse/dstore/universal/miners/UniversalFileSystemMiner.java @@ -1503,7 +1503,7 @@ private DataElement createDataElementFromLSString(DataElement subject, { String name = subject.getName(); String path = subject.getValue(); - fileobj = new File(path, name); + fileobj = new File(path, name); } else if (queryType.equals(IUniversalDataStoreConstants.UNIVERSAL_FOLDER_DESCRIPTOR)) { @@ -1632,6 +1632,8 @@ private DataElement createDataElementFromLSString(DataElement subject, e.printStackTrace(); } } else { + // change the file type + subject.setAttribute(DE.A_TYPE, IUniversalDataStoreConstants.UNIVERSAL_FILTER_DESCRIPTOR); subject.setAttribute(DE.A_SOURCE, setProperties(fileobj)); status.setAttribute(DE.A_SOURCE, IServiceConstants.FAILED_WITH_DOES_NOT_EXIST); }