Skip to content

Commit 696d1a7

Browse files
committed
feat(knowledge): add KnowledgeWebApiProvider extension #308
- Introduce new extension point `KnowledgeWebApiProvider` for knowledge tree lookup. - Update XML configurations to include the new extension point. - Add documentation for the execution flow in `KnowledgeFunctionProvider`.
1 parent b6c826a commit 696d1a7

File tree

5 files changed

+44
-5
lines changed

5 files changed

+44
-5
lines changed

core/src/223/main/resources/META-INF/autodev-core.xml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,8 +214,11 @@
214214
</extensionPoint>
215215

216216
<!-- Bridge -->
217-
<extensionPoint qualifiedName="cc.unitmesh.uiComponentProvider"
218-
interface="cc.unitmesh.devti.bridge.provider.UiComponentProvider"
217+
<extensionPoint qualifiedName="cc.unitmesh.componentProvider"
218+
interface="cc.unitmesh.devti.bridge.provider.ComponentViewProvider"
219+
dynamic="true"/>
220+
<extensionPoint qualifiedName="cc.unitmesh.knowledgeWebApiProvide"
221+
interface="cc.unitmesh.devti.bridge.provider.KnowledgeWebApiProvider"
219222
dynamic="true"/>
220223
</extensionPoints>
221224

core/src/233/main/resources/META-INF/autodev-core.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,9 @@
217217
<extensionPoint qualifiedName="cc.unitmesh.componentProvider"
218218
interface="cc.unitmesh.devti.bridge.provider.ComponentViewProvider"
219219
dynamic="true"/>
220+
<extensionPoint qualifiedName="cc.unitmesh.knowledgeWebApiProvide"
221+
interface="cc.unitmesh.devti.bridge.provider.KnowledgeWebApiProvider"
222+
dynamic="true"/>
220223
</extensionPoints>
221224

222225
<applicationListeners>

core/src/main/kotlin/cc/unitmesh/devti/bridge/knowledge/KnowledgeFunctionProvider.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ class KnowledgeFunctionProvider : ToolchainFunctionProvider {
1010
override fun isApplicable(project: Project, funcName: String): Boolean =
1111
funcName == KnowledgeTransfer.Knowledge.name
1212

13+
/**
14+
* 1. try use KnowledgeWebApiProvider
15+
*
16+
* 2. try use RipGrep Search by APIs
17+
*
18+
*/
1319
override fun execute(
1420
project: Project,
1521
prop: String,
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package cc.unitmesh.devti.bridge.provider
2+
3+
import com.intellij.openapi.extensions.ExtensionPointName
4+
import com.intellij.openapi.project.Project
5+
import com.intellij.psi.PsiElement
6+
import com.intellij.serviceContainer.LazyExtensionInstance
7+
import com.intellij.util.xmlb.annotations.Attribute
8+
9+
abstract class KnowledgeWebApiProvider : LazyExtensionInstance<KnowledgeWebApiProvider>() {
10+
@Attribute("implementationClass")
11+
var implementationClass: String? = null
12+
13+
override fun getImplementationClassName(): String? = implementationClass
14+
15+
abstract fun isApplicable(project: Project): Boolean
16+
17+
abstract fun lookupKnowledgeTree(project: Project, httpMethod: String, httpUrl: String): List<PsiElement>
18+
19+
companion object {
20+
val EP_NAME: ExtensionPointName<KnowledgeWebApiProvider> =
21+
ExtensionPointName.create("cc.unitmesh.knowledgeWebApiProvide")
22+
23+
fun available(project: Project): List<KnowledgeWebApiProvider> {
24+
return EP_NAME.extensionList.filter { it.isApplicable(project) }
25+
}
26+
}
27+
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
从 Controller 到 Repository 的调用链
2-
/knowledge:BlogController#getBlogBySlug
31
从 API 调用链来进行分析
4-
/knowledge:GET#/api/blog
2+
/knowledge:GET#/api/blog
3+
从 Controller 到 Repository 的调用链
4+
/knowledge:BlogController#getBlogBySlug

0 commit comments

Comments
 (0)