[java] added method for getting declared string value from annotation
authorDaniil Ovchinnikov <daniil.ovchinnikov@jetbrains.com>
Mon, 6 Jul 2015 16:15:09 +0000 (19:15 +0300)
committerDaniil Ovchinnikov <daniil.ovchinnikov@jetbrains.com>
Mon, 6 Jul 2015 16:24:40 +0000 (19:24 +0300)
java/java-psi-api/src/com/intellij/codeInsight/AnnotationUtil.java

index 1f9252d09a9794d119c746d4a198c6acdc318a41..a0011475902f765de8a82b98939095ca93e042d2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 JetBrains s.r.o.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -525,6 +525,13 @@ public class AnnotationUtil {
     return constValue instanceof Boolean ? (Boolean)constValue : null;
   }
 
+  @Nullable
+  public static String getDeclaredStringAttributeValue(@NotNull PsiAnnotation anno, @Nullable final String attributeName) {
+    PsiAnnotationMemberValue attrValue = anno.findDeclaredAttributeValue(attributeName);
+    Object constValue = JavaPsiFacade.getInstance(anno.getProject()).getConstantEvaluationHelper().computeConstantExpression(attrValue);
+    return constValue instanceof String ? (String)constValue : null;
+  }
+
   @Nullable
   public static <T extends Annotation> T findAnnotationInHierarchy(@NotNull PsiModifierListOwner listOwner, @NotNull Class<T> annotationClass) {
     PsiAnnotation annotation = findAnnotationInHierarchy(listOwner, Collections.singleton(annotationClass.getName()));