Skip to content

Commit 8ddc5e8

Browse files
committed
Refactor usage checks for DAO method parameters to simplify subtype validation
1 parent c51b9bd commit 8ddc5e8

File tree

3 files changed

+12
-36
lines changed

3 files changed

+12
-36
lines changed

src/main/kotlin/org/domaframework/doma/intellij/common/psi/PsiDaoMethod.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,6 @@ class PsiDaoMethod(
103103

104104
private fun getSqlAnnotation(): PsiAnnotation? = DomaAnnotationType.Sql.getPsiAnnotation(psiMethod)
105105

106-
fun isSelectTypeCollect(): Boolean {
107-
val selectAnnotation = DomaAnnotationType.Select.getPsiAnnotation(psiMethod) ?: return false
108-
return daoType.isSelectTypeCollect(selectAnnotation)
109-
}
110-
111106
fun useSqlAnnotation(): Boolean = getSqlAnnotation() != null
112107

113108
private fun setSqlFilePath() {

src/main/kotlin/org/domaframework/doma/intellij/extension/psi/PsiParameterExtension.kt

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -19,32 +19,17 @@ import com.intellij.psi.PsiClassType
1919
import com.intellij.psi.PsiParameter
2020
import org.domaframework.doma.intellij.common.util.DomaClassName
2121

22-
val PsiParameter.isFunctionClazz: Boolean
23-
get() {
24-
val functionType = DomaClassName.JAVA_FUNCTION
25-
val superCollection: PsiClassType? = getSuperClassType(functionType)
26-
return superCollection != null
27-
}
28-
29-
val PsiParameter.isBiFunctionClazz: Boolean
30-
get() {
31-
val functionType = DomaClassName.BI_FUNCTION
32-
val superCollection: PsiClassType? = getSuperClassType(functionType)
33-
return superCollection != null
34-
}
35-
36-
val PsiParameter.isSelectOption: Boolean
37-
get() {
38-
val collectorType = DomaClassName.SELECT_OPTIONS
39-
val superCollection: PsiClassType? = getSuperClassType(collectorType)
40-
return superCollection != null
41-
}
22+
private val ignoreUsageCheckType =
23+
listOf<DomaClassName>(
24+
DomaClassName.JAVA_FUNCTION,
25+
DomaClassName.BI_FUNCTION,
26+
DomaClassName.SELECT_OPTIONS,
27+
DomaClassName.JAVA_COLLECTOR,
28+
)
4229

43-
val PsiParameter.isCollector: Boolean
44-
get() {
45-
val collectorType = DomaClassName.JAVA_COLLECTOR
46-
val superCollection: PsiClassType? = getSuperClassType(collectorType)
47-
return superCollection != null
30+
fun PsiParameter.isIgnoreUsageCheck(): Boolean =
31+
ignoreUsageCheckType.any { type ->
32+
getSuperClassType(type) != null
4833
}
4934

5035
fun PsiParameter.getSuperClassType(superClassType: DomaClassName): PsiClassType? {

src/main/kotlin/org/domaframework/doma/intellij/inspection/dao/visitor/UsedDaoMethodParamInspectionVisitor.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,7 @@ import org.domaframework.doma.intellij.common.dao.getDaoClass
2727
import org.domaframework.doma.intellij.common.isJavaOrKotlinFileType
2828
import org.domaframework.doma.intellij.common.psi.PsiDaoMethod
2929
import org.domaframework.doma.intellij.extension.findFile
30-
import org.domaframework.doma.intellij.extension.psi.isBiFunctionClazz
31-
import org.domaframework.doma.intellij.extension.psi.isCollector
32-
import org.domaframework.doma.intellij.extension.psi.isFunctionClazz
33-
import org.domaframework.doma.intellij.extension.psi.isSelectOption
30+
import org.domaframework.doma.intellij.extension.psi.isIgnoreUsageCheck
3431
import org.domaframework.doma.intellij.extension.psi.methodParameters
3532

3633
class UsedDaoMethodParamInspectionVisitor(
@@ -45,8 +42,7 @@ class UsedDaoMethodParamInspectionVisitor(
4542
if (!psiDaoMethod.useSqlAnnotation() && !psiDaoMethod.isUseSqlFileMethod()) return
4643

4744
val methodParameters =
48-
method.methodParameters
49-
.filter { !it.isFunctionClazz && !it.isBiFunctionClazz && !it.isSelectOption && !it.isCollector }
45+
method.methodParameters.filter { !it.isIgnoreUsageCheck() }
5046
val sqlFileManager =
5147
psiDaoMethod.sqlFile?.let {
5248
method.project.findFile(it)

0 commit comments

Comments
 (0)