419190: ClassCastException when opening query dialog
Call methods on Wizard only if given IWizard is an instance of Wizard,
in other words check type before casting.
Bug: 419190
Change-Id: Ie462e542ecec0d443ab7865d9297e63fa4d9aa93
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=419190
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AddRepositoryAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AddRepositoryAction.java
index 92e3132..93326e6 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AddRepositoryAction.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/AddRepositoryAction.java
@@ -106,7 +106,9 @@
if (messageDialog.getReturnCode() == IDialogConstants.YES_ID) {
AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(taskRepository.getConnectorKind());
IWizard queryWizard = connectorUi.getQueryWizard(taskRepository, null);
- ((Wizard) queryWizard).setForcePreviousAndNextButtons(true);
+ if (queryWizard instanceof Wizard) {
+ ((Wizard) queryWizard).setForcePreviousAndNextButtons(true);
+ }
WizardDialog queryDialog = new WizardDialog(shell, queryWizard);
queryDialog.create();
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewQueryAction.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewQueryAction.java
index adf9faa..15d7f74 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewQueryAction.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/actions/NewQueryAction.java
@@ -77,7 +77,9 @@
TaskRepository taskRepository = TasksUiUtil.getSelectedRepository();
AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(taskRepository.getConnectorKind());
wizard = connectorUi.getQueryWizard(taskRepository, null);
- ((Wizard) wizard).setForcePreviousAndNextButtons(true);
+ if (wizard instanceof Wizard) {
+ ((Wizard) wizard).setForcePreviousAndNextButtons(true);
+ }
if (connectorUi instanceof LocalRepositoryConnectorUi) {
wizard.performFinish();
return;
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewRepositoryWizard.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewRepositoryWizard.java
index d25488b..2c446f2 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewRepositoryWizard.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/wizards/NewRepositoryWizard.java
@@ -157,7 +157,9 @@
if (messageDialog.getReturnCode() == IDialogConstants.YES_ID) {
AbstractRepositoryConnectorUi connectorUi = TasksUiPlugin.getConnectorUi(taskRepository.getConnectorKind());
final IWizard queryWizard = connectorUi.getQueryWizard(taskRepository, null);
- ((Wizard) queryWizard).setForcePreviousAndNextButtons(true);
+ if (queryWizard instanceof Wizard) {
+ ((Wizard) queryWizard).setForcePreviousAndNextButtons(true);
+ }
// execute delayed to avoid stacking dialogs
getShell().getDisplay().asyncExec(new Runnable() {