[groovy] booleanValue() and stringValue() for annotation member value

This commit is contained in:
Daniil Ovchinnikov
2016-11-08 18:27:40 +03:00
parent 0bc7a91716
commit d3e196caf6
2 changed files with 8 additions and 2 deletions
@@ -18,6 +18,7 @@ package org.jetbrains.plugins.groovy.lang.psi.impl
import com.intellij.codeInsight.AnnotationUtil
import com.intellij.psi.PsiAnnotation
import com.intellij.psi.PsiAnnotationMemberValue
import com.intellij.psi.PsiLiteral
import com.intellij.psi.PsiNameValuePair
fun PsiAnnotation.findDeclaredDetachedValue(attributeName: String?): PsiAnnotationMemberValue? {
@@ -28,3 +29,8 @@ fun PsiAnnotation.findDeclaredDetachedValue(attributeName: String?): PsiAnnotati
else -> styleAttribute.value
}
}
fun PsiAnnotationMemberValue?.booleanValue() = (this as? PsiLiteral)?.value as? Boolean
fun PsiAnnotationMemberValue?.stringValue() = (this as? PsiLiteral)?.value as? String
@@ -20,9 +20,9 @@ import com.intellij.psi.PsiClassType
import com.intellij.psi.PsiModifier
import com.intellij.psi.PsiType
import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.modifiers.GrModifierFlags
import org.jetbrains.plugins.groovy.lang.psi.impl.GrAnnotationUtil
import org.jetbrains.plugins.groovy.lang.psi.impl.PsiImplUtil
import org.jetbrains.plugins.groovy.lang.psi.impl.findDeclaredDetachedValue
import org.jetbrains.plugins.groovy.lang.psi.impl.stringValue
import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrMethodWrapper
import org.jetbrains.plugins.groovy.transformations.AstTransformationSupport
import org.jetbrains.plugins.groovy.transformations.TransformationContext
@@ -35,7 +35,7 @@ class ListenerListTransformationSupport : AstTransformationSupport {
val annotation = PsiImplUtil.getAnnotation(field, listenerListFqn) ?: continue
val listenerType = field.getListenerType() as? PsiClassType ?: continue
val listenerClass = listenerType.resolve() ?: continue
val declaredName = GrAnnotationUtil.getString(annotation.findDeclaredDetachedValue("name"))
val declaredName = annotation.findDeclaredDetachedValue("name").stringValue()
val name = StringUtil.nullize(declaredName) ?: listenerClass.name ?: continue
context += context.memberBuilder.method("add${name.capitalize()}") {
addModifier(GrModifierFlags.PUBLIC_MASK)