Should fix bug#358106
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpql/JpaJpqlJavaCompletionProposalComputer.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpql/JpaJpqlJavaCompletionProposalComputer.java
index afba05f..0bb919c 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpql/JpaJpqlJavaCompletionProposalComputer.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpql/JpaJpqlJavaCompletionProposalComputer.java
@@ -27,6 +27,7 @@
import org.eclipse.jdt.core.dom.Annotation;
import org.eclipse.jdt.core.dom.ArrayInitializer;
import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.dom.Expression;
import org.eclipse.jdt.core.dom.IExtendedModifier;
import org.eclipse.jdt.core.dom.MemberValuePair;
import org.eclipse.jdt.core.dom.NormalAnnotation;
@@ -282,11 +283,22 @@
// @NamedQueries({...})
if (annotation.isSingleMemberAnnotation()) {
SingleMemberAnnotation singleMemberAnnotation = (SingleMemberAnnotation) annotation;
- ArrayInitializer array = (ArrayInitializer) singleMemberAnnotation.getValue();
+ Expression value = singleMemberAnnotation.getValue();
- for (org.eclipse.jdt.core.dom.Expression expression : (List<org.eclipse.jdt.core.dom.Expression>) array.expressions()) {
- if (isInsideNode(expression, tokenStart, tokenEnd)) {
- return retrieveQuery((NormalAnnotation) expression, tokenStart, tokenEnd);
+ if (value instanceof ArrayInitializer) {
+ ArrayInitializer array = (ArrayInitializer) singleMemberAnnotation.getValue();
+
+ for (Expression expression : (List<Expression>) array.expressions()) {
+ if (isInsideNode(expression, tokenStart, tokenEnd)) {
+ return retrieveQuery((NormalAnnotation) expression, tokenStart, tokenEnd);
+ }
+ }
+ }
+ else {
+ NormalAnnotation childAnnotation = (NormalAnnotation) value;
+
+ if (isInsideNode(childAnnotation, tokenStart, tokenEnd)) {
+ return retrieveQuery(childAnnotation, tokenStart, tokenEnd);
}
}
}