diff options
author | Robin Rosenberg | 2013-02-17 09:55:05 +0000 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org | 2013-02-19 22:27:52 +0000 |
commit | c80526c0e6cf007cbcb265f94388aaab736be149 (patch) | |
tree | c69139f65b27d52ca1666e5a3bda02947a21085e /org.eclipse.egit.ui | |
parent | e1124854aba2590109540758102a761e09eca2fe (diff) | |
download | egit-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')
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. |