Skip to content

Commit 845a60d

Browse files
committed
feat: optimize configuration loading logic for enhanced efficiency and reliability
1 parent e1be9fe commit 845a60d

File tree

45 files changed

+555
-628
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+555
-628
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ plugin_version=2.6.8.212.0
33
kotlin.code.style=official
44
kotlin_version=1.8.0
55
junit_version=5.9.2
6-
itangcent_intellij_version=1.6.2
6+
itangcent_intellij_version=1.6.23-SNAPSHOT

idea-plugin/src/main/kotlin/com/itangcent/idea/binder/DbBeanBinder.kt

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ package com.itangcent.idea.binder
33
import com.google.common.cache.Cache
44
import com.google.common.cache.CacheBuilder
55
import com.itangcent.idea.sqlite.SqliteDataResourceHelper
6+
import com.itangcent.idea.sqlite.delete
7+
import com.itangcent.idea.sqlite.get
8+
import com.itangcent.idea.sqlite.set
69
import com.itangcent.idea.utils.JacksonUtils
710
import com.itangcent.intellij.context.ActionContext
811
import com.itangcent.intellij.file.BeanBinder
@@ -16,40 +19,35 @@ class DbBeanBinderFactory<T : Any>(private val file: String, protected var init:
1619
}
1720

1821
private var dbBeanBinderCache: Cache<String, BeanBinder<T>> = CacheBuilder.newBuilder()
19-
.maximumSize(20)
20-
.build()
22+
.maximumSize(20)
23+
.build()
2124

2225
fun getBeanBinder(beanBindName: String): BeanBinder<T> {
2326
return dbBeanBinderCache.get(beanBindName) { DbBeanBinder(beanBindName) }
2427
}
2528

2629
fun deleteBinder(beanBindName: String) {
27-
dao.delete(beanBindName.toByteArray())
30+
dao.delete(beanBindName)
2831
}
2932

30-
inner class DbBeanBinder : BeanBinder<T> {
31-
private val beanBindName: String
32-
33-
constructor(beanBindName: String) {
34-
this.beanBindName = beanBindName
35-
}
33+
inner class DbBeanBinder(private val beanBindName: String) : BeanBinder<T> {
3634

3735
override fun tryRead(): T? {
38-
return dao.get(beanBindName.toByteArray())
39-
?.let { JacksonUtils.fromJson<T>(String(it)) }
36+
return dao.get(beanBindName)
37+
?.let { JacksonUtils.fromJson<T>(it) }
4038
}
4139

4240
override fun read(): T {
43-
return dao.get(beanBindName.toByteArray())
44-
?.let { JacksonUtils.fromJson<T>(String(it)) }
45-
?: return init()
41+
return dao.get(beanBindName)
42+
?.let { JacksonUtils.fromJson<T>(it) }
43+
?: return init()
4644
}
4745

4846
override fun save(t: T?) {
4947
if (t == null) {
50-
dao.delete(beanBindName.toByteArray())
48+
dao.delete(beanBindName)
5149
} else {
52-
dao.set(beanBindName.toByteArray(), JacksonUtils.toJson(t).toByteArray())
50+
dao.set(beanBindName, JacksonUtils.toJson(t))
5351
}
5452
}
5553
}

idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/actions/ApiCallAction.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@ import com.itangcent.idea.plugin.api.call.ApiCaller
77
import com.itangcent.idea.plugin.api.export.ExportDoc
88
import com.itangcent.idea.plugin.api.export.core.ClassExporter
99
import com.itangcent.idea.plugin.api.export.core.CompositeClassExporter
10-
import com.itangcent.idea.plugin.api.export.core.EasyApiConfigReader
11-
import com.itangcent.idea.plugin.config.RecommendConfigReader
12-
import com.itangcent.intellij.config.ConfigReader
1310
import com.itangcent.intellij.context.ActionContext
1411
import com.itangcent.intellij.extend.guice.singleton
1512
import com.itangcent.intellij.extend.guice.with
@@ -34,9 +31,6 @@ class ApiCallAction : ApiExportAction("Call Api") {
3431

3532
builder.bind(ClassExporter::class) { it.with(CachedRequestClassExporter::class).singleton() }
3633

37-
builder.bind(ConfigReader::class, "delegate_config_reader") { it.with(EasyApiConfigReader::class).singleton() }
38-
builder.bind(ConfigReader::class) { it.with(RecommendConfigReader::class).singleton() }
39-
4034
builder.bind(HttpClientProvider::class) { it.with(ConfigurableHttpClientProvider::class).singleton() }
4135

4236
builder.bind(ApiCaller::class) { it.singleton() }

idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/actions/ApiDashBoardAction.kt

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,14 @@ import com.itangcent.idea.plugin.api.cache.CachedRequestClassExporter
66
import com.itangcent.idea.plugin.api.dashboard.ApiDashBoard
77
import com.itangcent.idea.plugin.api.export.ExportChannel
88
import com.itangcent.idea.plugin.api.export.ExportDoc
9-
import com.itangcent.idea.plugin.api.export.core.*
9+
import com.itangcent.idea.plugin.api.export.core.ClassExporter
10+
import com.itangcent.idea.plugin.api.export.core.CompositeClassExporter
11+
import com.itangcent.idea.plugin.api.export.core.CompositeRequestBuilderListener
12+
import com.itangcent.idea.plugin.api.export.core.RequestBuilderListener
1013
import com.itangcent.idea.plugin.api.export.postman.PostmanApiHelper
1114
import com.itangcent.idea.plugin.api.export.postman.PostmanCachedApiHelper
12-
import com.itangcent.idea.plugin.api.export.postman.PostmanConfigReader
13-
import com.itangcent.idea.plugin.api.export.postman.PostmanRequestBuilderListener
14-
import com.itangcent.idea.plugin.config.RecommendConfigReader
1515
import com.itangcent.idea.swing.ActiveWindowProvider
1616
import com.itangcent.idea.swing.SimpleActiveWindowProvider
17-
import com.itangcent.intellij.config.ConfigReader
1817
import com.itangcent.intellij.context.ActionContext
1918
import com.itangcent.intellij.extend.guice.singleton
2019
import com.itangcent.intellij.extend.guice.with
@@ -37,11 +36,8 @@ class ApiDashBoardAction : ApiExportAction("ApiDashBoard") {
3736

3837
builder.bindInstance(ExportChannel::class, ExportChannel.of("postman"))
3938
builder.bindInstance(ExportDoc::class, ExportDoc.of("request"))
40-
41-
builder.bind(ClassExporter::class) { it.with(CachedRequestClassExporter::class).singleton() }
4239

43-
builder.bind(ConfigReader::class, "delegate_config_reader") { it.with(PostmanConfigReader::class).singleton() }
44-
builder.bind(ConfigReader::class) { it.with(RecommendConfigReader::class).singleton() }
40+
builder.bind(ClassExporter::class) { it.with(CachedRequestClassExporter::class).singleton() }
4541
builder.bind(HttpClientProvider::class) { it.with(ConfigurableHttpClientProvider::class).singleton() }
4642

4743
builder.bind(RequestBuilderListener::class) { it.with(CompositeRequestBuilderListener::class).singleton() }

idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/actions/ApiExportAction.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ import com.itangcent.idea.plugin.api.cache.FileApiCacheRepository
77
import com.itangcent.idea.plugin.api.cache.ProjectCacheRepository
88
import com.itangcent.idea.plugin.api.export.core.ClassExporter
99
import com.itangcent.idea.plugin.api.export.spring.SpringRequestClassExporter
10+
import com.itangcent.idea.plugin.config.EnhancedConfigReader
1011
import com.itangcent.idea.plugin.rule.SuvRuleParser
1112
import com.itangcent.idea.utils.CustomizedPsiClassHelper
1213
import com.itangcent.idea.utils.RuleComputeListenerRegistry
14+
import com.itangcent.intellij.config.ConfigReader
1315
import com.itangcent.intellij.config.rule.RuleComputeListener
1416
import com.itangcent.intellij.config.rule.RuleParser
1517
import com.itangcent.intellij.context.ActionContext
@@ -18,7 +20,6 @@ import com.itangcent.intellij.extend.guice.singleton
1820
import com.itangcent.intellij.extend.guice.with
1921
import com.itangcent.intellij.file.LocalFileRepository
2022
import com.itangcent.intellij.jvm.PsiClassHelper
21-
import com.itangcent.intellij.util.ActionUtils
2223

2324
abstract class ApiExportAction(text: String) : BasicAnAction(text) {
2425

@@ -35,6 +36,8 @@ abstract class ApiExportAction(text: String) : BasicAnAction(text) {
3536
builder.bind(LocalFileRepository::class, "projectCacheRepository") {
3637
it.with(ProjectCacheRepository::class).singleton()
3738
}
39+
40+
builder.bind(ConfigReader::class) { it.with(EnhancedConfigReader::class).singleton() }
3841
}
3942

4043
override fun actionPerformed(actionContext: ActionContext, project: Project?, anActionEvent: AnActionEvent) {

idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/actions/FieldsToMessageAction.kt

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,9 @@ import com.intellij.psi.PsiClass
77
import com.intellij.psi.PsiType
88
import com.itangcent.common.logger.traceError
99
import com.itangcent.idea.plugin.api.cache.ProjectCacheRepository
10-
import com.itangcent.idea.plugin.api.export.core.EasyApiConfigReader
11-
import com.itangcent.idea.plugin.config.RecommendConfigReader
12-
import com.itangcent.idea.plugin.format.MessageFormatter
1310
import com.itangcent.idea.plugin.rule.SuvRuleParser
1411
import com.itangcent.idea.utils.CustomizedPsiClassHelper
1512
import com.itangcent.idea.utils.RuleComputeListenerRegistry
16-
import com.itangcent.intellij.config.ConfigReader
1713
import com.itangcent.intellij.config.rule.RuleComputeListener
1814
import com.itangcent.intellij.config.rule.RuleParser
1915
import com.itangcent.intellij.context.ActionContext
@@ -58,9 +54,6 @@ abstract class FieldsToMessageAction : BasicAnAction {
5854
it.with(ProjectCacheRepository::class).singleton()
5955
}
6056

61-
builder.bind(ConfigReader::class, "delegate_config_reader") { it.with(EasyApiConfigReader::class).singleton() }
62-
builder.bind(ConfigReader::class) { it.with(RecommendConfigReader::class).singleton() }
63-
6457
builder.bind(RuleComputeListener::class) { it.with(RuleComputeListenerRegistry::class).singleton() }
6558
builder.bind(PsiClassHelper::class) { it.with(CustomizedPsiClassHelper::class).singleton() }
6659
}

idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/actions/MarkdownExportAction.kt

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,11 @@ import com.intellij.openapi.actionSystem.AnActionEvent
44
import com.intellij.openapi.project.Project
55
import com.itangcent.idea.plugin.api.export.ExportChannel
66
import com.itangcent.idea.plugin.api.export.ExportDoc
7-
import com.itangcent.idea.plugin.api.export.condition.ConditionOnSimple
8-
import com.itangcent.idea.plugin.api.export.core.*
9-
import com.itangcent.idea.plugin.api.export.generic.GenericMethodDocClassExporter
10-
import com.itangcent.idea.plugin.api.export.generic.GenericRequestClassExporter
7+
import com.itangcent.idea.plugin.api.export.core.ClassExporter
8+
import com.itangcent.idea.plugin.api.export.core.CompositeClassExporter
9+
import com.itangcent.idea.plugin.api.export.core.ConfigurableMethodFilter
10+
import com.itangcent.idea.plugin.api.export.core.MethodFilter
1111
import com.itangcent.idea.plugin.api.export.markdown.MarkdownApiExporter
12-
import com.itangcent.idea.plugin.api.export.spring.SpringRequestClassExporter
13-
import com.itangcent.idea.plugin.config.RecommendConfigReader
14-
import com.itangcent.intellij.config.ConfigReader
1512
import com.itangcent.intellij.context.ActionContext
1613
import com.itangcent.intellij.extend.guice.singleton
1714
import com.itangcent.intellij.extend.guice.with
@@ -24,10 +21,6 @@ class MarkdownExportAction : ApiExportAction("Export Markdown") {
2421
super.afterBuildActionContext(event, builder)
2522

2623
builder.bind(LocalFileRepository::class) { it.with(DefaultLocalFileRepository::class).singleton() }
27-
28-
builder.bind(ConfigReader::class, "delegate_config_reader") { it.with(EasyApiConfigReader::class).singleton() }
29-
builder.bind(ConfigReader::class) { it.with(RecommendConfigReader::class).singleton() }
30-
3124
builder.bind(ClassExporter::class) { it.with(CompositeClassExporter::class).singleton() }
3225

3326
builder.bindInstance(ExportChannel::class, ExportChannel.of("markdown"))

idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/actions/PostmanExportAction.kt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ import com.intellij.openapi.project.Project
55
import com.itangcent.idea.plugin.api.export.ExportChannel
66
import com.itangcent.idea.plugin.api.export.ExportDoc
77
import com.itangcent.idea.plugin.api.export.core.*
8-
import com.itangcent.idea.plugin.api.export.postman.*
9-
import com.itangcent.idea.plugin.config.RecommendConfigReader
10-
import com.itangcent.intellij.config.ConfigReader
8+
import com.itangcent.idea.plugin.api.export.postman.PostmanApiExporter
9+
import com.itangcent.idea.plugin.api.export.postman.PostmanApiHelper
10+
import com.itangcent.idea.plugin.api.export.postman.PostmanCachedApiHelper
11+
import com.itangcent.idea.plugin.api.export.postman.PostmanFormatFolderHelper
1112
import com.itangcent.intellij.context.ActionContext
1213
import com.itangcent.intellij.extend.guice.singleton
1314
import com.itangcent.intellij.extend.guice.with
@@ -27,10 +28,6 @@ class PostmanExportAction : ApiExportAction("Export Postman") {
2728

2829
builder.bind(PostmanApiHelper::class) { it.with(PostmanCachedApiHelper::class).singleton() }
2930
builder.bind(HttpClientProvider::class) { it.with(ConfigurableHttpClientProvider::class).singleton() }
30-
31-
builder.bind(ConfigReader::class, "delegate_config_reader") { it.with(PostmanConfigReader::class).singleton() }
32-
builder.bind(ConfigReader::class) { it.with(RecommendConfigReader::class).singleton() }
33-
3431
builder.bind(ClassExporter::class) { it.with(CompositeClassExporter::class).singleton() }
3532

3633
builder.bindInstance(ExportChannel::class, ExportChannel.of("postman"))

idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/actions/ScriptExecutorAction.kt

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,7 @@ import com.intellij.openapi.project.Project
55
import com.itangcent.idea.plugin.api.cache.CachedRequestClassExporter
66
import com.itangcent.idea.plugin.api.debug.ScriptExecutor
77
import com.itangcent.idea.plugin.api.export.core.ClassExporter
8-
import com.itangcent.idea.plugin.api.export.core.EasyApiConfigReader
98
import com.itangcent.idea.plugin.api.export.spring.SpringRequestClassExporter
10-
import com.itangcent.idea.plugin.config.RecommendConfigReader
11-
import com.itangcent.intellij.config.ConfigReader
129
import com.itangcent.intellij.context.ActionContext
1310
import com.itangcent.intellij.extend.guice.singleton
1411
import com.itangcent.intellij.extend.guice.with
@@ -23,12 +20,10 @@ class ScriptExecutorAction : ApiExportAction("ScriptExecutor") {
2320
builder.bind(LocalFileRepository::class) { it.with(DefaultLocalFileRepository::class).singleton() }
2421

2522
//allow cache api
26-
builder.bind(ClassExporter::class, "delegate_classExporter") { it.with(SpringRequestClassExporter::class).singleton() }
23+
builder.bind(ClassExporter::class, "delegate_classExporter") {
24+
it.with(SpringRequestClassExporter::class).singleton()
25+
}
2726
builder.bind(ClassExporter::class) { it.with(CachedRequestClassExporter::class).singleton() }
28-
29-
builder.bind(ConfigReader::class, "delegate_config_reader") { it.with(EasyApiConfigReader::class).singleton() }
30-
builder.bind(ConfigReader::class) { it.with(RecommendConfigReader::class).singleton() }
31-
3227
builder.bindInstance("file.save.default", "script.txt")
3328
builder.bindInstance("file.save.last.location.key", "com.itangcent.debug.loadOrSave.path")
3429

idea-plugin/src/main/kotlin/com/itangcent/idea/plugin/actions/SuvExportAction.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@ import com.intellij.openapi.project.Project
77
import com.itangcent.idea.plugin.DataEventCollector
88
import com.itangcent.idea.plugin.api.export.ExportDoc
99
import com.itangcent.idea.plugin.api.export.condition.markAsSimple
10-
import com.itangcent.idea.plugin.api.export.core.*
10+
import com.itangcent.idea.plugin.api.export.core.ClassExporter
11+
import com.itangcent.idea.plugin.api.export.core.CompositeClassExporter
12+
import com.itangcent.idea.plugin.api.export.core.ConfigurableMethodFilter
13+
import com.itangcent.idea.plugin.api.export.core.MethodFilter
1114
import com.itangcent.idea.plugin.api.export.postman.PostmanApiHelper
1215
import com.itangcent.idea.plugin.api.export.postman.PostmanCachedApiHelper
1316
import com.itangcent.idea.plugin.api.export.suv.SuvApiExporter
14-
import com.itangcent.idea.plugin.config.RecommendConfigReader
15-
import com.itangcent.intellij.config.ConfigReader
1617
import com.itangcent.intellij.context.ActionContext
1718
import com.itangcent.intellij.extend.guice.singleton
1819
import com.itangcent.intellij.extend.guice.with
@@ -47,9 +48,6 @@ class SuvExportAction : ApiExportAction("Export Api") {
4748

4849
builder.bind(LocalFileRepository::class) { it.with(DefaultLocalFileRepository::class).singleton() }
4950

50-
builder.bind(ConfigReader::class, "delegate_config_reader") { it.with(EasyApiConfigReader::class).singleton() }
51-
builder.bind(ConfigReader::class) { it.with(RecommendConfigReader::class).singleton() }
52-
5351
builder.bind(SuvApiExporter::class) { it.singleton() }
5452

5553
builder.bind(MethodFilter::class) { it.with(ConfigurableMethodFilter::class).singleton() }

0 commit comments

Comments
 (0)