summaryrefslogtreecommitdiff
path: root/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java')
-rw-r--r--java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java44
1 files changed, 42 insertions, 2 deletions
diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java
index 1f642b18d1b1..67b1ef813de8 100644
--- a/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java
+++ b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java
@@ -501,6 +501,7 @@ public class JavaDocInfoGenerator {
buffer.append("<b>");
buffer.append(field.getName());
appendInitializer(buffer, field);
+ enumConstantOrdinal(buffer, field, field.getContainingClass(), "\n");
buffer.append("</b>");
}
@@ -638,7 +639,7 @@ public class JavaDocInfoGenerator {
String text = o.toString();
PsiType type = variable.getType();
if (type.equalsToText(CommonClassNames.JAVA_LANG_STRING)) {
- text = "\"" + StringUtil.shortenPathWithEllipsis(text, 120) + "\"";
+ text = "\"" + StringUtil.escapeLineBreak(StringUtil.shortenPathWithEllipsis(text, 120)) + "\"";
}
else if (type.equalsToText("char")) text = "'" + text + "'";
try {
@@ -754,7 +755,20 @@ public class JavaDocInfoGenerator {
}
final PsiAnnotationMemberValue value = pair.getValue();
if (value != null) {
- buffer.append(XmlStringUtil.escapeString(value.getText()));
+ if (value instanceof PsiArrayInitializerMemberValue) {
+ buffer.append("{");
+ boolean firstMember = true;
+
+ for(PsiAnnotationMemberValue memberValue:((PsiArrayInitializerMemberValue)value).getInitializers()) {
+ if (!firstMember) buffer.append(",");
+ firstMember = false;
+
+ appendLinkOrText(buffer, memberValue, generateLink);
+ }
+ buffer.append("}");
+ } else {
+ appendLinkOrText(buffer, value, generateLink);
+ }
}
}
buffer.append(")");
@@ -778,6 +792,32 @@ public class JavaDocInfoGenerator {
}
}
+ private static void appendLinkOrText(StringBuilder buffer,
+ PsiAnnotationMemberValue memberValue,
+ boolean generateLink) {
+ if (generateLink && memberValue instanceof PsiQualifiedReferenceElement) {
+ String text = ((PsiQualifiedReferenceElement)memberValue).getCanonicalText();
+ PsiElement resolve = ((PsiQualifiedReferenceElement)memberValue).resolve();
+
+ if (resolve instanceof PsiField) {
+ PsiField field = (PsiField)resolve;
+ PsiClass aClass = field.getContainingClass();
+ int startOfPropertyNamePosition = text.lastIndexOf('.');
+
+ if (startOfPropertyNamePosition != -1) {
+ text = text.substring(0, startOfPropertyNamePosition) + '#' + text.substring(startOfPropertyNamePosition + 1);
+ }
+ else {
+ if (aClass != null) text = aClass.getQualifiedName() + '#' + field.getName();
+ }
+ generateLink(buffer, text, aClass != null? aClass.getName() + '.' + field.getName():null, memberValue, false);
+ return;
+ }
+ }
+
+ buffer.append(XmlStringUtil.escapeString(memberValue.getText()));
+ }
+
public static boolean isDocumentedAnnotationType(@Nullable PsiElement annotationType) {
return annotationType instanceof PsiClass && AnnotationUtil.isAnnotated((PsiClass)annotationType, "java.lang.annotation.Documented", false);
}