@@ -2,21 +2,29 @@ package cc.unitmesh.endpoints.bridge
2
2
3
3
import cc.unitmesh.devti.bridge.ArchViewCommand
4
4
import cc.unitmesh.devti.provider.toolchain.ToolchainFunctionProvider
5
+ import com.intellij.facet.FacetManager
5
6
import com.intellij.microservices.endpoints.EndpointsProvider
6
7
import com.intellij.openapi.application.runReadAction
8
+ import com.intellij.openapi.module.ModuleManager
7
9
import com.intellij.openapi.progress.ProgressIndicator
8
10
import com.intellij.openapi.progress.ProgressManager
9
11
import com.intellij.openapi.progress.Task
10
12
import com.intellij.openapi.progress.impl.BackgroundableProcessIndicator
11
13
import com.intellij.openapi.project.Project
12
14
import com.intellij.openapi.util.NlsSafe
15
+ import com.intellij.spring.SpringManager
16
+ import com.intellij.spring.contexts.model.CombinedSpringModel
17
+ import com.intellij.spring.contexts.model.CombinedSpringModelImpl
18
+ import com.intellij.spring.contexts.model.SpringModel
19
+ import com.intellij.spring.facet.SpringFacet
13
20
import com.intellij.spring.mvc.mapping.UrlMappingElement
14
21
import java.util.concurrent.CompletableFuture
15
22
16
23
class WebApiViewFunctionProvider : ToolchainFunctionProvider {
17
24
override suspend fun funcNames (): List <String > = listOf (ArchViewCommand .WebApiView .name)
18
25
19
- override suspend fun isApplicable (project : Project , funcName : String ): Boolean = funcName == ArchViewCommand .WebApiView .name
26
+ override suspend fun isApplicable (project : Project , funcName : String ): Boolean =
27
+ funcName == ArchViewCommand .WebApiView .name
20
28
21
29
override suspend fun execute (
22
30
project : Project ,
@@ -52,12 +60,32 @@ class WebApiViewFunctionProvider : ToolchainFunctionProvider {
52
60
}
53
61
}
54
62
63
+ // val springFacets = getAllSpringFacets(project).map {
64
+ // SpringFileSetService.getInstance().getAllSets(it)
65
+ // }
66
+
67
+
55
68
ProgressManager .getInstance()
56
69
.runProcessWithProgressAsynchronously(task, BackgroundableProcessIndicator (task))
57
70
58
71
return future.get()
59
72
}
60
73
74
+ private fun getCombinedModelForProject (project : Project ): CombinedSpringModel {
75
+ val allCombinedModels: MutableSet <SpringModel > = LinkedHashSet <SpringModel >()
76
+ for (module in ModuleManager .getInstance(project).modules) {
77
+ val allModels = SpringManager .getInstance(project).getAllModelsWithoutDependencies(module)
78
+ allCombinedModels.addAll(allModels!! )
79
+ }
80
+ return CombinedSpringModelImpl (allCombinedModels, null )
81
+ }
82
+
83
+ fun getAllSpringFacets (project : Project ): List <SpringFacet > {
84
+ return ModuleManager .getInstance(project).modules.mapNotNull { module ->
85
+ FacetManager .getInstance(module).getFacetByType(SpringFacet .FACET_TYPE_ID )
86
+ }
87
+ }
88
+
61
89
private fun formatUrl (url : Any ): String = when (url) {
62
90
is UrlMappingElement -> url.method.joinToString(" \n " ) {
63
91
" $it - ${url.urlPath.toStringWithStars()} " +
0 commit comments