Author: akazakov
Date: 2009-12-25 14:28:46 -0500 (Fri, 25 Dec 2009)
New Revision: 19594
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IBeanManager.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/el/CdiElResolver.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-5383
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IBeanManager.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IBeanManager.java 2009-12-25
19:27:02 UTC (rev 19593)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IBeanManager.java 2009-12-25
19:28:46 UTC (rev 19594)
@@ -27,10 +27,18 @@
/**
* Returns all @Named beans.
- *
+ *
+ * @param attemptToResolveAmbiguousNames
+ * if there are a few beans with the same name and
+ * attemptToResolveAmbiguousNames==true the manager should try to
+ * resolve the EL name. If any of the beans are alternatives, the
+ * manager will eliminate all beans that are not alternatives,
+ * expect for producer methods and fields of beans that are
+ * alternatives. If the name of a bean is not resolvable then
+ * both beans would be included in the result list.
* @return all @Named beans
*/
- Set<IBean> getNamedBeans();
+ Set<IBean> getNamedBeans(boolean attemptToResolveAmbiguousNames);
/**
* Returns the set of beans which match the given EL name.
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/el/CdiElResolver.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/el/CdiElResolver.java 2009-12-25
19:27:02 UTC (rev 19593)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/el/CdiElResolver.java 2009-12-25
19:28:46 UTC (rev 19594)
@@ -95,7 +95,7 @@
resolvedBeans = manager.getBeans(varName, true);
beans.addAll(resolvedBeans);
} else {
- resolvedBeans = manager.getNamedBeans();
+ resolvedBeans = manager.getNamedBeans(true);
for (IBean bean : resolvedBeans) {
if(bean.getName().startsWith(varName)) {
beans.add(bean);
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java 2009-12-25
19:27:02 UTC (rev 19593)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java 2009-12-25
19:28:46 UTC (rev 19594)
@@ -27,7 +27,6 @@
import org.eclipse.jdt.core.JavaModelException;
import org.jboss.tools.cdi.core.CDIConstants;
import org.jboss.tools.cdi.core.CDICoreNature;
-import org.jboss.tools.cdi.core.CDICorePlugin;
import org.jboss.tools.cdi.core.IAnnotationDeclaration;
import org.jboss.tools.cdi.core.IBean;
import org.jboss.tools.cdi.core.ICDIProject;
@@ -153,7 +152,7 @@
public Set<IBean> getBeans(boolean attemptToResolveAmbiguousDependency,
IType beanType, IAnnotationDeclaration... qualifiers) {
- // TODO Auto-generated method stub
+ // TODO
return null;
}
@@ -514,12 +513,29 @@
/*
* (non-Javadoc)
- * @see org.jboss.tools.cdi.core.IBeanManager#getNamedBeans()
+ * @see org.jboss.tools.cdi.core.IBeanManager#getNamedBeans(boolean)
*/
- public Set<IBean> getNamedBeans() {
+ public Set<IBean> getNamedBeans(boolean attemptToResolveAmbiguousNames) {
+ //TODO use a cache for named beans with attemptToResolveAmbiguousNames==true
Set<IBean> result = new HashSet<IBean>();
synchronized (namedBeans) {
- result.addAll(namedBeans);
+ if(attemptToResolveAmbiguousNames) {
+ Set<String> names = new HashSet<String>();
+ for (IBean bean : result) {
+ if(names.contains(bean.getName())) {
+ continue;
+ }
+ Set<IBean> beans = getBeans(bean.getName(), attemptToResolveAmbiguousNames);
+ if(beans.isEmpty()) {
+ result.add(bean);
+ } else {
+ result.addAll(beans);
+ names.add(bean.getName());
+ }
+ }
+ } else {
+ result.addAll(namedBeans);
+ }
}
return result;
}