Skip to content

Commit 32475f6

Browse files
committed
Merge branch 'release'
2 parents 285d120 + 424aaea commit 32475f6

File tree

10 files changed

+70
-21
lines changed

10 files changed

+70
-21
lines changed

PluginsAndFeatures/azure-toolkit-for-intellij/gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ javaVersion=1.8
22
org.gradle.jvmargs='-Duser.language=en'
33
sources=false
44
intellij_version=IC-LATEST-EAP-SNAPSHOT
5-
dep_plugins=org.intellij.scala:2019.2.3
5+
dep_plugins=org.intellij.scala:2019.2.15
66
applicationinsights.key=57cc111a-36a8-44b3-b044-25d293b8b77c
77
updateVersionRange=true

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class RunSparkScalaLivyConsoleAction : RunSparkScalaConsoleAction() {
4242
get() = false
4343

4444
override val consoleRunConfigurationFactory: ScalaConsoleRunConfigurationFactory
45-
get() = SparkScalaLivyConsoleConfigurationType().confFactory()
45+
get() = SparkScalaLivyConsoleConfigurationType().sparkLivyConfFactory()
4646

4747
override fun getNewSettingName(): String = "Spark Livy Interactive Session Console(Scala)"
4848

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class RunSparkScalaLocalConsoleAction : RunSparkScalaConsoleAction() {
3737
get() = 0
3838

3939
override val consoleRunConfigurationFactory: ScalaConsoleRunConfigurationFactory
40-
get() = SparkScalaLocalConsoleConfigurationType().confFactory()
40+
get() = SparkScalaLocalConsoleConfigurationType().sparkLocalConfFactory()
4141

4242
override fun getNewSettingName(): String = "Spark Local Console(Scala)"
4343

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ class SparkScalaConsoleBuilder(project: Project) : TextConsoleBuilderImpl(projec
5656
fun getSparkSessionDeclareStatement(sparkVal: String) = "val $sparkVal: org.apache.spark.sql.SparkSession\n"
5757

5858
override fun getConsole(): ConsoleView {
59-
val consoleView = SparkScalaLivyConsole(project, ScalaLanguageConsoleView.SCALA_CONSOLE())
59+
val consoleView = SparkScalaLivyConsole(project, "Spark Console (Scala)")
6060

6161
ScalaConsoleInfo.setIsConsole(consoleView.file, true)
6262
consoleView.prompt = null

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class SparkScalaLivyConsoleConfigurationType : ScalaConsoleConfigurationType() {
3131
@JvmStatic
3232
val instance by lazy { ConfigurationTypeUtil.findConfigurationType(SparkScalaLivyConsoleConfigurationType::class.java) }
3333
}
34-
override fun confFactory(): ScalaConsoleRunConfigurationFactory = SparkScalaLivyConsoleRunConfigurationFactory(this)
34+
fun sparkLivyConfFactory(): ScalaConsoleRunConfigurationFactory = SparkScalaLivyConsoleRunConfigurationFactory(this)
3535

3636
override fun getDisplayName(): String = "Spark Livy Interactive Session Console(Scala)"
3737

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class SparkScalaLocalConsoleConfigurationType : ScalaConsoleConfigurationType()
3131
@JvmStatic
3232
val instance by lazy { ConfigurationTypeUtil.findConfigurationType(SparkScalaLocalConsoleConfigurationType::class.java) }
3333
}
34-
override fun confFactory(): ScalaConsoleRunConfigurationFactory = SparkScalaLocalConsoleRunConfigurationFactory(this)
34+
fun sparkLocalConfFactory(): ScalaConsoleRunConfigurationFactory = SparkScalaLocalConsoleRunConfigurationFactory(this)
3535

3636
override fun getDisplayName(): String = "Spark Local Console(Scala)"
3737

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

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
package com.microsoft.azure.hdinsight.spark.console
2424

25+
import com.intellij.execution.CantRunException
2526
import com.intellij.execution.ExecutionException
2627
import com.intellij.execution.Executor
2728
import com.intellij.execution.configurations.JavaCommandLineState
@@ -33,9 +34,11 @@ import com.intellij.jarRepository.RemoteRepositoriesConfiguration
3334
import com.intellij.openapi.progress.ProgressManager
3435
import com.intellij.openapi.progress.util.DispatchThreadProgressWindow
3536
import com.intellij.openapi.project.Project
37+
import com.intellij.openapi.projectRoots.JavaSdkType
38+
import com.intellij.openapi.projectRoots.JdkUtil
39+
import com.intellij.openapi.roots.ModuleRootManager
3640
import com.intellij.openapi.roots.OrderRootType
3741
import com.intellij.openapi.roots.impl.libraries.LibraryEx
38-
import com.intellij.openapi.roots.impl.libraries.ProjectLibraryTable
3942
import com.intellij.openapi.roots.libraries.Library
4043
import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar
4144
import com.intellij.openapi.roots.libraries.NewLibraryConfiguration
@@ -64,9 +67,27 @@ class SparkScalaLocalConsoleRunConfiguration(
6467

6568
lateinit var batchRunConfiguration: LivySparkBatchJobRunConfiguration
6669

67-
override fun mainClass(): String = "org.apache.spark.deploy.SparkSubmit"
70+
val mainClass: String = "org.apache.spark.deploy.SparkSubmit"
6871

69-
override fun createParams(): JavaParameters {
72+
private fun createScalaParams(): JavaParameters {
73+
val module = configurationModule.module ?: throw ExecutionException("Module is not specified")
74+
75+
val rootManager = ModuleRootManager.getInstance(module)
76+
val sdk = rootManager.sdk
77+
if (sdk == null || sdk.sdkType !is JavaSdkType) {
78+
throw CantRunException.noJdkForModule(module)
79+
}
80+
81+
return JavaParameters().apply {
82+
vmParametersList.addParametersString("-Djline.terminal=NONE")
83+
setUseDynamicClasspath(JdkUtil.useDynamicClasspath(project))
84+
workingDirectory = workingDirectory
85+
mainClass = mainClass
86+
configureByModule(module, JavaParameters.JDK_AND_CLASSES_AND_TESTS)
87+
}
88+
}
89+
90+
fun createJavaParams(): JavaParameters {
7091
var isMockFs = false
7192
if (Messages.YES == Messages.showYesNoDialog(
7293
project,
@@ -78,7 +99,7 @@ class SparkScalaLocalConsoleRunConfiguration(
7899

79100
val localRunParams = SparkBatchLocalRunState(project, batchRunConfiguration.model.localRunConfigurableModel, null)
80101
.createParams(executor = null, hasJmockit = isMockFs, hasMainClass = false, hasClassPath = false)
81-
val params = super.createParams()
102+
val params = createScalaParams()
82103
params.classPath.clear()
83104
val replLibraryCoord = findReplCoord() ?: throw ExecutionException("""
84105
The library org.apache.spark:spark-core is not in project dependencies.
@@ -101,21 +122,14 @@ class SparkScalaLocalConsoleRunConfiguration(
101122
params.classPath.addAll(getDependencyClassPaths(jlineLibraryCoord))
102123

103124
params.classPath.addAll(localRunParams.classPath.pathList)
104-
params.mainClass = mainClass()
125+
params.mainClass = mainClass
105126

106127
params.vmParametersList.addAll(localRunParams.vmParametersList.parameters)
107128

108129
if (isMockFs) {
109130
params.vmParametersList.add("-javaagent:${getJarPathForClass(SparkLocalConsoleMockFsAgent::class.java)}")
110131
}
111132

112-
// FIXME!!! To support local mock filesystem
113-
// params.mainClass = localRunParams.mainClass
114-
//
115-
// localRunParams.programParametersList.parameters.takeWhile { it.trim().startsWith("--master") }
116-
// .forEach { params.programParametersList.add(it) }
117-
// params.programParametersList.add(mainClass())
118-
119133
params.workingDirectory = Paths.get(batchRunConfiguration.model.localRunConfigurableModel.dataRootDirectory, "__default__", "user", "current").toString()
120134
params.programParametersList.add("--class", "org.apache.spark.repl.Main")
121135
params.programParametersList.add("--name", "Spark shell")
@@ -218,7 +232,7 @@ class SparkScalaLocalConsoleRunConfiguration(
218232
override fun getState(executor: Executor, env: ExecutionEnvironment): RunProfileState? {
219233
val state = object : JavaCommandLineState(env) {
220234
override fun createJavaParameters() : JavaParameters {
221-
val params = createParams()
235+
val params = createJavaParams()
222236

223237
params.programParametersList.addParametersString(consoleArgs())
224238
return params

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ class SparkScalaLocalConsoleRunConfigurationFactory(sparkConsoleType: SparkScala
4444
val moduleManager = ModuleManager.getInstance(template.project)
4545

4646
val localClassModule = template.model.localRunConfigurableModel?.classpathModule
47-
configuration.module = localClassModule?.let { moduleManager.findModuleByName(it) }
48-
?: moduleManager.modules.first { it.name.equals(template.project.name, ignoreCase = true) }
47+
configuration.setModule(localClassModule?.let { moduleManager.findModuleByName(it) }
48+
?: moduleManager.modules.first { it.name.equals(template.project.name, ignoreCase = true) })
4949

5050
return configuration
5151
}

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/intellij/helpers/CustomerSurveyHelper.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@
1515
import com.intellij.openapi.application.ApplicationManager;
1616
import com.intellij.openapi.project.Project;
1717
import com.microsoft.azuretools.ijidea.ui.SurveyPopUpDialog;
18+
import com.microsoft.azuretools.telemetrywrapper.EventType;
19+
import com.microsoft.azuretools.telemetrywrapper.EventUtil;
20+
import com.microsoft.azuretools.telemetrywrapper.Operation;
21+
import com.microsoft.azuretools.telemetrywrapper.TelemetryManager;
1822
import com.microsoft.intellij.actions.QualtricsSurveyAction;
1923
import org.apache.commons.io.IOUtils;
2024
import org.joda.time.LocalDateTime;
@@ -26,8 +30,13 @@
2630
import java.io.FileReader;
2731
import java.io.IOException;
2832
import java.nio.charset.Charset;
33+
import java.util.HashMap;
34+
import java.util.Map;
2935
import java.util.concurrent.TimeUnit;
3036

37+
import static com.microsoft.azuretools.telemetry.TelemetryConstants.SURVEY;
38+
import static com.microsoft.azuretools.telemetry.TelemetryConstants.SYSTEM;
39+
3140
public enum CustomerSurveyHelper {
3241

3342
INSTANCE;
@@ -39,8 +48,13 @@ public enum CustomerSurveyHelper {
3948

4049
private static final String PLUGIN_FOLDER_NAME = "AzureToolsForIntelliJ";
4150
private static final String SURVEY_CONFIG_FILE = "SurveyConfig.json";
51+
private static final String TELEMETRY_KEY_RESPONSE = "response";
52+
private static final String TELEMETRY_VALUE_NEVER_SHOW = "neverShowAgain";
53+
private static final String TELEMETRY_VALUE_PUT_OFF = "putOff";
54+
private static final String TELEMETRY_VALUE_ACCEPT = "accept";
4255

4356
private SurveyConfig surveyConfig;
57+
private Operation operation;
4458

4559
CustomerSurveyHelper() {
4660
loadConfiguration();
@@ -53,6 +67,13 @@ public void showFeedbackNotification(Project project) {
5367
.subscribe(next -> {
5468
SurveyPopUpDialog dialog = new SurveyPopUpDialog(CustomerSurveyHelper.this, project);
5569
dialog.setVisible(true);
70+
synchronized (CustomerSurveyHelper.class) {
71+
if (operation != null) {
72+
operation.complete();
73+
}
74+
operation = TelemetryManager.createOperation(SYSTEM, SURVEY);
75+
operation.start();
76+
}
5677
});
5778
}
5879
}
@@ -64,16 +85,19 @@ public void takeSurvey() {
6485
surveyConfig.lastSurveyDate = LocalDateTime.now();
6586
surveyConfig.nextSurveyDate = LocalDateTime.now().plusDays(TAKE_SURVEY_DELAY_BY_DAY);
6687
saveConfiguration();
88+
sendTelemetry(TELEMETRY_VALUE_ACCEPT);
6789
}
6890

6991
public void putOff() {
7092
surveyConfig.nextSurveyDate = LocalDateTime.now().plusDays(PUT_OFF_DELAY_BY_DAY);
7193
saveConfiguration();
94+
sendTelemetry(TELEMETRY_VALUE_PUT_OFF);
7295
}
7396

7497
public void neverShowAgain() {
7598
surveyConfig.isAcceptSurvey = false;
7699
saveConfiguration();
100+
sendTelemetry(TELEMETRY_VALUE_NEVER_SHOW);
77101
}
78102

79103
private boolean isAbleToPopUpSurvey() {
@@ -111,6 +135,16 @@ private File getConfigFile() {
111135
return new File(pluginFolder, SURVEY_CONFIG_FILE);
112136
}
113137

138+
private synchronized void sendTelemetry(String response) {
139+
if (operation == null) {
140+
return;
141+
}
142+
Map<String, String> properties = new HashMap<>();
143+
properties.put(TELEMETRY_KEY_RESPONSE, response);
144+
EventUtil.logEvent(EventType.info, operation, properties);
145+
operation.complete();
146+
}
147+
114148
static class SurveyConfig {
115149
@JsonProperty("surveyTimes")
116150
private int surveyTimes = 0;

Utils/azuretools-core/src/com/microsoft/azuretools/telemetry/TelemetryConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public class TelemetryConstants {
4747
public static final String VFS = "virtualFileSystem";
4848

4949
// operation value
50+
public static final String SURVEY = "survey";
5051
public static final String FEEDBACK = "feedback";
5152
public static final String AZURECODE_SAMPLES = "azure-code-samples";
5253
public static final String LIB_CONFIGURATION = "libraries-configuration";

0 commit comments

Comments
 (0)