Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Rosenberg2013-02-17 09:55:05 +0000
committerGerrit Code Review @ Eclipse.org2013-02-19 22:27:52 +0000
commitc80526c0e6cf007cbcb265f94388aaab736be149 (patch)
treec69139f65b27d52ca1666e5a3bda02947a21085e /org.eclipse.egit.ui
parente1124854aba2590109540758102a761e09eca2fe (diff)
downloadegit-c80526c0e6cf007cbcb265f94388aaab736be149.tar.gz
egit-c80526c0e6cf007cbcb265f94388aaab736be149.tar.xz
egit-c80526c0e6cf007cbcb265f94388aaab736be149.zip
Fix various exceptions in ImportProjectsCommand
It is possible to get NullPointerException, ArrayIndexOutOfBoundsException and ClassCastException when the command is invoked in a way the author did not anticipate. Bug: 398933 Change-Id: I729e1dea45b9f452cf9902e13c63b4de3f741e00
Diffstat (limited to 'org.eclipse.egit.ui')
-rw-r--r--org.eclipse.egit.ui/plugin.properties1
-rw-r--r--org.eclipse.egit.ui/plugin.xml4
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java6
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/command/ImportProjectsCommand.java24
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties4
5 files changed, 37 insertions, 2 deletions
diff --git a/org.eclipse.egit.ui/plugin.properties b/org.eclipse.egit.ui/plugin.properties
index 3f21551327..2e58471136 100644
--- a/org.eclipse.egit.ui/plugin.properties
+++ b/org.eclipse.egit.ui/plugin.properties
@@ -135,6 +135,7 @@ PushCommand = Push...
RefreshCommand = Refresh
RemoveRepositoryCommand = Remove Repository
ImportProjectsCommand = Import Projects...
+ImportProjectsCommand_description = Import or create in local Git repository
CreateBranchCommand = Create Branch...
NewRemoteCommand = Create Remote...
ConfigureFetchCommand = Configure Fetch...
diff --git a/org.eclipse.egit.ui/plugin.xml b/org.eclipse.egit.ui/plugin.xml
index b54273fe4d..5331ea55a6 100644
--- a/org.eclipse.egit.ui/plugin.xml
+++ b/org.eclipse.egit.ui/plugin.xml
@@ -3987,7 +3987,9 @@
categoryId="org.eclipse.egit.ui.commandCategory"
defaultHandler="org.eclipse.egit.ui.internal.repository.tree.command.ImportProjectsCommand"
id="org.eclipse.egit.ui.RepositoriesViewImportProjects"
- name="%ImportProjectsCommand">
+ name="%ImportProjectsCommand"
+ description="%ImportProjectsCommand_description"
+ >
</command>
<command
categoryId="org.eclipse.egit.ui.commandCategory"
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java
index b20f5aeaf8..2c9a6bb557 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java
@@ -3856,6 +3856,12 @@ public class UIText extends NLS {
public static String GitTraceConfigurationDialog_TraceFileLocationLabel;
/** */
+ public static String ImportProjectsWrongSelection;
+
+ /** */
+ public static String ImportProjectsSelectionInRepositoryRequired;
+
+ /** */
public static String LocalFileRevision_CurrentVersion;
/** */
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/command/ImportProjectsCommand.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/command/ImportProjectsCommand.java
index 9aad28b2d9..69abf8da1d 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/command/ImportProjectsCommand.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/command/ImportProjectsCommand.java
@@ -10,12 +10,17 @@
*******************************************************************************/
package org.eclipse.egit.ui.internal.repository.tree.command;
+import java.util.List;
+
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.egit.ui.UIText;
import org.eclipse.egit.ui.internal.clone.GitCreateProjectViaWizardWizard;
import org.eclipse.egit.ui.internal.repository.tree.FolderNode;
import org.eclipse.egit.ui.internal.repository.tree.RepositoryTreeNode;
+import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Display;
/**
* Implements "Add Projects" for Repository, Working Directory, and Folder
@@ -23,7 +28,21 @@ import org.eclipse.jface.wizard.WizardDialog;
public class ImportProjectsCommand extends
RepositoriesViewCommandHandler<RepositoryTreeNode> {
public Object execute(ExecutionEvent event) throws ExecutionException {
- RepositoryTreeNode node = getSelectedNodes(event).get(0);
+ List<RepositoryTreeNode> selectedNodes = getSelectedNodes(event);
+ if (selectedNodes == null || selectedNodes.isEmpty()) {
+ MessageDialog
+ .openError(Display.getDefault().getActiveShell(),
+ UIText.ImportProjectsWrongSelection,
+ UIText.ImportProjectsSelectionInRepositoryRequired);
+ return null;
+ }
+ if (!(((List) selectedNodes).get(0) instanceof RepositoryTreeNode)) {
+ MessageDialog.openError(Display.getDefault().getActiveShell(),
+ UIText.ImportProjectsWrongSelection,
+ UIText.ImportProjectsSelectionInRepositoryRequired);
+ return null;
+ }
+ RepositoryTreeNode node = selectedNodes.get(0);
String path;
switch (node.getType()) {
@@ -36,6 +55,9 @@ public class ImportProjectsCommand extends
path = ((FolderNode) node).getObject().getPath().toString();
break;
default:
+ MessageDialog.openError(Display.getDefault().getActiveShell(),
+ UIText.ImportProjectsWrongSelection,
+ UIText.ImportProjectsSelectionInRepositoryRequired);
return null;
}
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties
index 6e825f59d5..332b9132ab 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties
@@ -1407,6 +1407,10 @@ GitTraceConfigurationDialog_PlatformSwitchCheckbox=Enable &Platform Trace
GitTraceConfigurationDialog_PlatformTraceDisabledMessage=Platform Trace is currently disabled, please enable it in order to edit the trace configuration
GitTraceConfigurationDialog_ShellTitle=Git Trace Configuration
GitTraceConfigurationDialog_TraceFileLocationLabel=Trace File &Location:
+
+ImportProjectsWrongSelection = Wrong selection
+ImportProjectsSelectionInRepositoryRequired = A folder selection in the Repository View is required
+
LocalFileRevision_CurrentVersion=*({0})
LocalFileRevision_currentVersionTag=<current version>
LocalNonWorkspaceTypedElement_errorWritingContents=Error writing contents for local non-workspace element.

Back to the top