diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/GenerateLoggerUtil.kt b/java/java-impl/src/com/intellij/codeInsight/generation/GenerateLoggerUtil.kt index 45d44f3406a8..b850bcf6b7a4 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/GenerateLoggerUtil.kt +++ b/java/java-impl/src/com/intellij/codeInsight/generation/GenerateLoggerUtil.kt @@ -1,21 +1,28 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.codeInsight.generation +import com.intellij.codeInsight.completion.JavaCompletionUtil import com.intellij.lang.logging.JvmLogger import com.intellij.openapi.module.Module -import com.intellij.psi.PsiAnonymousClass -import com.intellij.psi.PsiClass -import com.intellij.psi.PsiElement -import com.intellij.psi.PsiImplicitClass +import com.intellij.openapi.project.Project +import com.intellij.psi.* +import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.util.parentsOfType object GenerateLoggerUtil { fun findSuitableLoggers(module: Module?, filterByImportExclusion : Boolean = false): List { + val project = module?.project ?: return emptyList() return JvmLogger.getAllLoggers(false).filter { - it.isAvailable(module) && !(filterByImportExclusion && it.isExcludedFromImport(module?.project)) + it.isAvailable(module) && !(filterByImportExclusion && isLoggerExcluded(project, it)) } } + private fun isLoggerExcluded(project: Project, logger: JvmLogger) : Boolean { + val clazz = JavaPsiFacade.getInstance(project).findClass(logger.loggerTypeName, GlobalSearchScope.everythingScope(project)) + ?: return true + return JavaCompletionUtil.isInExcludedPackage(clazz, false) + } + fun getAllNestedClasses(element: PsiElement) = element.parentsOfType(PsiClass::class.java, true) .filter { clazz -> clazz !is PsiAnonymousClass && clazz !is PsiImplicitClass } diff --git a/java/java-impl/src/com/intellij/lang/logging/JvmLogger.kt b/java/java-impl/src/com/intellij/lang/logging/JvmLogger.kt index 36f291543d2f..6a7a8e9347eb 100644 --- a/java/java-impl/src/com/intellij/lang/logging/JvmLogger.kt +++ b/java/java-impl/src/com/intellij/lang/logging/JvmLogger.kt @@ -1,15 +1,12 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.lang.logging -import com.intellij.codeInsight.completion.JavaCompletionUtil import com.intellij.lang.logging.UnspecifiedLogger.Companion.UNSPECIFIED_LOGGER_NAME import com.intellij.openapi.extensions.ExtensionPointName import com.intellij.openapi.module.Module import com.intellij.openapi.project.Project -import com.intellij.psi.JavaPsiFacade import com.intellij.psi.PsiClass import com.intellij.psi.PsiElement -import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.annotations.ApiStatus /** @@ -62,14 +59,6 @@ interface JvmLogger { */ fun isAvailable(module: Module?): Boolean - /** - * Determines if the logger is excluded from import in the current project. - * - * @param project the project context - * @return true if the logger class is excluded for import in the project, false otherwise - */ - fun isExcludedFromImport(project: Project?): Boolean - /** * Determines if it is possible to place a logger at the specified class. * @@ -102,14 +91,5 @@ interface JvmLogger { if (loggerName == UNSPECIFIED_LOGGER_NAME) return null return EP_NAME.extensionList.find { it.toString() == loggerName } } - - fun areLoggerTypesExcluded(project: Project?, loggerTypes: List): Boolean { - if (project == null) return true - val facade = JavaPsiFacade.getInstance(project) - return loggerTypes.any { classFqn -> - val clazz = facade.findClass(classFqn, GlobalSearchScope.everythingScope(project)) ?: return true - JavaCompletionUtil.isInExcludedPackage(clazz, false) - } - } } } diff --git a/java/java-impl/src/com/intellij/lang/logging/JvmLoggerFieldDelegate.kt b/java/java-impl/src/com/intellij/lang/logging/JvmLoggerFieldDelegate.kt index bdb6888958bb..de099cd5a3e9 100644 --- a/java/java-impl/src/com/intellij/lang/logging/JvmLoggerFieldDelegate.kt +++ b/java/java-impl/src/com/intellij/lang/logging/JvmLoggerFieldDelegate.kt @@ -36,9 +36,6 @@ class JvmLoggerFieldDelegate( override fun isAvailable(module: Module?): Boolean = JavaLibraryUtil.hasLibraryClass(module, loggerTypeName) - override fun isExcludedFromImport(project: Project?): Boolean = - JvmLogger.areLoggerTypesExcluded(project, listOf(factoryName, loggerTypeName)) - override fun isPossibleToPlaceLoggerAtClass(clazz: PsiClass): Boolean = clazz .fields.any { it.name == LOGGER_IDENTIFIER || it.type.canonicalText == loggerTypeName }.not() diff --git a/java/java-impl/src/com/intellij/lang/logging/UnspecifiedLogger.kt b/java/java-impl/src/com/intellij/lang/logging/UnspecifiedLogger.kt index 6415531da383..28476ea6bc27 100644 --- a/java/java-impl/src/com/intellij/lang/logging/UnspecifiedLogger.kt +++ b/java/java-impl/src/com/intellij/lang/logging/UnspecifiedLogger.kt @@ -23,8 +23,6 @@ class UnspecifiedLogger : JvmLogger { override fun isAvailable(module: Module?): Boolean = false - override fun isExcludedFromImport(project: Project?): Boolean = true - override fun isPossibleToPlaceLoggerAtClass(clazz: PsiClass): Boolean = false override fun createLogger(project: Project, clazz: PsiClass): PsiElement = throw UnsupportedOperationException() diff --git a/plugins/lombok/src/main/java/de/plushnikov/intellij/plugin/logging/JvmLoggerAnnotationDelegate.kt b/plugins/lombok/src/main/java/de/plushnikov/intellij/plugin/logging/JvmLoggerAnnotationDelegate.kt index 25691ca9c18c..c8543e25d029 100644 --- a/plugins/lombok/src/main/java/de/plushnikov/intellij/plugin/logging/JvmLoggerAnnotationDelegate.kt +++ b/plugins/lombok/src/main/java/de/plushnikov/intellij/plugin/logging/JvmLoggerAnnotationDelegate.kt @@ -40,9 +40,6 @@ class JvmLoggerAnnotationDelegate( return module != null && JavaLibraryUtil.hasLibraryClass(module, fieldLoggerName) && LombokLibraryUtil.hasLombokClasses(module) } - override fun isExcludedFromImport(project: Project?): Boolean = - JvmLogger.areLoggerTypesExcluded(project, listOf(fieldLoggerName, loggerTypeName)) - override fun isPossibleToPlaceLoggerAtClass(clazz: PsiClass): Boolean = clazz.hasAnnotation(loggerTypeName).not() override fun createLogger(project: Project, clazz: PsiClass): PsiAnnotation {