Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Sohn2015-03-29 20:56:35 +0000
committerGerrit Code Review @ Eclipse.org2015-03-29 20:56:37 +0000
commit08ed70b385cd3665d6b81ba5bf2f22c1d7f0fdce (patch)
tree82b23d2e4c9b014903da756bd225350784ba183a
parent3765c513838ac9cc9955bec6887bb965262e98e2 (diff)
parenta3da1956ed60fe4ae391ca9074c3238b9b1062ff (diff)
downloadegit-08ed70b385cd3665d6b81ba5bf2f22c1d7f0fdce.tar.gz
egit-08ed70b385cd3665d6b81ba5bf2f22c1d7f0fdce.tar.xz
egit-08ed70b385cd3665d6b81ba5bf2f22c1d7f0fdce.zip
Merge "Avoid TeamException when looking up RepositoryProvider"
-rw-r--r--org.eclipse.egit.core/src/org/eclipse/egit/core/Activator.java8
-rw-r--r--org.eclipse.egit.core/src/org/eclipse/egit/core/project/GitProjectData.java4
-rw-r--r--org.eclipse.egit.core/src/org/eclipse/egit/core/project/RepositoryMapping.java37
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/DisconnectActionHandler.java8
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/branch/BranchProjectTracker.java10
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/GitDocument.java6
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/CommitDialog.java12
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/GitModelSynchronize.java8
8 files changed, 59 insertions, 34 deletions
diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/Activator.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/Activator.java
index 34da167cc7..5d457adfe5 100644
--- a/org.eclipse.egit.core/src/org/eclipse/egit/core/Activator.java
+++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/Activator.java
@@ -192,12 +192,14 @@ public class Activator extends Plugin implements DebugOptionsListener {
if (resource instanceof IProject) {
IProject project = (IProject) resource;
if (project.isAccessible()) {
- if (RepositoryProvider.getProvider(project) instanceof GitProvider) {
+ if (RepositoryProvider.getProvider(project,
+ GitProvider.ID) != null) {
IResource dotGit = project
.findMember(Constants.DOT_GIT);
- if (dotGit != null
- && dotGit.getType() == IResource.FOLDER)
+ if (dotGit != null && dotGit
+ .getType() == IResource.FOLDER) {
GitProjectData.reconfigureWindowCache();
+ }
}
} else {
// bug 419706: project is closed - use java.io API
diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/project/GitProjectData.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/project/GitProjectData.java
index 4d7bf06bd8..fcfe3d24ff 100644
--- a/org.eclipse.egit.core/src/org/eclipse/egit/core/project/GitProjectData.java
+++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/project/GitProjectData.java
@@ -201,8 +201,8 @@ public class GitProjectData {
public synchronized static GitProjectData get(final IProject p) {
try {
GitProjectData d = lookup(p);
- if (d == null
- && RepositoryProvider.getProvider(p) instanceof GitProvider) {
+ if (d == null && RepositoryProvider.getProvider(p,
+ GitProvider.ID) != null) {
d = new GitProjectData(p).load();
cache(p, d);
}
diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/project/RepositoryMapping.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/project/RepositoryMapping.java
index 699a31f7fb..8813680910 100644
--- a/org.eclipse.egit.core/src/org/eclipse/egit/core/project/RepositoryMapping.java
+++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/project/RepositoryMapping.java
@@ -297,32 +297,45 @@ public class RepositoryMapping {
* GitProvider.
*/
public static RepositoryMapping getMapping(final IResource resource) {
- if (isNonWorkspace(resource))
+ if (isNonWorkspace(resource)) {
return null;
-
- if (resource.isLinked(IResource.CHECK_ANCESTORS))
+ }
+ if (resource.isLinked(IResource.CHECK_ANCESTORS)) {
return getMapping(resource.getLocation());
+ }
+ return getMapping(resource.getProject());
+ }
- IProject project = resource.getProject();
- if (project == null)
+ /**
+ * Get the repository mapping for a project.
+ *
+ * @param project
+ * @return the RepositoryMapping for this project, or null for non
+ * GitProvider.
+ */
+ public static RepositoryMapping getMapping(final IProject project) {
+ if (project == null || isNonWorkspace(project)) {
return null;
-
- final RepositoryProvider rp = RepositoryProvider.getProvider(project);
- if (!(rp instanceof GitProvider))
+ }
+ final RepositoryProvider rp = RepositoryProvider.getProvider(project,
+ GitProvider.ID);
+ if (rp == null) {
return null;
+ }
- if (((GitProvider)rp).getData() == null)
+ GitProjectData data = ((GitProvider) rp).getData();
+ if (data == null) {
return null;
+ }
- return ((GitProvider)rp).getData().getRepositoryMapping(resource);
+ return data.getRepositoryMapping(project);
}
/**
* Get the repository mapping for a path if it exists.
*
* @param path
- * @return the RepositoryMapping for this path,
- * or null for non GitProvider.
+ * @return the RepositoryMapping for this path, or null for non GitProvider.
*/
public static RepositoryMapping getMapping(IPath path) {
IProject[] projects = ResourcesPlugin.getWorkspace().getRoot()
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/DisconnectActionHandler.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/DisconnectActionHandler.java
index 02ace0e33f..d6b958fcdc 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/DisconnectActionHandler.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/actions/DisconnectActionHandler.java
@@ -35,12 +35,14 @@ public class DisconnectActionHandler extends RepositoryActionHandler {
IProject[] selectedProjects = getProjectsForSelectedResources();
List<IProject> projects = new ArrayList<IProject>(selectedProjects.length);
for (IProject project : selectedProjects) {
- if (project.isOpen()
- && RepositoryProvider.getProvider(project) instanceof GitProvider)
+ if (project.isOpen() && RepositoryProvider.getProvider(project,
+ GitProvider.ID) != null) {
projects.add(project);
+ }
}
- if (projects.isEmpty())
+ if (projects.isEmpty()) {
return null;
+ }
JobUtil.scheduleUserJob(new DisconnectProviderOperation(projects),
UIText.Disconnect_disconnect,
JobFamilies.DISCONNECT, new JobChangeAdapter() {
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/branch/BranchProjectTracker.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/branch/BranchProjectTracker.java
index bb54a476e4..9a8ef3a552 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/branch/BranchProjectTracker.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/branch/BranchProjectTracker.java
@@ -131,16 +131,20 @@ class BranchProjectTracker {
final String workDir = repository.getWorkTree().getAbsolutePath();
for (IProject project : projects) {
IPath path = project.getLocation();
- if (path == null)
+ if (path == null) {
continue;
+ }
// Only remember mapped projects
- if (!(RepositoryProvider.getProvider(project) instanceof GitProvider))
+ if (RepositoryProvider.getProvider(project,
+ GitProvider.ID) == null) {
continue;
+ }
String fullPath = path.toOSString();
if (fullPath.startsWith(workDir)) {
String relative = fullPath.substring(workDir.length());
- if (relative.length() == 0)
+ if (relative.length() == 0) {
relative = REPO_ROOT;
+ }
IMemento child = memento.createChild(KEY_PROJECT);
child.putTextData(relative);
}
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/GitDocument.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/GitDocument.java
index 2d1e873a85..15edea0453 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/GitDocument.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/decorators/GitDocument.java
@@ -72,13 +72,15 @@ class GitDocument extends Document implements RefsChangedListener {
GitTraceLocation.QUICKDIFF.getLocation(),
"(GitDocument) create: " + resource); //$NON-NLS-1$
GitDocument ret = null;
- if (RepositoryProvider.getProvider(resource.getProject()) instanceof GitProvider) {
+ if (RepositoryProvider.getProvider(resource.getProject(),
+ GitProvider.ID) != null) {
ret = new GitDocument(resource);
ret.populate();
final Repository repository = ret.getRepository();
- if (repository != null)
+ if (repository != null) {
ret.myRefsChangedHandle = repository.getListenerList()
.addRefsChangedListener(ret);
+ }
}
return ret;
}
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/CommitDialog.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/CommitDialog.java
index 7c31e8b6e6..a30a19f58f 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/CommitDialog.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/dialogs/CommitDialog.java
@@ -36,6 +36,7 @@ import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.jobs.IJobChangeEvent;
import org.eclipse.core.runtime.jobs.JobChangeAdapter;
import org.eclipse.egit.core.AdaptableFileTreeIterator;
+import org.eclipse.egit.core.GitProvider;
import org.eclipse.egit.core.internal.util.ResourceUtil;
import org.eclipse.egit.ui.Activator;
import org.eclipse.egit.ui.UIPreferences;
@@ -1351,12 +1352,13 @@ public class CommitDialog extends TitleAreaDialog {
private void compare(CommitItem commitItem) {
IFile file = findFile(commitItem.path);
- if (file == null
- || RepositoryProvider.getProvider(file.getProject()) == null)
- CompareUtils
- .compareHeadWithWorkingTree(repository, commitItem.path);
- else
+ if (file == null || RepositoryProvider.getProvider(file.getProject(),
+ GitProvider.ID) == null) {
+ CompareUtils.compareHeadWithWorkingTree(repository,
+ commitItem.path);
+ } else {
CompareUtils.compareHeadWithWorkspace(repository, file);
+ }
}
private IFile findFile(String path) {
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/GitModelSynchronize.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/GitModelSynchronize.java
index ba9ab247e8..2bb3685453 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/GitModelSynchronize.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/GitModelSynchronize.java
@@ -33,6 +33,7 @@ import org.eclipse.core.runtime.jobs.IJobChangeEvent;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.core.runtime.jobs.JobChangeAdapter;
import org.eclipse.egit.core.AdapterUtils;
+import org.eclipse.egit.core.GitProvider;
import org.eclipse.egit.core.internal.storage.GitFileRevision;
import org.eclipse.egit.core.internal.util.ResourceUtil;
import org.eclipse.egit.core.synchronize.GitResourceVariantTreeSubscriber;
@@ -59,8 +60,6 @@ import org.eclipse.ui.PlatformUI;
*/
public class GitModelSynchronize {
- private static final String GIT_PROVIDER_ID = "org.eclipse.egit.core.GitProvider"; //$NON-NLS-1$
-
/**
* This can be used to open the synchronize view for the given set of
* resources, comparing the given revisions together.
@@ -228,10 +227,11 @@ public class GitModelSynchronize {
IProject[] projects = element.getProjects();
for (IProject project: projects) {
RepositoryProvider provider = RepositoryProvider
- .getProvider(project);
+ .getProvider(project, GitProvider.ID);
- if (provider != null && provider.getID().equals(GIT_PROVIDER_ID))
+ if (provider != null) {
return true;
+ }
}
return false;
}

Back to the top