Skip to content

Commit 4c60394

Browse files
Get rid of "Android" plugin dependency #934 (#935)
1 parent 3752523 commit 4c60394

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/ui/utils/ModuleUtils.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package org.utbot.intellij.plugin.ui.utils
22

3-
import com.android.tools.idea.gradle.project.GradleProjectInfo
43
import org.utbot.common.PathUtil.toPath
54
import org.utbot.common.WorkaroundReason
65
import org.utbot.common.workaround
76
import org.utbot.framework.plugin.api.CodegenLanguage
87
import org.utbot.intellij.plugin.ui.CommonErrorNotifier
98
import org.utbot.intellij.plugin.ui.UnsupportedJdkNotifier
109
import com.intellij.openapi.command.WriteCommandAction
10+
import com.intellij.openapi.externalSystem.model.ProjectSystemId
11+
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
1112
import com.intellij.openapi.module.Module
1213
import com.intellij.openapi.module.ModuleManager
1314
import com.intellij.openapi.module.ModuleUtilCore
@@ -147,8 +148,12 @@ private fun Module.suitableTestSourceFolders(codegenLanguage: CodegenLanguage):
147148
// Heuristics: User is more likely to choose the shorter path
148149
.sortedBy { it.url.length }
149150
}
150-
val Project.isBuildWithGradle
151-
get() = GradleProjectInfo.getInstance(this).isBuildWithGradle
151+
private val GRADLE_SYSTEM_ID = ProjectSystemId("GRADLE")
152+
153+
val Project.isBuildWithGradle get() =
154+
ModuleManager.getInstance(this).modules.any {
155+
ExternalSystemApiUtil.isExternalSystemAwareModule(GRADLE_SYSTEM_ID, it)
156+
}
152157

153158
private const val dedicatedTestSourceRootName = "utbot_tests"
154159
fun Module.addDedicatedTestRoot(testSourceRoots: MutableList<VirtualFile>): VirtualFile? {

utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/util/IntelliJApiHelper.kt

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package org.utbot.intellij.plugin.util
22

3-
import com.android.tools.idea.IdeInfo
4-
import com.android.tools.idea.gradle.util.GradleProjectSettingsFinder
53
import com.intellij.ide.plugins.PluginManagerCore
64
import com.intellij.openapi.application.runReadAction
75
import com.intellij.openapi.application.runWriteAction
86
import com.intellij.openapi.extensions.PluginId
97
import com.intellij.openapi.project.Project
8+
import com.intellij.util.PlatformUtils
9+
import com.intellij.util.ReflectionUtil
1010
import com.intellij.util.concurrency.AppExecutorUtil
1111
import org.jetbrains.kotlin.idea.util.application.invokeLater
1212
import org.utbot.framework.plugin.api.util.UtContext
@@ -37,10 +37,19 @@ object IntelliJApiHelper {
3737
private val isAndroidPluginAvailable: Boolean = !PluginManagerCore.isDisabled(PluginId.getId("org.jetbrains.android"))
3838

3939
fun isAndroidStudio(): Boolean =
40-
isAndroidPluginAvailable && IdeInfo.getInstance().isAndroidStudio
40+
isAndroidPluginAvailable && ("AndroidStudio" == PlatformUtils.getPlatformPrefix())
4141

4242
fun androidGradleSDK(project: Project): String? {
43-
return if (isAndroidPluginAvailable) GradleProjectSettingsFinder.getInstance().findGradleProjectSettings(project)?.gradleJvm
44-
else null
43+
if (!isAndroidPluginAvailable) return null
44+
try {
45+
val finderClass = Class.forName("com.android.tools.idea.gradle.util.GradleProjectSettingsFinder")
46+
var method = ReflectionUtil.getMethod(finderClass, "findGradleProjectSettings", Project::class.java)?: return null
47+
val gradleProjectSettings = method.invoke(project)?: return null
48+
method = ReflectionUtil.getMethod(gradleProjectSettings.javaClass, "getGradleJvm")?: return null
49+
val gradleJvm = method.invoke(gradleProjectSettings)
50+
return if (gradleJvm is String) gradleJvm else null
51+
} catch (e: Exception) {
52+
return null
53+
}
4554
}
4655
}

0 commit comments

Comments
 (0)