| public class AnnotationArgConverter { |
| public GrAnnotationMemberValue convert(PsiAnnotationMemberValue value) { |
| final StringBuilder buffer = new StringBuilder(); |
| |
| buffer.append("@A("); |
| |
| <selection>value.accept(new JavaElementVisitor() { |
| @Override |
| public void visitExpression(PsiExpression expression) { |
| buffer.append(expression.getText()); |
| } |
| |
| @Override |
| public void visitNewExpression(PsiNewExpression expression) { |
| PsiArrayInitializerExpression arrayInitializer = expression.getArrayInitializer(); |
| if (arrayInitializer == null) { |
| super.visitNewExpression(expression); |
| } |
| else { |
| buffer.append(")"); |
| } |
| } |
| |
| })</selection>; |
| |
| buffer.append(")"); |
| |
| try { |
| return GroovyPsiElementFactory.getInstance(value.getProject()).createAnnotationFromText(buffer.toString()); |
| } |
| catch (IncorrectOperationException e) { |
| return null; |
| } |
| } |
| } |