Author: scabanovich
Date: 2011-04-15 19:43:26 -0400 (Fri, 15 Apr 2011)
New Revision: 30617
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/feature/IAmbiguousBeanResolverFeature.java
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/CDIExtensionFactory.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/CDIExtensionManager.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java
Log:
JBIDE-8716
https://issues.jboss.org/browse/JBIDE-8716
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/CDIExtensionFactory.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/CDIExtensionFactory.java 2011-04-15
23:06:43 UTC (rev 30616)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/CDIExtensionFactory.java 2011-04-15
23:43:26 UTC (rev 30617)
@@ -21,6 +21,7 @@
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.Platform;
import org.jboss.tools.cdi.core.CDICorePlugin;
+import org.jboss.tools.cdi.core.extension.feature.IAmbiguousBeanResolverFeature;
import org.jboss.tools.cdi.core.extension.feature.IBuildParticipantFeature;
import org.jboss.tools.cdi.core.extension.feature.IProcessAnnotatedTypeFeature;
@@ -46,7 +47,8 @@
public static Class<?>[] FEATURES = {
IBuildParticipantFeature.class,
- IProcessAnnotatedTypeFeature.class,
+ IProcessAnnotatedTypeFeature.class,
+ IAmbiguousBeanResolverFeature.class
};
public static CDIExtensionFactory getInstance() {
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/CDIExtensionManager.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/CDIExtensionManager.java 2011-04-15
23:06:43 UTC (rev 30616)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/CDIExtensionManager.java 2011-04-15
23:43:26 UTC (rev 30617)
@@ -17,6 +17,7 @@
import java.util.Set;
import org.jboss.tools.cdi.core.CDICoreNature;
+import org.jboss.tools.cdi.core.extension.feature.IAmbiguousBeanResolverFeature;
import org.jboss.tools.cdi.core.extension.feature.IBuildParticipantFeature;
import org.jboss.tools.cdi.core.extension.feature.IProcessAnnotatedTypeFeature;
@@ -141,6 +142,14 @@
return result;
}
+ public Set<IAmbiguousBeanResolverFeature> getAmbiguousBeanResolverFeature() {
+ Set<IAmbiguousBeanResolverFeature> result =
featureStorage.ambiguousBeanResolver;
+ if(result == null) {
+ featureStorage.ambiguousBeanResolver = result =
getFeature(IAmbiguousBeanResolverFeature.class);
+ }
+ return result;
+ }
+
private <F extends Object> Set<F> getFeature(Class<F> cls) {
Set<F> result = new HashSet<F>();
Set<ICDIExtension> extensions = getExtensions(cls);
@@ -158,10 +167,12 @@
class FeatureStorage {
Set<IBuildParticipantFeature> buildParticipant = null;
Set<IProcessAnnotatedTypeFeature> processAnnotatedType = null;
+ Set<IAmbiguousBeanResolverFeature> ambiguousBeanResolver = null;
void clean() {
processAnnotatedType = null;
buildParticipant = null;
+ ambiguousBeanResolver = null;
}
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/feature/IAmbiguousBeanResolverFeature.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/feature/IAmbiguousBeanResolverFeature.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/feature/IAmbiguousBeanResolverFeature.java 2011-04-15
23:43:26 UTC (rev 30617)
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.cdi.core.extension.feature;
+
+import java.util.Set;
+
+import org.jboss.tools.cdi.core.IBean;
+
+/**
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
+public interface IAmbiguousBeanResolverFeature {
+
+ public Set<IBean> getResolvedBeans(Set<IBean> result);
+
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/feature/IAmbiguousBeanResolverFeature.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
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 2011-04-15
23:06:43 UTC (rev 30616)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java 2011-04-15
23:43:26 UTC (rev 30617)
@@ -56,6 +56,7 @@
import org.jboss.tools.cdi.core.IQualifierDeclaration;
import org.jboss.tools.cdi.core.IScope;
import org.jboss.tools.cdi.core.IStereotype;
+import org.jboss.tools.cdi.core.extension.feature.IAmbiguousBeanResolverFeature;
import org.jboss.tools.cdi.core.extension.feature.IBuildParticipantFeature;
import org.jboss.tools.cdi.internal.core.impl.definition.AnnotationDefinition;
import org.jboss.tools.cdi.internal.core.impl.definition.BeansXMLDefinition;
@@ -228,18 +229,27 @@
result.removeAll(disabled);
}
- if(!containsAlternatives) return result;
-
- it = result.iterator();
- while(it.hasNext()) {
- IBean bean = it.next();
- if(bean.isAlternative()) continue;
- if(bean instanceof IProducer && bean instanceof IBeanMember) {
- IBeanMember p = (IBeanMember)bean;
- if(p.getClassBean() != null && p.getClassBean().isAlternative()) continue;
+ if(containsAlternatives) {
+ it = result.iterator();
+ while(it.hasNext()) {
+ IBean bean = it.next();
+ if(bean.isAlternative()) continue;
+ if(bean instanceof IProducer && bean instanceof IBeanMember) {
+ IBeanMember p = (IBeanMember)bean;
+ if(p.getClassBean() != null && p.getClassBean().isAlternative()) continue;
+ }
+ it.remove();
}
- it.remove();
}
+
+ if(result.size() > 1) {
+ Set<IAmbiguousBeanResolverFeature> extensions =
getExtensionManager().getAmbiguousBeanResolverFeature();
+ for (IAmbiguousBeanResolverFeature e: extensions) {
+ result = e.getResolvedBeans(result);
+ if(result.size() < 2) return result;
+ }
+ }
+
return result;
}