[Java. Logging] Add Lombok Slf4 logger

IDEA-331693

GitOrigin-RevId: 6cd26276b28bba8b8082717001300c876ff910ce
This commit is contained in:
Georgii Ustinov
2024-01-31 10:14:45 +02:00
committed by intellij-monorepo-bot
parent bf968f0dee
commit 7ef6316e14
8 changed files with 67 additions and 9 deletions

View File

@@ -0,0 +1,37 @@
package de.plushnikov.intellij.plugin.logging
import com.intellij.java.library.JavaLibraryUtil
import com.intellij.logging.JvmLogger
import com.intellij.openapi.module.Module
import com.intellij.openapi.project.Project
import com.intellij.psi.JavaPsiFacade
import com.intellij.psi.PsiAnnotation
import com.intellij.psi.PsiClass
import com.intellij.psi.PsiElement
import com.intellij.psi.codeStyle.JavaCodeStyleManager
import de.plushnikov.intellij.plugin.util.LombokLibraryUtil
class JvmLoggerAnnotationDelegate(
private val fieldLoggerName: String,
override val loggerTypeName: String,
override val priority: Int
) : JvmLogger {
override fun insertLoggerAtClass(project: Project, clazz: PsiClass, logger: PsiElement): PsiElement? {
if (logger !is PsiAnnotation) return null
JavaCodeStyleManager.getInstance(project).shortenClassReferences(logger)
return clazz.modifierList?.addAfter(logger, null)
}
override fun isAvailable(project: Project?): Boolean {
return project != null && JavaLibraryUtil.hasLibraryClass(project, fieldLoggerName) && LombokLibraryUtil.hasLombokLibrary(project)
}
override fun isAvailable(module: Module?): Boolean {
return module != null && JavaLibraryUtil.hasLibraryClass(module, fieldLoggerName) && LombokLibraryUtil.hasLombokClasses(module)
}
override fun createLoggerElementText(project: Project, clazz: PsiClass): PsiAnnotation {
val factory = JavaPsiFacade.getElementFactory(project)
return factory.createAnnotationFromText("@$loggerTypeName", clazz)
}
}

View File

@@ -0,0 +1,8 @@
package de.plushnikov.intellij.plugin.logging
object LombokLoggingUtils {
const val SLF4J_ANNOTATION = "lombok.extern.slf4j.Slf4j"
const val LOG4J2_ANNOTATION = "lombok.extern.log4j.Log4j2"
const val LOG4J_ANNOTATION = "lombok.extern.log4j.Log4j"
const val APACHE_ANNOTATION = "lombok.extern.apachecommons.CommonsLog"
}

View File

@@ -0,0 +1,12 @@
package de.plushnikov.intellij.plugin.logging
import com.intellij.logging.JvmLogger
import com.siyeh.ig.psiutils.JavaLoggingUtils
class LombokSlf4jLogger : JvmLogger by JvmLoggerAnnotationDelegate(
JavaLoggingUtils.SLF4J,
LombokLoggingUtils.SLF4J_ANNOTATION,
90
) {
override fun toString(): String = "Lombok SLf4j"
}

View File

@@ -245,6 +245,8 @@
<dependencySupport coordinate="org.projectlombok:lombok" kind="java" displayName="Lombok"/>
<iconMapper mappingFile="LombokIconMappings.json"/>
<jvm.logging implementation="de.plushnikov.intellij.plugin.logging.LombokSlf4jLogger"/>
</extensions>
<projectListeners>