Skip to content

Commit

Permalink
feat(java-toolchain): replace JavaTasksUtil with GradleTasksUtil #18
Browse files Browse the repository at this point in the history
Refactored the Java toolchain to use GradleTasksUtil instead of JavaTasksUtil. This includes changes in JavaBuildSystemProvider and JavaRunProjectService. Also, added a new class GradleBuildTool and removed JavaLibraryConverter. The BuildTool interface was updated to return nullable List of CommonLibraryData.
  • Loading branch information
phodal committed Jun 21, 2024
1 parent 39f4783 commit 83c5e00
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import com.intellij.openapi.externalSystem.service.project.ProjectDataManager
import com.intellij.openapi.project.Project
import com.phodal.shirecore.buildsystem.BuildSystemContext
import com.phodal.shirecore.provider.context.BuildSystemProvider
import com.phodal.shirelang.java.toolchain.JavaTasksUtil
import com.phodal.shirelang.java.toolchain.GradleTasksUtil
import com.phodal.shirelang.java.toolchain.JavaLanguageDetector
import org.jetbrains.plugins.gradle.util.GradleConstants

Expand All @@ -17,7 +17,7 @@ open class JavaBuildSystemProvider : BuildSystemProvider() {
val gradleInfo = projectDataManager.getExternalProjectsData(project, GradleConstants.SYSTEM_ID)
if (gradleInfo.isNotEmpty()) {
buildToolName = "Gradle"
taskString = JavaTasksUtil.collectGradleTasks(project).joinToString(" ") { it.text }
taskString = GradleTasksUtil.collectGradleTasks(project).joinToString(" ") { it.text }
} else {
buildToolName = "Maven"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import com.intellij.openapi.roots.ProjectRootManager
import com.intellij.util.SmartList
import com.phodal.shirecore.provider.shire.ProjectRunService
import com.phodal.shirecore.runner.ConfigurationRunner
import com.phodal.shirelang.java.toolchain.JavaTasksUtil
import com.phodal.shirelang.java.toolchain.GradleTasksUtil
import icons.GradleIcons

class JavaRunProjectService : ProjectRunService, ConfigurationRunner {
Expand All @@ -20,7 +20,7 @@ class JavaRunProjectService : ProjectRunService, ConfigurationRunner {
}

override fun run(project: Project, taskName: String) {
val runConfiguration = JavaTasksUtil.configureGradleRun(project, taskName)
val runConfiguration = GradleTasksUtil.configureGradleRun(project, taskName)
executeRunConfigurations(project, runConfiguration)
}

Expand All @@ -30,7 +30,7 @@ class JavaRunProjectService : ProjectRunService, ConfigurationRunner {
result: CompletionResultSet,
): List<LookupElement> {
val lookupElements: MutableList<LookupElement> = SmartList()
JavaTasksUtil.collectGradleTasksData(project).filter {
GradleTasksUtil.collectGradleTasksData(project).filter {
!it.isTest && !it.isJvmTest

Check warning on line 34 in languages/java/src/main/kotlin/com/phodal/shirelang/java/impl/JavaRunProjectService.kt

View workflow job for this annotation

GitHub Actions / Qodana Community for JVM

Unstable API Usage

'isJvmTest' is declared in unstable 'org.jetbrains.plugins.gradle.util.GradleTaskData' marked with @ApiStatus.Experimental

Check warning on line 34 in languages/java/src/main/kotlin/com/phodal/shirelang/java/impl/JavaRunProjectService.kt

View workflow job for this annotation

GitHub Actions / Qodana Community for JVM

Unstable API Usage

'isTest' is declared in unstable 'org.jetbrains.plugins.gradle.util.GradleTaskData' marked with @ApiStatus.Experimental
}.forEach {
val element = LookupElementBuilder.create(it.getFqnTaskName())

Check warning on line 36 in languages/java/src/main/kotlin/com/phodal/shirelang/java/impl/JavaRunProjectService.kt

View workflow job for this annotation

GitHub Actions / Qodana Community for JVM

Unstable API Usage

'getFqnTaskName()' is declared in unstable 'org.jetbrains.plugins.gradle.util.GradleTaskData' marked with @ApiStatus.Experimental
Expand All @@ -44,6 +44,6 @@ class JavaRunProjectService : ProjectRunService, ConfigurationRunner {
}

override fun tasks(project: Project): List<String> {
return JavaTasksUtil.collectGradleTasksData(project).map { it.getFqnTaskName() }
return GradleTasksUtil.collectGradleTasksData(project).map { it.getFqnTaskName() }

Check warning on line 47 in languages/java/src/main/kotlin/com/phodal/shirelang/java/impl/JavaRunProjectService.kt

View workflow job for this annotation

GitHub Actions / Qodana Community for JVM

Unstable API Usage

'getFqnTaskName()' is declared in unstable 'org.jetbrains.plugins.gradle.util.GradleTaskData' marked with @ApiStatus.Experimental
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,11 @@ import com.intellij.openapi.vfs.VirtualFile
* Implementations of this interface are expected to provide specific functionality for different build tools.
*/
interface BuildTool {
fun prepareLibraryData(project: Project): List<CommonLibraryData>
fun prepareLibraryData(project: Project): List<CommonLibraryData>?

fun collectTasks(project: Project): List<TextCompletionInfo>

fun configureRun(project: Project, virtualFile: VirtualFile, taskName: String): LocatableConfigurationBase<*>?
}

data class CommonLibraryData(val groupId: String?, val artifactId: String?, val version: String?)
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
package com.phodal.shirelang.java.toolchain

import com.intellij.execution.configurations.LocatableConfigurationBase
import com.intellij.openapi.externalSystem.model.project.LibraryData
import com.intellij.openapi.externalSystem.service.project.ProjectDataManager
import com.intellij.openapi.externalSystem.service.ui.completion.TextCompletionInfo
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.VirtualFile
import org.jetbrains.plugins.gradle.util.GradleConstants

data class CommonLibraryData(val groupId: String?, val artifactId: String?, val version: String?)

object JavaLibraryConverter {
fun prepareLibraryData(project: Project): List<CommonLibraryData>? {
return prepareGradleLibrary(project) ?: MavenBuildTool().prepareLibraryData(project)
}

fun prepareGradleLibrary(project: Project): List<CommonLibraryData>? {
class GradleBuildTool: BuildTool {
override fun prepareLibraryData(project: Project): List<CommonLibraryData>? {
val basePath = project.basePath ?: return null
val projectData = ProjectDataManager.getInstance().getExternalProjectData(
project, GradleConstants.SYSTEM_ID, basePath
Expand All @@ -30,4 +27,16 @@ object JavaLibraryConverter {
CommonLibraryData(it.groupId, it.artifactId, it.version)
}
}

override fun collectTasks(project: Project): List<TextCompletionInfo> {
TODO("Not yet implemented")
}

override fun configureRun(
project: Project,
virtualFile: VirtualFile,
taskName: String,
): LocatableConfigurationBase<*>? {
TODO("Not yet implemented")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import org.jetbrains.plugins.gradle.service.execution.GradleRunConfiguration
import org.jetbrains.plugins.gradle.service.project.GradleTasksIndices
import org.jetbrains.plugins.gradle.util.GradleTaskData

object JavaTasksUtil {
object GradleTasksUtil {
fun collectGradleTasks(project: Project): List<TextCompletionInfo> {
val indices = GradleTasksIndices.getInstance(project)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ import com.phodal.shirelang.java.archmeta.SpringLibrary

object TechStackConverter {

Check warning on line 8 in languages/java/src/main/kotlin/com/phodal/shirelang/java/toolchain/TechStackConverter.kt

View workflow job for this annotation

GitHub Actions / Qodana Community for JVM

Unused symbol

Object "TechStackConverter" is never used
fun convertTechStack(project: Project): TechStack {

Check warning on line 9 in languages/java/src/main/kotlin/com/phodal/shirelang/java/toolchain/TechStackConverter.kt

View workflow job for this annotation

GitHub Actions / Qodana Community for JVM

Unused symbol

Function "convertTechStack" is never used
val libraryDataList = JavaLibraryConverter.prepareLibraryData(project)
val libraryDataList =
GradleBuildTool().prepareLibraryData(project) ?: MavenBuildTool().prepareLibraryData(project)

val techStack = TechStack()
var hasMatchSpringMvc = false
Expand Down

0 comments on commit 83c5e00

Please sign in to comment.