[jbosstools-commits] JBoss Tools SVN: r42601 - trunk/jst/plugins/org.jboss.tools.jst.text.ext/src/org/jboss/tools/jst/text/ext/hyperlink.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Mon Jul 16 17:44:20 EDT 2012


Author: scabanovich
Date: 2012-07-16 17:44:20 -0400 (Mon, 16 Jul 2012)
New Revision: 42601

Modified:
   trunk/jst/plugins/org.jboss.tools.jst.text.ext/src/org/jboss/tools/jst/text/ext/hyperlink/ELHyperlinkDetector.java
Log:
JBIDE-12295
https://issues.jboss.org/browse/JBIDE-12295
Open-on of definition of a var, which has unresolved value.

Modified: trunk/jst/plugins/org.jboss.tools.jst.text.ext/src/org/jboss/tools/jst/text/ext/hyperlink/ELHyperlinkDetector.java
===================================================================
--- trunk/jst/plugins/org.jboss.tools.jst.text.ext/src/org/jboss/tools/jst/text/ext/hyperlink/ELHyperlinkDetector.java	2012-07-16 21:38:33 UTC (rev 42600)
+++ trunk/jst/plugins/org.jboss.tools.jst.text.ext/src/org/jboss/tools/jst/text/ext/hyperlink/ELHyperlinkDetector.java	2012-07-16 21:44:20 UTC (rev 42601)
@@ -31,6 +31,7 @@
 import org.jboss.tools.common.el.core.resolver.ELResolution;
 import org.jboss.tools.common.el.core.resolver.ELResolver;
 import org.jboss.tools.common.el.core.resolver.ELSegment;
+import org.jboss.tools.common.el.core.resolver.ELSegmentImpl;
 import org.jboss.tools.common.el.core.resolver.IOpenableReference;
 import org.jboss.tools.jst.web.kb.PageContextFactory;
 
@@ -52,6 +53,7 @@
 			ELInvocationExpression expression = findInvocationExpressionByOffset(reference, region.getOffset());
 			if(expression != null){
 				ELResolver[] resolvers = context.getElResolvers();
+				ELSegment unresolved = null;
 				for(ELResolver resolver : resolvers){
 					ELResolution resolution = resolver.resolve(context, expression, region.getOffset());
 					if(resolution != null){
@@ -67,10 +69,22 @@
 									links.add(new ELHyperlink(textViewer.getDocument(), reference, segment, openable));
 								}
 							}
+						} else if(segment != null && ((ELSegmentImpl)segment).getVar() != null && unresolved == null && segment.getOpenable().length > 0) {
+							unresolved = segment;
 						}
-						
 					}
 				}
+				if(links.isEmpty() && unresolved != null) {
+					//This is a case when a reference to var is resolved, but its value is not resolved.
+					//More than one resolver can see that var, we may use any one of them.
+					//Available openable is to the var definition. 
+					IOpenableReference[] openables = unresolved.getOpenable();
+					if(openables.length > 0) {
+						for (IOpenableReference openable: openables) {
+							links.add(new ELHyperlink(textViewer.getDocument(), reference, unresolved, openable));
+						}
+					}
+				}
 			}
 			
 		}



More information about the jbosstools-commits mailing list