Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Valenta2003-09-12 14:14:52 +0000
committerMichael Valenta2003-09-12 14:14:52 +0000
commit75977c98b8a5603f4ca18aaf139e7ce37822e915 (patch)
tree8ef5c3edd2b98bd19e85a7dd44c2d19b6720d808
parent47f1ae02d708b621d78bc04f3e303176dc507ff4 (diff)
downloadeclipse.platform.team-75977c98b8a5603f4ca18aaf139e7ce37822e915.tar.gz
eclipse.platform.team-75977c98b8a5603f4ca18aaf139e7ce37822e915.tar.xz
eclipse.platform.team-75977c98b8a5603f4ca18aaf139e7ce37822e915.zip
41578: Error fetching children of HEAD
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSTagElement.java4
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteContentProvider.java19
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFolderElement.java15
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteModule.java4
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RepositoryLocationSchedulingRule.java (renamed from bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/BatchSimilarSchedulingRule.java)16
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/VersionCategory.java4
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoteViewPart.java2
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveRootAction.java18
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoriesView.java2
9 files changed, 61 insertions, 23 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSTagElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSTagElement.java
index e6c80080c..61cfffadf 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSTagElement.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSTagElement.java
@@ -126,8 +126,8 @@ public class CVSTagElement extends CVSModelElement implements IDeferredWorkbench
}
}
- public ISchedulingRule getRule() {
- return new BatchSimilarSchedulingRule("org.eclipse.team.cvs.ui.model.tagelement"); //$NON-NLS-1$
+ public ISchedulingRule getRule(Object element) {
+ return new RepositoryLocationSchedulingRule(root); //$NON-NLS-1$
}
public boolean isContainer() {
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteContentProvider.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteContentProvider.java
index 4fdc69a5c..a67476ca8 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteContentProvider.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteContentProvider.java
@@ -14,10 +14,12 @@ import org.eclipse.jface.viewers.AbstractTreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder;
import org.eclipse.team.internal.ccvs.core.ICVSRemoteResource;
+import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
import org.eclipse.team.internal.ccvs.core.ICVSResource;
import org.eclipse.team.internal.ccvs.core.resources.RemoteResource;
import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
+import org.eclipse.team.internal.ccvs.ui.repo.RepositoryRoot;
import org.eclipse.ui.IWorkingSet;
import org.eclipse.ui.model.WorkbenchContentProvider;
import org.eclipse.ui.progress.DeferredTreeContentManager;
@@ -113,4 +115,21 @@ public class RemoteContentProvider extends WorkbenchContentProvider {
}
return children;
}
+
+ public void cancelJobs(RepositoryRoot[] roots) {
+ if (manager != null) {
+ for (int i = 0; i < roots.length; i++) {
+ RepositoryRoot root = roots[i];
+ cancelJobs(root.getRoot());
+ }
+ }
+ }
+
+ /**
+ * Cancel any jobs that are fetching content from the given location.
+ * @param location
+ */
+ public void cancelJobs(ICVSRepositoryLocation location) {
+ manager.cancel(location);
+ }
}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFolderElement.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFolderElement.java
index 36f0f893f..18f5520d0 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFolderElement.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFolderElement.java
@@ -20,6 +20,7 @@ import org.eclipse.team.core.TeamException;
import org.eclipse.team.internal.ccvs.core.CVSException;
import org.eclipse.team.internal.ccvs.core.CVSTag;
import org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder;
+import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
import org.eclipse.team.internal.ccvs.ui.Policy;
@@ -30,7 +31,6 @@ import org.eclipse.ui.progress.IDeferredWorkbenchAdapter;
public class RemoteFolderElement extends RemoteResourceElement implements IDeferredWorkbenchAdapter {
-
/**
* Overridden to append the version name to remote folders which
* have version tags and are top-level folders.
@@ -83,11 +83,18 @@ public class RemoteFolderElement extends RemoteResourceElement implements IDefer
}
}
- public ISchedulingRule getRule() {
- return new BatchSimilarSchedulingRule("org.eclipse.team.ui.cvs.remotefolderelement"); //$NON-NLS-1$
+ public ISchedulingRule getRule(Object element) {
+ ICVSRepositoryLocation location = getRepositoryLocation(element);
+ return new RepositoryLocationSchedulingRule(location); //$NON-NLS-1$
}
- public boolean isContainer() {
+ private ICVSRepositoryLocation getRepositoryLocation(Object o) {
+ if (!(o instanceof ICVSRemoteFolder))
+ return null;
+ return ((ICVSRemoteFolder)o).getRepository();
+ }
+
+ public boolean isContainer() {
return true;
}
} \ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteModule.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteModule.java
index e381d2cf1..db9a1e698 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteModule.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteModule.java
@@ -146,7 +146,7 @@ public class RemoteModule
return true;
}
- public ISchedulingRule getRule() {
- return new BatchSimilarSchedulingRule("org.eclipse.team.ui.cvs.remotemodule"); //$NON-NLS-1$
+ public ISchedulingRule getRule(Object element) {
+ return new RepositoryLocationSchedulingRule(folder.getRepository()); //$NON-NLS-1$
}
}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/BatchSimilarSchedulingRule.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RepositoryLocationSchedulingRule.java
index 9a461b979..94228114f 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/BatchSimilarSchedulingRule.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RepositoryLocationSchedulingRule.java
@@ -11,19 +11,19 @@
package org.eclipse.team.internal.ccvs.ui.model;
import org.eclipse.core.runtime.jobs.ISchedulingRule;
+import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
/**
- * A simple job scheduling rule for serializing jobs that shouldn't be run
- * concurrently.
+ * A simple job scheduling rule for serializing jobs for an ICVSRepositoryLocation
*/
-public class BatchSimilarSchedulingRule implements ISchedulingRule {
- public String id;
- public BatchSimilarSchedulingRule(String id) {
- this.id = id;
+public class RepositoryLocationSchedulingRule implements ISchedulingRule {
+ ICVSRepositoryLocation location;
+ public RepositoryLocationSchedulingRule(ICVSRepositoryLocation location) {
+ this.location = location;
}
public boolean isConflicting(ISchedulingRule rule) {
- if(rule instanceof BatchSimilarSchedulingRule) {
- return ((BatchSimilarSchedulingRule)rule).id.equals(id);
+ if(rule instanceof RepositoryLocationSchedulingRule) {
+ return ((RepositoryLocationSchedulingRule)rule).location.equals(location);
}
return false;
}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/VersionCategory.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/VersionCategory.java
index 5a947514f..f18977a7d 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/VersionCategory.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/VersionCategory.java
@@ -169,7 +169,7 @@ public class VersionCategory
return true;
}
- public ISchedulingRule getRule() {
- return new BatchSimilarSchedulingRule("org.eclipse.team.cvs.ui.versioncategory"); //$NON-NLS-1$
+ public ISchedulingRule getRule(Object element) {
+ return new RepositoryLocationSchedulingRule(repository); //$NON-NLS-1$
}
}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoteViewPart.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoteViewPart.java
index 4313af511..15227fd16 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoteViewPart.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoteViewPart.java
@@ -367,7 +367,7 @@ public abstract class RemoteViewPart extends ViewPart implements ISelectionListe
protected void refreshViewer() {
if (viewer == null) return;
- //((RemoteContentProvider)viewer.getContentProvider()).clearCache();
+ ((RemoteContentProvider)viewer.getContentProvider()).cancelJobs(CVSUIPlugin.getPlugin().getRepositoryManager().getKnownRepositoryRoots());
CVSUIPlugin.getPlugin().getRepositoryManager().purgeCache();
updateWorkingSetMenu();
viewer.refresh();
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveRootAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveRootAction.java
index 954501adb..6a1b436d5 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveRootAction.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveRootAction.java
@@ -13,8 +13,10 @@ package org.eclipse.team.internal.ccvs.ui.repo;
import java.util.ArrayList;
import java.util.Iterator;
+import org.eclipse.core.internal.jobs.JobManager;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.jobs.ISchedulingRule;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.team.core.RepositoryProvider;
@@ -24,6 +26,7 @@ import org.eclipse.team.internal.ccvs.core.CVSTeamProvider;
import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
import org.eclipse.team.internal.ccvs.ui.Policy;
import org.eclipse.team.internal.ccvs.ui.actions.CVSAction;
+import org.eclipse.team.internal.ccvs.ui.model.RepositoryLocationSchedulingRule;
import org.eclipse.team.internal.ui.dialogs.DetailsDialogWithProjects;
import org.eclipse.ui.actions.SelectionListenerAction;
import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
@@ -34,10 +37,12 @@ import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
*/
public class RemoveRootAction extends SelectionListenerAction {
private IStructuredSelection selection;
- private Shell shell;
+ /* internal use only */ Shell shell;
+ private RepositoriesView view;
- public RemoveRootAction(Shell shell) {
+ public RemoveRootAction(Shell shell, RepositoriesView view) {
super(Policy.bind("RemoteRootAction.label")); //$NON-NLS-1$
+ this.view = view;
this.shell = shell;
}
@@ -104,7 +109,14 @@ public class RemoveRootAction extends SelectionListenerAction {
}
});
} else {
- provider.disposeRepository(roots[i]);
+ ISchedulingRule rule = new RepositoryLocationSchedulingRule(roots[i]);
+ JobManager.getInstance().beginRule(rule);
+ try {
+ view.getContentProvider().cancelJobs(roots[i]);
+ provider.disposeRepository(roots[i]);
+ } finally {
+ JobManager.getInstance().endRule(rule);
+ }
}
} catch (CVSException e) {
CVSUIPlugin.log(e);
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoriesView.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoriesView.java
index 505993ba8..6ab0637d7 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoriesView.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoriesView.java
@@ -155,7 +155,7 @@ public class RepositoriesView extends RemoteViewPart {
propertiesAction.setEnabled(enabled);
}
});
- removeRootAction = new RemoveRootAction(viewer.getControl().getShell());
+ removeRootAction = new RemoveRootAction(viewer.getControl().getShell(), this);
removeRootAction.selectionChanged((IStructuredSelection)null);
WorkbenchHelp.setHelp(removeRootAction, IHelpContextIds.REMOVE_REPOSITORY_LOCATION_ACTION);
IActionBars bars = getViewSite().getActionBars();

Back to the top