Bug 579612 - Regression: Fix for 578788 causes regression in NLS hover

- fix NLSStringHover.internalGetHoverInfo() logic to determine super
  class name of String field so it is fully qualified

Change-Id: I83e5bc17919e613c04890d1caf6d2f4035bd78b0
Reviewed-on: https://git.eclipse.org/r/c/jdt/eclipse.jdt.ui/+/192549
Tested-by: JDT Bot <jdt-bot@eclipse.org>
Tested-by: Jeff Johnston <jjohnstn@redhat.com>
Reviewed-by: Jeff Johnston <jjohnstn@redhat.com>
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/hover/NLSStringHover.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/hover/NLSStringHover.java
index 0740ccf..1e03e61 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/hover/NLSStringHover.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/hover/NLSStringHover.java
@@ -40,8 +40,6 @@
 import org.eclipse.ui.editors.text.EditorsUI;
 
 import org.eclipse.jdt.core.IField;
-import org.eclipse.jdt.core.IJavaElement;
-import org.eclipse.jdt.core.IMember;
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jdt.core.ITypeRoot;
 import org.eclipse.jdt.core.JavaModelException;
@@ -49,6 +47,8 @@
 import org.eclipse.jdt.core.dom.ASTNode;
 import org.eclipse.jdt.core.dom.CompilationUnit;
 import org.eclipse.jdt.core.dom.IBinding;
+import org.eclipse.jdt.core.dom.ITypeBinding;
+import org.eclipse.jdt.core.dom.IVariableBinding;
 import org.eclipse.jdt.core.dom.NodeFinder;
 import org.eclipse.jdt.core.dom.QualifiedName;
 import org.eclipse.jdt.core.dom.SimpleName;
@@ -171,22 +171,20 @@
 			identifier= ((StringLiteral)node).getLiteralValue();
 		} else if (!usedFullyQualifiedName && node.getLocationInParent() == QualifiedName.NAME_PROPERTY) {
 			identifier= ((SimpleName)node).getIdentifier();
-			try {
-				IBinding nodeBinding= ((SimpleName)node).resolveBinding();
-				if (nodeBinding != null) {
-					IJavaElement nodeElement= nodeBinding.getJavaElement();
-					if (nodeElement instanceof IMember) {
-						IType nodeDeclaringType= ((IMember)nodeElement).getDeclaringType();
-						if (nodeDeclaringType != null) {
-							String nodeParentTypeName= nodeDeclaringType.getSuperclassName();
-							if (!"org.eclipse.osgi.util.NLS".equals(nodeParentTypeName)) { //$NON-NLS-1$
+			IBinding nodeBinding= ((SimpleName)node).resolveBinding();
+			if (nodeBinding != null) {
+				if (nodeBinding instanceof IVariableBinding && ((IVariableBinding)nodeBinding).isField()) {
+					ITypeBinding nodeDeclaringType= ((IVariableBinding)nodeBinding).getDeclaringClass();
+					if (nodeDeclaringType != null) {
+						ITypeBinding superClass= nodeDeclaringType.getSuperclass();
+						if (superClass != null) {
+							String superClassName= superClass.getQualifiedName();
+							if (!"org.eclipse.osgi.util.NLS".equals(superClassName)) { //$NON-NLS-1$
 								identifier= null;
 							}
 						}
 					}
 				}
-			} catch (JavaModelException e1) {
-				// ignore
 			}
 		}
 		if (identifier == null) {