Skip to content

Commit a5f1b3a

Browse files
committed
Revert conflict resolution with main and fix test failures
1 parent d0560f5 commit a5f1b3a

File tree

5 files changed

+63
-55
lines changed

5 files changed

+63
-55
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,9 @@ Some functions of "Doma Tools" can be customized from the settings screen.
9898
- Toggle the SQL formatting feature on or off
9999
- Specify the class names that define custom functions.
100100

101-
**If you want to use custom functions defined in your own ExpressionFunctions implementation class,
101+
**If you want to use custom functions defined in your own ExpressionFunctions implementation class,
102102
place a `doma.compile.config` file directly under the resources directory and describe the `doma.expr.functions` entry.**
103-
103+
104104
ex) doma.compile.config
105105
```properties
106106
doma.expr.functions=example.expression.MyExpressionFunctions

images/setting.png

-9.54 KB
Binary file not shown.

src/main/kotlin/org/domaframework/doma/intellij/common/sql/directive/collector/StaticBuildFunctionCollector.kt

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -18,39 +18,48 @@ package org.domaframework.doma.intellij.common.sql.directive.collector
1818
import com.intellij.codeInsight.lookup.AutoCompletionPolicy
1919
import com.intellij.codeInsight.lookup.LookupElement
2020
import com.intellij.codeInsight.lookup.LookupElementBuilder
21-
import com.intellij.openapi.project.Project
21+
import com.intellij.psi.PsiFile
2222
import com.intellij.psi.PsiMethod
2323
import com.intellij.psi.PsiModifier
24+
import org.domaframework.doma.intellij.common.CommonPathParameterUtil
25+
import org.domaframework.doma.intellij.common.config.DomaCompileConfigUtil
2426
import org.domaframework.doma.intellij.common.helper.ExpressionFunctionsHelper
2527
import org.domaframework.doma.intellij.extension.getJavaClazz
26-
import org.domaframework.doma.intellij.setting.state.DomaToolsCustomFunctionSettings
28+
import org.jetbrains.kotlin.idea.base.util.module
2729

2830
class StaticBuildFunctionCollector(
29-
private val project: Project,
31+
private val file: PsiFile?,
3032
private val bind: String,
3133
) : StaticDirectiveHandlerCollector() {
3234
public override fun collect(): List<LookupElement>? {
3335
var functions = mutableSetOf<PsiMethod>()
34-
val setting = DomaToolsCustomFunctionSettings.getInstance(project)
35-
val state = setting.state
36-
val customFunctions = state.customFunctionClassNames
36+
val project = file?.project
37+
val module = file?.module
38+
val resourcePaths =
39+
if (file?.virtualFile != null && module != null) {
40+
CommonPathParameterUtil
41+
.getResources(module, file.virtualFile)
42+
} else {
43+
emptyList()
44+
}
45+
46+
val customFunctionClassName =
47+
project?.let { DomaCompileConfigUtil.getConfigValue(it, resourcePaths, "doma.expr.functions") }
3748

3849
val expressionFunctionInterface =
39-
ExpressionFunctionsHelper.setExpressionFunctionsInterface(project)
50+
project?.let { ExpressionFunctionsHelper.setExpressionFunctionsInterface(it) }
4051
?: return null
4152

42-
customFunctions.forEach { function ->
43-
val expressionClazz = project.getJavaClazz(function)
44-
if (expressionClazz != null &&
45-
ExpressionFunctionsHelper.isInheritor(expressionClazz)
46-
) {
47-
val methods = expressionClazz.allMethods
48-
functions.addAll(
49-
methods.filter {
50-
isPublicFunction(it)
51-
},
52-
)
53-
}
53+
val expressionClazz = customFunctionClassName?.let { project.getJavaClazz(it) }
54+
if (expressionClazz != null &&
55+
ExpressionFunctionsHelper.isInheritor(expressionClazz)
56+
) {
57+
val methods = expressionClazz.allMethods
58+
functions.addAll(
59+
methods.filter {
60+
isPublicFunction(it)
61+
},
62+
)
5463
}
5564

5665
if (functions.isEmpty()) {

src/test/kotlin/org/domaframework/doma/intellij/complate/sql/SqlCompleteTest.kt

Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -29,38 +29,37 @@ class SqlCompleteTest : DomaSqlTest() {
2929
"$testDaoName.java",
3030
)
3131
addSqlFile(
32-
"$testDapName/completeDaoArgument.sql",
33-
"$testDapName/completeInstancePropertyFromDaoArgumentClass.sql",
34-
"$testDapName/completeJavaPackageClass.sql",
35-
"$testDapName/completeDirective.sql",
36-
"$testDapName/completeBatchInsert.sql",
37-
"$testDapName/completeStaticPropertyFromStaticPropertyCall.sql",
38-
"$testDapName/completePropertyAfterStaticPropertyCall.sql",
39-
"$testDapName/completeBuiltinFunction.sql",
40-
"$testDapName/completeDirectiveInsideIf.sql",
41-
"$testDapName/completeDirectiveInsideElseIf.sql",
42-
"$testDapName/completeDirectiveInsideFor.sql",
43-
"$testDapName/completeDirectiveFieldInsideIf.sql",
44-
"$testDapName/completeDirectiveFieldInsideElseIf.sql",
45-
"$testDapName/completeDirectiveFieldInsideFor.sql",
46-
"$testDapName/completeConcatenationOperator.sql",
47-
"$testDapName/completeComparisonOperator.sql",
48-
"$testDapName/completeParameterFirst.sql",
49-
"$testDapName/completeParameterFirstProperty.sql",
50-
"$testDapName/completeParameterSecond.sql",
51-
"$testDapName/completeParameterSecondProperty.sql",
52-
"$testDapName/completeCallStaticPropertyClassPackage.sql",
53-
"$testDapName/completeCallStaticPropertyClass.sql",
54-
"$testDapName/completeForItemHasNext.sql",
55-
"$testDapName/completeForItemIndex.sql",
56-
"$testDapName/completeOptionalDaoParam.sql",
57-
"$testDapName/completeOptionalStaticProperty.sql",
58-
"$testDapName/completeOptionalByForItem.sql",
59-
"$testDapName/completeOptionalBatchAnnotation.sql",
60-
"$testDapName/completeForDirectiveItem.sql",
61-
"$testDapName/completeImplementCustomFunction.sql",
62-
"$testDapName/completeNotImplementCustomFunction.sql",
63-
32+
"$testDaoName/completeDaoArgument.sql",
33+
"$testDaoName/completeInstancePropertyFromDaoArgumentClass.sql",
34+
"$testDaoName/completeJavaPackageClass.sql",
35+
"$testDaoName/completeDirective.sql",
36+
"$testDaoName/completeBatchInsert.sql",
37+
"$testDaoName/completeStaticPropertyFromStaticPropertyCall.sql",
38+
"$testDaoName/completePropertyAfterStaticPropertyCall.sql",
39+
"$testDaoName/completeBuiltinFunction.sql",
40+
"$testDaoName/completeDirectiveInsideIf.sql",
41+
"$testDaoName/completeDirectiveInsideElseIf.sql",
42+
"$testDaoName/completeDirectiveInsideFor.sql",
43+
"$testDaoName/completeDirectiveFieldInsideIf.sql",
44+
"$testDaoName/completeDirectiveFieldInsideElseIf.sql",
45+
"$testDaoName/completeDirectiveFieldInsideFor.sql",
46+
"$testDaoName/completeConcatenationOperator.sql",
47+
"$testDaoName/completeComparisonOperator.sql",
48+
"$testDaoName/completeParameterFirst.sql",
49+
"$testDaoName/completeParameterFirstProperty.sql",
50+
"$testDaoName/completeParameterSecond.sql",
51+
"$testDaoName/completeParameterSecondProperty.sql",
52+
"$testDaoName/completeCallStaticPropertyClassPackage.sql",
53+
"$testDaoName/completeCallStaticPropertyClass.sql",
54+
"$testDaoName/completeForItemHasNext.sql",
55+
"$testDaoName/completeForItemIndex.sql",
56+
"$testDaoName/completeOptionalDaoParam.sql",
57+
"$testDaoName/completeOptionalStaticProperty.sql",
58+
"$testDaoName/completeOptionalByForItem.sql",
59+
"$testDaoName/completeOptionalBatchAnnotation.sql",
60+
"$testDaoName/completeForDirectiveItem.sql",
61+
"$testDaoName/completeImplementCustomFunction.sql",
62+
"$testDaoName/completeNotImplementCustomFunction.sql",
6463
)
6564
}
6665

@@ -427,7 +426,7 @@ class SqlCompleteTest : DomaSqlTest() {
427426
fun testCompleteNotImplementCustomFunction() {
428427
addResourceCompileFile("invalid.doma.compile.config")
429428
innerDirectiveCompleteTest(
430-
"$testDapName/completeNotImplementCustomFunction.sql",
429+
"$testDaoName/completeNotImplementCustomFunction.sql",
431430
listOf(
432431
"isEmpty()",
433432
"isNotEmpty()",
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
SELECT * FROM project
22
WHERE project_id = /* project.projectId */0
33
AND manager = /* project.manager.userId */0
4-
AND lang = /* @<caret>() */'en'
4+
AND lang = /* @use<caret>() */'en'

0 commit comments

Comments
 (0)