Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Valenta2002-07-03 21:09:56 +0000
committerMichael Valenta2002-07-03 21:09:56 +0000
commitcb2c52f12575c865d00e5ab088e55806c779180b (patch)
tree77aa512fd048c02d97e21ce682ae4c52e1867561 /bundles/org.eclipse.team.core/src/org/eclipse/team/core/Team.java
parent7bf99fa512548fa07751f87b1ecb6244b50c6c10 (diff)
downloadeclipse.platform.team-cb2c52f12575c865d00e5ab088e55806c779180b.tar.gz
eclipse.platform.team-cb2c52f12575c865d00e5ab088e55806c779180b.tar.xz
eclipse.platform.team-cb2c52f12575c865d00e5ab088e55806c779180b.zip
21036: RepositoryProvider.project stale if project renamed/moved
Diffstat (limited to 'bundles/org.eclipse.team.core/src/org/eclipse/team/core/Team.java')
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/Team.java25
1 files changed, 25 insertions, 0 deletions
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/Team.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/Team.java
index 6242b9b66..6dcbdf6c8 100644
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/Team.java
+++ b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/Team.java
@@ -30,7 +30,12 @@ import java.util.Map;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.core.resources.IStorage;
+import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
@@ -513,6 +518,26 @@ public final class Team {
loadTextState();
readIgnoreState();
initializePluginIgnores();
+ // Register a delta listener that will tell the provider about a project move
+ ResourcesPlugin.getWorkspace().addResourceChangeListener(new IResourceChangeListener() {
+ public void resourceChanged(IResourceChangeEvent event) {
+ IResourceDelta[] projectDeltas = event.getDelta().getAffectedChildren();
+ for (int i = 0; i < projectDeltas.length; i++) {
+ IResourceDelta delta = projectDeltas[i];
+ IResource resource = delta.getResource();
+ RepositoryProvider provider = RepositoryProvider.getProvider(resource.getProject());
+ // Only consider projects that have a provider
+ if (provider == null) continue;
+ // Only consider project additions that are moves
+ if (delta.getKind() != IResourceDelta.ADDED) continue;
+ if ((delta.getFlags() & IResourceDelta.MOVED_FROM) == 0) continue;
+ // Only consider providers whose project is not mapped properly already
+ if (provider.getProject().equals(resource.getProject())) continue;
+ // Tell the provider about it's new project
+ provider.setProject(resource.getProject());
+ }
+ }
+ }, IResourceChangeEvent.PRE_AUTO_BUILD);
} catch (TeamException e) {
throw new CoreException(e.getStatus());
}

Back to the top