Author: dazarov
Date: 2010-05-24 08:14:51 -0400 (Mon, 24 May 2010)
New Revision: 22276
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDIUtil.java
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/InjectedPointHyperlinkDetector.java
Log:
https://jira.jboss.org/browse/JBIDE-6311
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDIUtil.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDIUtil.java 2010-05-24
11:33:28 UTC (rev 22275)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDIUtil.java 2010-05-24
12:14:51 UTC (rev 22276)
@@ -23,6 +23,7 @@
import org.eclipse.jdt.core.IAnnotation;
import org.eclipse.jdt.core.IField;
import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.ILocalVariable;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
@@ -75,7 +76,7 @@
* @param element
*/
public static IInjectionPoint findInjectionPoint(Set<IBean> beans, IJavaElement
element) {
- if (!(element instanceof IField) && (element instanceof IMethod)) {
+ if (!(element instanceof IField) && (element instanceof IMethod) &&
(element instanceof ILocalVariable)) {
return null;
}
@@ -90,6 +91,10 @@
if (((IInjectionPointMethod) iPoint).getMethod() != null &&
((IInjectionPointMethod) iPoint).getMethod().equals(element)) {
return iPoint;
}
+ }else if(element instanceof ILocalVariable && iPoint instanceof
IInjectionPointParameter){
+ if (((IInjectionPointParameter) iPoint).getName().equals(element.getElementName()))
{
+ return iPoint;
+ }
}
}
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/InjectedPointHyperlinkDetector.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/InjectedPointHyperlinkDetector.java 2010-05-24
11:33:28 UTC (rev 22275)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/InjectedPointHyperlinkDetector.java 2010-05-24
12:14:51 UTC (rev 22276)
@@ -19,6 +19,7 @@
import org.eclipse.jdt.core.ICodeAssist;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.ILocalVariable;
import org.eclipse.jdt.core.IMember;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
@@ -94,12 +95,7 @@
}
}
- if (element instanceof IAnnotatable && element instanceof IMember) {
- IAnnotatable annotatable = (IAnnotatable)element;
-
- if(!findAnnotation(annotatable, ((IMember)element).getDeclaringType()))
- continue;
-
+ if(findAnnotation(element)){
hyperlinks.add(new InjectedPointListHyperlink(file, textViewer, wordRegion, element,
document));
}
}
@@ -113,15 +109,39 @@
return null;
}
- private boolean findAnnotation(IAnnotatable annotatable, IType type){
- try{
- IAnnotation[] annotations = annotatable.getAnnotations();
- for(IAnnotation annotation : annotations){
- if(annotation != null && annotation.getElementName() != null &&
CDIConstants.INJECT_ANNOTATION_TYPE_NAME.equals(EclipseJavaUtil.resolveType(type,
annotation.getElementName())))
- return true;
+ private IMember findMember(IJavaElement element){
+ IJavaElement elem = element;
+ while(elem != null){
+ if(elem instanceof IMember)
+ return (IMember)elem;
+ elem = elem.getParent();
+ }
+ return null;
+ }
+
+ private boolean findAnnotation(IJavaElement element){
+ if(element instanceof IAnnotatable){
+ IAnnotatable annotatable = (IAnnotatable) element;
+ IType type = null;
+ if(element instanceof IMember){
+ type = ((IMember)element).getDeclaringType();
+ try{
+ IAnnotation[] annotations = annotatable.getAnnotations();
+ for(IAnnotation annotation : annotations){
+ if(annotation != null && annotation.getElementName() != null &&
CDIConstants.INJECT_ANNOTATION_TYPE_NAME.equals(EclipseJavaUtil.resolveType(type,
annotation.getElementName())))
+ return true;
+ }
+ }catch (JavaModelException jme) {
+ CDIExtensionsPlugin.log(jme);
+ }
+ }else if(element instanceof ILocalVariable){
+ IMember member = findMember(element);
+ if(member == null)
+ return false;
+ type = member.getDeclaringType();
+ return true;
}
- }catch (JavaModelException jme) {
- CDIExtensionsPlugin.log(jme);
+
}
return false;