Correct lookup of enum constant declaration

This commit is contained in:
BoykoAlex
2016-11-18 21:00:17 -05:00
parent f2d989953e
commit 2a09bc3012

View File

@@ -15,6 +15,7 @@ import org.springframework.ide.vscode.commons.util.Log;
import com.github.javaparser.ast.CompilationUnit;
import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
import com.github.javaparser.ast.body.EnumConstantDeclaration;
import com.github.javaparser.ast.body.EnumDeclaration;
import com.github.javaparser.ast.body.FieldDeclaration;
import com.github.javaparser.ast.body.MethodDeclaration;
@@ -42,7 +43,7 @@ public class ParserJavadocProvider implements IJavadocProvider {
public IJavadoc getJavadoc(IField field) {
IType declaringType = field.getDeclaringType();
if (declaringType.isEnum()) {
FieldDeclaration declaration = createVisitorToFindField(field).visit(getEnumDeclaration(declaringType), null);
EnumConstantDeclaration declaration = createVisitorToFindEnumConstant(field).visit(getEnumDeclaration(declaringType), null);
return declaration.getJavaDoc() == null ? null : new RawJavadoc(declaration.getJavaDoc().toString());
} else {
FieldDeclaration declaration = createVisitorToFindField(field).visit(getClassOrInterfaceDeclaration(declaringType), null);
@@ -162,4 +163,17 @@ public class ParserJavadocProvider implements IJavadocProvider {
};
}
private GenericVisitorAdapter<EnumConstantDeclaration, Object> createVisitorToFindEnumConstant(IField field) {
return new GenericVisitorAdapter<EnumConstantDeclaration, Object>() {
@Override
public EnumConstantDeclaration visit(EnumConstantDeclaration n, Object arg) {
if (n.getName().equals(field.getElementName())) {
return n;
} else {
return null;
}
}
};
}
}