Author: scabanovich
Date: 2011-05-25 20:10:29 -0400 (Wed, 25 May 2011)
New Revision: 31501
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventAndObserverMethodHyperlinkDetector.java
Log:
JBIDE-9006
https://issues.jboss.org/browse/JBIDE-9006
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventAndObserverMethodHyperlinkDetector.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventAndObserverMethodHyperlinkDetector.java 2011-05-26
00:09:39 UTC (rev 31500)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/EventAndObserverMethodHyperlinkDetector.java 2011-05-26
00:10:29 UTC (rev 31501)
@@ -12,6 +12,7 @@
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashSet;
import java.util.Set;
import org.eclipse.core.resources.IFile;
@@ -107,7 +108,7 @@
ICDIProject cdiProject = cdiNature.getDelegate();
if(cdiProject != null){
IInjectionPoint injectionPoint = findInjectedPoint(cdiProject, element, position,
file);
- IParameter param = findObserverParameter(cdiProject, element, offset, file);
+ Set<IParameter> param = findObserverParameter(cdiProject, element, offset,
file);
if(injectionPoint != null){
Set<IObserverMethod> observerMethods =
cdiProject.resolveObserverMethods(injectionPoint);
@@ -115,7 +116,9 @@
hyperlinks.add(new ObserverMethodListHyperlink(textViewer, region,
observerMethods, document, hyperlinks.size()));
} else if(param != null) {
- Set<IInjectionPoint> events = cdiProject.findObservedEvents(param);
+ Set<IInjectionPoint> events = new HashSet<IInjectionPoint>();
+ for (IParameter p: param)
+ events.addAll(cdiProject.findObservedEvents(p));
if(events.size() > 0)
hyperlinks.add(new EventListHyperlink(textViewer, region, events, document,
hyperlinks.size()));
@@ -138,27 +141,26 @@
return CDIUtil.findInjectionPoint(beans, element, offset);
}
- private IParameter findObserverParameter(ICDIProject cdiProject, IJavaElement element,
int offset, IFile file) throws JavaModelException {
+ private Set<IParameter> findObserverParameter(ICDIProject cdiProject, IJavaElement
element, int offset, IFile file) throws JavaModelException {
+ HashSet<IParameter> result = new HashSet<IParameter>();
Set<IBean> beans = cdiProject.getBeans(file.getFullPath());
for (IBean bean: beans) {
if(bean instanceof IClassBean) {
- Set<IBeanMethod> observers = ((IClassBean)bean).getObserverMethods();
- for (IBeanMethod bm: observers) {
- if(bm instanceof IObserverMethod) {
- ISourceRange sr = bm.getMethod().getSourceRange();
- if(sr.getOffset() <= offset && sr.getOffset() + sr.getLength() >=
offset) {
- IObserverMethod obs = (IObserverMethod)bm;
- Set<IParameter> ps = obs.getObservedParameters();
- if(!ps.isEmpty()) {
- return ps.iterator().next();
- }
+ Set<IObserverMethod> observers = ((IClassBean)bean).getObserverMethods();
+ for (IObserverMethod bm: observers) {
+ ISourceRange sr = bm.getMethod().getSourceRange();
+ if(sr.getOffset() <= offset && sr.getOffset() + sr.getLength() >=
offset) {
+ IObserverMethod obs = (IObserverMethod)bm;
+ Set<IParameter> ps = obs.getObservedParameters();
+ if(!ps.isEmpty()) {
+ result.add(ps.iterator().next());
}
}
}
}
}
- return null;
+ return result;
}
}