diff options
author | Michael Valenta | 2006-08-15 17:03:08 +0000 |
---|---|---|
committer | Michael Valenta | 2006-08-15 17:03:08 +0000 |
commit | c09f343742d1fd8f7136a636498ed3b65fc41ad8 (patch) | |
tree | 5899c2c39cfd9e5a4315f9cb00f18c4143fdd0ab /bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources | |
parent | b36b4a87880126313dad036f81dc70c4bc41ebd4 (diff) | |
download | eclipse.platform.team-c09f343742d1fd8f7136a636498ed3b65fc41ad8.tar.gz eclipse.platform.team-c09f343742d1fd8f7136a636498ed3b65fc41ad8.tar.xz eclipse.platform.team-c09f343742d1fd8f7136a636498ed3b65fc41ad8.zip |
Bug 148990 [Subscriber] Failure to update files that are removed from server using rm
Diffstat (limited to 'bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources')
-rw-r--r-- | bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/UpdateContentCachingService.java | 40 |
1 files changed, 35 insertions, 5 deletions
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/UpdateContentCachingService.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/UpdateContentCachingService.java index c62d28e7a..aedc28300 100644 --- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/UpdateContentCachingService.java +++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/UpdateContentCachingService.java @@ -10,8 +10,7 @@ *******************************************************************************/ package org.eclipse.team.internal.ccvs.core.resources; -import java.util.ArrayList; -import java.util.Date; +import java.util.*; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; @@ -23,7 +22,7 @@ import org.eclipse.team.core.TeamException; import org.eclipse.team.internal.ccvs.core.*; import org.eclipse.team.internal.ccvs.core.client.*; import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption; -import org.eclipse.team.internal.ccvs.core.client.listeners.ICommandOutputListener; +import org.eclipse.team.internal.ccvs.core.client.listeners.*; import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation; import org.eclipse.team.internal.ccvs.core.connection.CVSServerException; import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo; @@ -32,13 +31,14 @@ import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo; /** * This class can be used to fetch and cache file contents for remote files. */ -public class UpdateContentCachingService { +public class UpdateContentCachingService implements IUpdateMessageListener { private CVSRepositoryLocation repository; private ICVSFolder remoteRoot; private final CVSTag tag; private final int depth; private boolean fetchAbsentDirectories = true; + private ArrayList removed = new ArrayList(); public class SandboxUpdate extends Update { @@ -228,7 +228,7 @@ public class UpdateContentCachingService { Command.NO_GLOBAL_OPTIONS, getLocalOptions(), new String[] { Session.CURRENT_LOCAL_FOLDER }, - null, + new UpdateListener(this), Policy.subMonitorFor(monitor, 90)); if (!status.isOK()) { if (status.getCode() == CVSStatus.SERVER_ERROR) { @@ -240,6 +240,11 @@ public class UpdateContentCachingService { throw new CVSException(status); } } + for (Iterator iterator = removed.iterator(); iterator.hasNext();) { + ICVSResource resource = (ICVSResource) iterator.next(); + if (resource.exists()) + resource.delete(); + } } finally { session.close(); monitor.done(); @@ -270,4 +275,29 @@ public class UpdateContentCachingService { return Command.NO_LOCAL_OPTIONS; } + + public void directoryDoesNotExist(ICVSFolder commandRoot, String path) { + try { + removed.add(commandRoot.getChild(path)); + } catch (CVSException e) { + CVSProviderPlugin.log(e); + } + } + + public void directoryInformation(ICVSFolder commandRoot, String path, + boolean newDirectory) { + // Nothing to do + } + + public void fileDoesNotExist(ICVSFolder parent, String filename) { + try { + removed.add(parent.getChild(filename)); + } catch (CVSException e) { + CVSProviderPlugin.log(e); + } + } + + public void fileInformation(int type, ICVSFolder parent, String filename) { + // Nothing to do + } } |