From 9a86ee8c201ae2b9d05076ec6ac0ddd05c99f658 Mon Sep 17 00:00:00 2001 From: xterao Date: Thu, 10 Apr 2025 17:57:36 +0900 Subject: [PATCH 1/2] Null check for virtualFile --- .../org/domaframework/doma/intellij/common/FileTypeCheck.kt | 3 ++- .../domaframework/doma/intellij/common/dao/DaoMethodUtil.kt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/org/domaframework/doma/intellij/common/FileTypeCheck.kt b/src/main/kotlin/org/domaframework/doma/intellij/common/FileTypeCheck.kt index 17d3f2f8..a5831611 100644 --- a/src/main/kotlin/org/domaframework/doma/intellij/common/FileTypeCheck.kt +++ b/src/main/kotlin/org/domaframework/doma/intellij/common/FileTypeCheck.kt @@ -37,6 +37,7 @@ fun getExtension(type: String): String = * Does it match the Dao file type condition? */ fun isJavaOrKotlinFileType(daoFile: PsiFile): Boolean { + if (daoFile.virtualFile == null) return false val fileType = FileTypeManager.getInstance().getFileTypeByFile(daoFile.virtualFile) return when (fileType.name) { "JAVA", "Kotlin" -> true @@ -57,7 +58,7 @@ fun isSupportFileType(file: PsiFile): Boolean { fun isInjectionSqlFile(file: PsiFile): Boolean { val extension = file.fileType.defaultExtension - val filePath = file.virtualFile.path + val filePath = file.virtualFile?.path ?: return false return when (extension) { "sql" -> true else -> false diff --git a/src/main/kotlin/org/domaframework/doma/intellij/common/dao/DaoMethodUtil.kt b/src/main/kotlin/org/domaframework/doma/intellij/common/dao/DaoMethodUtil.kt index 93ba8224..6a4371b6 100644 --- a/src/main/kotlin/org/domaframework/doma/intellij/common/dao/DaoMethodUtil.kt +++ b/src/main/kotlin/org/domaframework/doma/intellij/common/dao/DaoMethodUtil.kt @@ -110,7 +110,7 @@ fun formatDaoPathFromSqlFilePath( if (isInjectionSqlFile(relativeBaseSqlFile)) { return "" } - val sqlPath = relativeBaseSqlFile.virtualFile.path + val sqlPath = relativeBaseSqlFile.virtualFile?.path ?: return "" var relativeFilePath = sqlPath.substring(projectRootPath.length) if (!relativeFilePath.startsWith("/")) { relativeFilePath = "/$relativeFilePath" From e6d236312447f578983bd06f07ff12ea8d2b4100 Mon Sep 17 00:00:00 2001 From: xterao Date: Fri, 11 Apr 2025 09:40:25 +0900 Subject: [PATCH 2/2] Add Null check for virtualFile --- .../domaframework/doma/intellij/common/dao/DaoMethodUtil.kt | 5 +++-- .../domaframework/doma/intellij/common/psi/PsiDaoMethod.kt | 2 +- .../doma/intellij/refactoring/dao/DaoRenameProcessor.kt | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/org/domaframework/doma/intellij/common/dao/DaoMethodUtil.kt b/src/main/kotlin/org/domaframework/doma/intellij/common/dao/DaoMethodUtil.kt index 6a4371b6..fe968d5b 100644 --- a/src/main/kotlin/org/domaframework/doma/intellij/common/dao/DaoMethodUtil.kt +++ b/src/main/kotlin/org/domaframework/doma/intellij/common/dao/DaoMethodUtil.kt @@ -39,7 +39,8 @@ import org.domaframework.doma.intellij.extension.getModule */ fun findDaoMethod(originalFile: PsiFile): PsiMethod? { val project = originalFile.project - val module = project.getModule(originalFile.virtualFile) ?: return null + val virtualFile = originalFile.virtualFile ?: return null + val module = project.getModule(virtualFile) ?: return null if (isInjectionSqlFile(originalFile)) { originalFile.let { @@ -52,7 +53,7 @@ fun findDaoMethod(originalFile: PsiFile): PsiMethod? { val relativePath = formatDaoPathFromSqlFilePath( originalFile, - project.getContentRoot(originalFile.virtualFile)?.path ?: "", + project.getContentRoot(virtualFile)?.path ?: "", fileTypeName, ) val daoClassName: String = diff --git a/src/main/kotlin/org/domaframework/doma/intellij/common/psi/PsiDaoMethod.kt b/src/main/kotlin/org/domaframework/doma/intellij/common/psi/PsiDaoMethod.kt index a5cf0fd1..603420fd 100644 --- a/src/main/kotlin/org/domaframework/doma/intellij/common/psi/PsiDaoMethod.kt +++ b/src/main/kotlin/org/domaframework/doma/intellij/common/psi/PsiDaoMethod.kt @@ -166,7 +166,7 @@ class PsiDaoMethod( PsiManager .getInstance(psiProject) .findDirectory(virtualFile) ?: return@runWriteCommandAction - val sqlVirtualFile = sqlOutputDirPath.createFile(sqlFileName).virtualFile + val sqlVirtualFile = sqlOutputDirPath.createFile(sqlFileName).virtualFile ?: return@runWriteCommandAction FileEditorManager .getInstance(psiProject) .openFile(sqlVirtualFile, true) diff --git a/src/main/kotlin/org/domaframework/doma/intellij/refactoring/dao/DaoRenameProcessor.kt b/src/main/kotlin/org/domaframework/doma/intellij/refactoring/dao/DaoRenameProcessor.kt index 2b9e5a2d..02374024 100644 --- a/src/main/kotlin/org/domaframework/doma/intellij/refactoring/dao/DaoRenameProcessor.kt +++ b/src/main/kotlin/org/domaframework/doma/intellij/refactoring/dao/DaoRenameProcessor.kt @@ -42,7 +42,7 @@ class DaoRenameProcessor : RenameJavaClassProcessor() { val daoClass = getDaoClass(element.containingFile) ?: return val project = element.project - val virtualFile = element.containingFile.virtualFile + val virtualFile = element.containingFile.virtualFile ?: return project.getContentRoot(virtualFile)?.let { element.module?.getPackagePathFromDaoPath(virtualFile)?.let { if (it.name == daoClass.name) {