[IFT] Fix Java learning project loading

Seems that SetupJavaProjectFromSourcesActivity is broken and is not used to create projects anymore so let's do not run it and configure compiler output path manually.

IJ-CR-102100

GitOrigin-RevId: b8afb03efe02922c7b9ab5c3c1cdcd1898fb00f1
This commit is contained in:
Konstantin Hudyakov
2023-01-31 08:56:20 +00:00
committed by intellij-monorepo-bot
parent f67d97e0d3
commit 741a9a33d7
2 changed files with 24 additions and 12 deletions
@@ -1,6 +1,8 @@
// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.java.ift
import com.intellij.ide.impl.NewProjectUtil
import com.intellij.ide.impl.OpenProjectTask
import com.intellij.openapi.application.invokeLater
import com.intellij.openapi.application.runInEdt
import com.intellij.openapi.application.runWriteAction
@@ -10,7 +12,9 @@ import com.intellij.openapi.projectRoots.JavaSdkType
import com.intellij.openapi.projectRoots.Sdk
import com.intellij.openapi.projectRoots.ex.JavaSdkUtil
import com.intellij.openapi.roots.ProjectRootManager
import com.intellij.openapi.util.io.FileUtil
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.platform.PlatformProjectOpenProcessor
import training.lang.AbstractLangSupport
import training.project.ProjectUtils
import java.nio.file.Path
@@ -21,12 +25,27 @@ abstract class JavaBasedLangSupport : AbstractLangSupport() {
override fun installAndOpenLearningProject(contentRoot: Path,
projectToClose: Project?,
postInitCallback: (learnProject: Project) -> Unit) {
super.installAndOpenLearningProject(contentRoot, projectToClose) { project ->
val openProjectTask = OpenProjectTask {
this.projectToClose = projectToClose
// It is required to not run SetupJavaProjectFromSourcesActivity because
// Projects created from wizard do not use it now
this.beforeOpen = { project ->
project.putUserData(PlatformProjectOpenProcessor.PROJECT_OPENED_BY_PLATFORM_PROCESSOR, false)
true
}
}
ProjectUtils.simpleInstallAndOpenLearningProject(contentRoot, this, openProjectTask) { project ->
val projectPath = FileUtil.toSystemIndependentName(contentRoot.toString())
val outputPath = projectPath.removeSuffix("/") + "/out"
NewProjectUtil.setCompilerOutputPath(project, outputPath)
JavaProjectUtil.findJavaSdkAsync(project) { sdk ->
if (sdk != null) {
applyProjectSdk(sdk, project)
runInEdt {
if (sdk != null) {
applyProjectSdk(sdk, project)
}
postInitCallback(project)
}
postInitCallback(project)
}
}
}
@@ -39,9 +58,7 @@ abstract class JavaBasedLangSupport : AbstractLangSupport() {
val applySdkAction = {
runWriteAction { JavaSdkUtil.applyJdkToProject(project, sdk) }
}
runInEdt {
CommandProcessor.getInstance().executeCommand(project, applySdkAction, null, null)
}
CommandProcessor.getInstance().executeCommand(project, applySdkAction, null, null)
}
override fun applyToProjectAfterConfigure(): (Project) -> Unit = { newProject ->
@@ -8,7 +8,6 @@ import com.intellij.openapi.application.runReadAction
import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.progress.runBackgroundableTask
import com.intellij.openapi.project.Project
import com.intellij.platform.PlatformProjectOpenProcessor
import org.jetbrains.kotlin.idea.configuration.KotlinJavaModuleConfigurator
import org.jetbrains.kotlin.idea.configuration.NotificationMessageCollector
import org.jetbrains.kotlin.idea.formatter.KotlinStyleGuideCodeStyle
@@ -30,10 +29,6 @@ class KotlinLangSupport : JavaBasedLangSupport() {
postInitCallback: (learnProject: Project) -> Unit
) {
super.installAndOpenLearningProject(contentRoot, projectToClose) { project ->
// It is required to not run SetupJavaProjectFromSourcesActivity because
// it will overwrite our manual setup of KotlinJavaRuntime library
project.putUserData(PlatformProjectOpenProcessor.PROJECT_OPENED_BY_PLATFORM_PROCESSOR, false)
setupKotlin(project)
postInitCallback(project)
}