Bug 150483 [Sync Info] Locally deleted file not shown in team synchronization
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer.java
index 034a9cb..dcf9299 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer.java
@@ -452,7 +452,9 @@
endOperation();
}
try {
- return folder.members(true);
+
+ return synchronizerCache.members(folder);
+
} catch (CoreException e) {
throw CVSException.wrapException(e);
}
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/SynchronizerSyncInfoCache.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/SynchronizerSyncInfoCache.java
index 62b3927..c1e96cd 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/SynchronizerSyncInfoCache.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/SynchronizerSyncInfoCache.java
@@ -10,9 +10,7 @@
*******************************************************************************/
package org.eclipse.team.internal.ccvs.core.resources;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
+import java.util.*;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFolder;
@@ -327,4 +325,24 @@
public boolean isPhantom(IResource resource) {
return resource.isPhantom() || pendingCacheWrites.containsKey(resource);
}
+ public IResource[] members(IContainer folder) throws CoreException {
+ if (!pendingCacheWrites.isEmpty()){
+ HashSet cachedResources = new HashSet();
+ for (Iterator iter = pendingCacheWrites.keySet().iterator(); iter.hasNext();) {
+ IResource resource = (IResource) iter.next();
+ if (resource.getParent().equals(folder))
+ cachedResources.add(resource);
+ }
+
+ if (cachedResources.size() != 0){
+ IResource[] resources = folder.members(true);
+ IResource[] cachedResourcesArray = (IResource[]) cachedResources.toArray(new IResource[cachedResources.size()]);
+ IResource[]finalResources = new IResource[resources.length + cachedResourcesArray.length];
+ System.arraycopy(resources, 0, finalResources, 0, resources.length);
+ System.arraycopy(cachedResourcesArray, 0, finalResources, resources.length, cachedResourcesArray.length);
+ return finalResources;
+ }
+ }
+ return folder.members(true);
+ }
}
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/CVSResourceVariantTree.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/CVSResourceVariantTree.java
index d6250ed..8936e04 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/CVSResourceVariantTree.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/CVSResourceVariantTree.java
@@ -99,7 +99,7 @@
Set members = new HashSet();
members.addAll(Arrays.asList(super.members(resource)));
try {
- IResource[] localMembers = ((IContainer)resource).members(true);
+ IResource[] localMembers = EclipseSynchronizer.getInstance().members((IContainer) resource); //((IContainer)resource).members(true);
for (int i = 0; i < localMembers.length; i++) {
IResource local = localMembers[i];
if (local.getType() != IResource.FILE) {