Skip to content

Commit 682642f

Browse files
committed
feat(endpoints): add Spring support and refine endpoint detection #287
- Add Spring and Spring MVC plugins to IntelliJ platform dependencies. - Include Spring-related plugins in `ext-endpoints` dependencies. - Refactor `EndpointsContextProvider` to filter and map Spring-related endpoints.
1 parent 7c60472 commit 682642f

File tree

3 files changed

+14
-10
lines changed

3 files changed

+14
-10
lines changed

build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,7 @@ project(":") {
283283
implementation(project(":exts:ext-terminal"))
284284
implementation(project(":exts:ext-mermaid"))
285285
implementation(project(":exts:ext-plantuml"))
286+
implementation(project(":exts:ext-endpoints"))
286287
implementation(project(":exts:devins-lang"))
287288

288289
kover(project(":core"))
@@ -615,6 +616,7 @@ project(":exts:ext-endpoints") {
615616
intellijPlatform {
616617
intellijIde(prop("ideaVersion"))
617618
intellijPlugins(ideaPlugins + prop("endpointsPlugin"))
619+
intellijPlugins(listOf("com.intellij.spring", "com.intellij.spring.mvc"))
618620
}
619621

620622
implementation(project(":core"))

exts/ext-endpoints/src/main/kotlin/cc/unitmesh/endpoints/provider/EndpointsContextProvider.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@ import cc.unitmesh.devti.provider.context.ChatContextItem
44
import cc.unitmesh.devti.provider.context.ChatContextProvider
55
import cc.unitmesh.devti.provider.context.ChatCreationContext
66
import com.intellij.microservices.endpoints.EndpointsProvider
7+
import com.intellij.microservices.endpoints.EndpointsUrlTargetProvider
8+
import com.intellij.microservices.oas.serialization.getOpenApiSpecification
79
import com.intellij.openapi.application.runReadAction
810
import com.intellij.openapi.project.Project
11+
import com.intellij.spring.model.SpringBeanPointer
12+
import com.intellij.spring.mvc.mapping.UrlMappingElement
913

1014
class EndpointsContextProvider : ChatContextProvider {
1115
override fun isApplicable(project: Project, creationContext: ChatCreationContext): Boolean {
@@ -19,17 +23,13 @@ class EndpointsContextProvider : ChatContextProvider {
1923
val model = runReadAction { EndpointsProvider.getAvailableProviders(project).toList() }
2024
if (model.isEmpty()) return emptyList()
2125

22-
val availableProviders = model.filter { it.getStatus(project) == EndpointsProvider.Status.HAS_ENDPOINTS }
26+
val availableProviders = model
27+
.filter { it.getStatus(project) == EndpointsProvider.Status.HAS_ENDPOINTS }
28+
.filterIsInstance<EndpointsUrlTargetProvider<SpringBeanPointer<*>, UrlMappingElement>>()
2329

24-
if (availableProviders.isNotEmpty()) {
25-
val infos = availableProviders.mapNotNull {
26-
val text = "This project has endpoints from ${it.javaClass.simpleName}"
27-
return@mapNotNull ChatContextItem(EndpointsContextProvider::class, text)
28-
}.toList()
29-
30-
return infos
30+
return availableProviders.map {
31+
val text = "This project has http endpoints from ${it.presentation}"
32+
ChatContextItem(EndpointsContextProvider::class, text)
3133
}
32-
33-
return emptyList()
3434
}
3535
}

exts/ext-endpoints/src/main/resources/cc.unitmesh.endpoints.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
<!--suppress PluginXmlValidity -->
33
<dependencies>
44
<plugin id="com.intellij.microservices.ui"/>
5+
<plugin id="com.intellij.spring"/>
6+
<plugin id="com.intellij.spring.mvc"/>
57
</dependencies>
68

79
<extensions defaultExtensionNs="cc.unitmesh">

0 commit comments

Comments
 (0)