Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Wolf2016-06-10 05:21:03 +0000
committerMatthias Sohn2016-06-20 21:14:00 +0000
commitdbab72e5c7873cb8348828e27d4b6890dce73379 (patch)
treee99afffa3d45dac1ef4527bde6d4fc0c85a93c87
parent5d986e5dfd39437b2208590fe265693045489b85 (diff)
downloadegit-dbab72e5c7873cb8348828e27d4b6890dce73379.tar.gz
egit-dbab72e5c7873cb8348828e27d4b6890dce73379.tar.xz
egit-dbab72e5c7873cb8348828e27d4b6890dce73379.zip
Fix NPE in GitSelectRepositoryPage.checkPage()
Bug: 495848 Change-Id: I997ec31bf6b07fd8d144741116fe1230be3a608c Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clone/GitSelectRepositoryPage.java33
1 files changed, 22 insertions, 11 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clone/GitSelectRepositoryPage.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clone/GitSelectRepositoryPage.java
index 283aa6f34d..75ebf3a232 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clone/GitSelectRepositoryPage.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/clone/GitSelectRepositoryPage.java
@@ -15,6 +15,7 @@ package org.eclipse.egit.ui.internal.clone;
import java.io.File;
import java.io.IOException;
+import java.util.Collections;
import java.util.List;
import java.util.Set;
@@ -43,7 +44,6 @@ import org.eclipse.jface.window.Window;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.jgit.lib.Repository;
-import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
@@ -173,8 +173,10 @@ public class GitSelectRepositoryPage extends WizardPage {
display.asyncExec(new Runnable() {
@Override
public void run() {
- refreshRepositoryList();
- checkPage();
+ if (!tv.getControl().isDisposed()) {
+ refreshRepositoryList();
+ checkPage();
+ }
}
});
}
@@ -215,28 +217,37 @@ public class GitSelectRepositoryPage extends WizardPage {
}
private void refreshRepositoryList() {
- List<String> dirsBefore = (List<String>) tv.getInput();
+ List<?> dirsBefore = (List<?>) tv.getInput();
List<String> dirsAfter = util.getConfiguredRepositories();
- if (dirsBefore != null && !dirsBefore.containsAll(dirsAfter)) {
+ if (dirsBefore == null) {
+ dirsBefore = Collections.emptyList();
+ }
+ if (!dirsBefore.containsAll(dirsAfter)) {
tv.setInput(dirsAfter);
- for (String dir : dirsAfter)
- if (!dirsBefore.contains(dir))
+ for (String dir : dirsAfter) {
+ if (!dirsBefore.contains(dir)) {
try {
+ Repository newRepository = org.eclipse.egit.core.Activator
+ .getDefault().getRepositoryCache()
+ .lookupRepository(new File(dir));
RepositoryNode node = new RepositoryNode(null,
- FileRepositoryBuilder.create(new File(dir)));
- tv.setSelection(new StructuredSelection(
- node));
+ newRepository);
+ tv.setSelection(new StructuredSelection(node));
+ break;
} catch (IOException e1) {
Activator.handleError(e1.getMessage(), e1,
false);
}
+ }
+ }
}
}
private void checkPage() {
setErrorMessage(null);
try {
- if (((List) tv.getInput()).isEmpty()) {
+ List<?> currentInput = (List<?>) tv.getInput();
+ if (currentInput == null || currentInput.isEmpty()) {
setErrorMessage(UIText.GitSelectRepositoryPage_NoRepoFoundMessage);
return;
}

Back to the top