Skip to content

Commit 2303e8e

Browse files
wezhangt-rufang
authored andcommitted
Fix Spark Run configuration cast issues
1 parent 3a85b8a commit 2303e8e

File tree

5 files changed

+31
-20
lines changed

5 files changed

+31
-20
lines changed

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/hdinsight/spark/actions/SparkSubmitJobAction.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ open class SparkSubmitJobAction : AzureAnAction() {
8282

8383
runConfigurationSetting.isEditBeforeRun = true
8484

85-
val runConfiguration = runConfigurationSetting.configuration as LivySparkBatchJobRunConfiguration
85+
val runConfiguration = runConfigurationSetting.configuration as? LivySparkBatchJobRunConfiguration ?: return
8686
val model = runConfiguration.model
8787
model.focusedTabIndex = 1 // Select remote job submission tab
8888

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/hdinsight/spark/console/SparkScalaLivyConsoleRunConfigurationFactory.kt

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,19 +36,20 @@ class SparkScalaLivyConsoleRunConfigurationFactory(sparkConsoleType: SparkScalaL
3636

3737
override fun createConfiguration(name: String?, template: RunConfiguration): RunConfiguration =
3838
// Create a Spark Scala Livy run configuration based on Spark Batch run configuration
39-
if (template is CosmosSparkRunConfiguration) {
40-
CosmosSparkScalaLivyConsoleRunConfiguration(
41-
template.project,
42-
this,
43-
template,
44-
"${template.name} >> Azure Data Lake Spark Livy Interactive Session Console(Scala)"
45-
)
46-
} else {
47-
SparkScalaLivyConsoleRunConfiguration(
48-
template.project,
49-
this,
50-
template as LivySparkBatchJobRunConfiguration,
51-
"${template.name} >> Spark Livy Interactive Session Console(Scala)"
52-
)
39+
when (template) {
40+
is CosmosSparkRunConfiguration ->
41+
CosmosSparkScalaLivyConsoleRunConfiguration(
42+
template.project,
43+
this,
44+
template,
45+
"${template.name} >> Azure Data Lake Spark Livy Interactive Session Console(Scala)")
46+
is LivySparkBatchJobRunConfiguration ->
47+
SparkScalaLivyConsoleRunConfiguration(
48+
template.project,
49+
this,
50+
template,
51+
"${template.name} >> Spark Livy Interactive Session Console(Scala)")
52+
else -> throw UnsupportedOperationException(
53+
"Spark Livy Console doesn't support starting from the configuration ${template.name}(type: ${template.type.displayName})")
5354
}
5455
}

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/hdinsight/spark/console/SparkScalaLocalConsoleRunConfigurationFactory.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,15 @@ class SparkScalaLocalConsoleRunConfigurationFactory(sparkConsoleType: SparkScala
3838
// Create a Spark Scala Console run configuration based on Spark Batch run configuration
3939
val localClassModule =
4040
(template as? LivySparkBatchJobRunConfiguration)?.model?.localRunConfigurableModel?.classpathModule
41+
?: throw UnsupportedOperationException("Spark Local Console doesn't support starting from the configuration ${template.name}(type: ${template.type.displayName})")
4142

4243
val configuration = createTemplateConfiguration(template.project) as SparkScalaLocalConsoleRunConfiguration
4344
configuration.name = "${template.name} >> Spark Local Console(Scala)"
4445
val moduleManager = ModuleManager.getInstance(template.project)
45-
configuration.module = localClassModule?.let { moduleManager.findModuleByName(it) }
46+
configuration.module = localClassModule.let { moduleManager.findModuleByName(it) }
4647
?: moduleManager.modules.first { it.name.equals(template.project.name, ignoreCase = true) }
4748

48-
configuration.batchRunConfiguration = template as LivySparkBatchJobRunConfiguration
49+
configuration.batchRunConfiguration = template
4950

5051
return configuration
5152
}

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/hdinsight/spark/run/SparkBatchJobLocalRunConfigurationProducer.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.intellij.execution.actions.ConfigurationFromContext;
2727
import com.intellij.execution.configurations.ConfigurationFactory;
2828
import com.intellij.execution.configurations.ConfigurationType;
29+
import com.intellij.execution.configurations.RunConfiguration;
2930
import com.intellij.execution.junit.JavaRunConfigurationProducerBase;
3031
import com.intellij.openapi.module.Module;
3132
import com.intellij.openapi.util.Comparing;
@@ -117,11 +118,18 @@ public boolean isConfigurationFromContext(LivySparkBatchJobRunConfiguration jobC
117118

118119
if (!Comparing.equal(context.getModule(), configurationModule)) {
119120

120-
LivySparkBatchJobRunConfiguration template = (LivySparkBatchJobRunConfiguration)context
121+
RunConfiguration template = context
121122
.getRunManager()
122123
.getConfigurationTemplate(getConfigurationFactory())
123124
.getConfiguration();
124-
final Module predefinedModule = template.getConfigurationModule().getModule();
125+
126+
if (!(template instanceof LivySparkBatchJobRunConfiguration)) {
127+
return false;
128+
}
129+
130+
final Module predefinedModule = ((LivySparkBatchJobRunConfiguration)template)
131+
.getConfigurationModule()
132+
.getModule();
125133

126134
if (!Comparing.equal(predefinedModule, configurationModule)) {
127135
return false;

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/hdinsight/spark/run/action/SparkRunConfigurationAction.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ package com.microsoft.azure.hdinsight.spark.run.action
2525
import com.intellij.execution.Executor
2626
import com.intellij.execution.RunManagerEx
2727
import com.intellij.execution.RunnerAndConfigurationSettings
28-
import com.intellij.execution.RunnerRegistry
2928
import com.intellij.execution.runners.ExecutionEnvironmentBuilder
3029
import com.intellij.execution.runners.ProgramRunner
3130
import com.intellij.openapi.actionSystem.AnActionEvent
@@ -130,6 +129,8 @@ abstract class SparkRunConfigurationAction : AzureAnAction, ILogger {
130129
val savedIsEditBeforeRun = selectedConfigSettings.isEditBeforeRun
131130

132131
selectedConfigSettings.isEditBeforeRun = true
132+
133+
// canRun() has checked configuration is LivySparkBatchJobRunConfiguration or not
133134
(selectedConfigSettings.configuration as LivySparkBatchJobRunConfiguration).submitModel.mainClassName =
134135
className
135136

0 commit comments

Comments
 (0)