Author: scabanovich
Date: 2011-11-01 20:40:04 -0400 (Tue, 01 Nov 2011)
New Revision: 36126
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.text.ext/src/org/jboss/tools/cdi/seam/text/ext/hyperlink/SolderDefaultBeanFilterContributor.java
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.text.ext/plugin.xml
Log:
JBIDE-10086
https://issues.jboss.org/browse/JBIDE-10086
DefaultBean filter for Assignable Beans dialog is implemented.
Modified: trunk/cdi/plugins/org.jboss.tools.cdi.seam.text.ext/plugin.xml
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.text.ext/plugin.xml 2011-11-02 00:39:43 UTC
(rev 36125)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.text.ext/plugin.xml 2011-11-02 00:40:04 UTC
(rev 36126)
@@ -80,4 +80,10 @@
</extension>
+<extension
+ point="org.jboss.tools.cdi.text.ext.assignableBeanFilterContributors">
+ <contributor
class="org.jboss.tools.cdi.seam.text.ext.hyperlink.SolderDefaultBeanFilterContributor"/>
+</extension>
+
+
</plugin>
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.text.ext/src/org/jboss/tools/cdi/seam/text/ext/hyperlink/SolderDefaultBeanFilterContributor.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.text.ext/src/org/jboss/tools/cdi/seam/text/ext/hyperlink/SolderDefaultBeanFilterContributor.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.text.ext/src/org/jboss/tools/cdi/seam/text/ext/hyperlink/SolderDefaultBeanFilterContributor.java 2011-11-02
00:40:04 UTC (rev 36126)
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * 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.seam.text.ext.hyperlink;
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.jboss.tools.cdi.core.IBean;
+import org.jboss.tools.cdi.core.IBeanMember;
+import org.jboss.tools.cdi.core.IInjectionPoint;
+import org.jboss.tools.cdi.core.IProducer;
+import org.jboss.tools.cdi.core.extension.ICDIExtension;
+import org.jboss.tools.cdi.seam.solder.core.CDISeamSolderDefaultBeanExtension;
+import org.jboss.tools.cdi.text.ext.hyperlink.AssignableBeanFilters;
+import org.jboss.tools.cdi.text.ext.hyperlink.AssignableBeanFilters.Filter;
+import org.jboss.tools.cdi.text.ext.hyperlink.AssignableBeanFilters.FilterContributor;
+
+/**
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class SolderDefaultBeanFilterContributor implements FilterContributor {
+ static final int OPTION_DEFAULT_BEAN = 21;
+
+ @Override
+ public void contribute(AssignableBeanFilters filters, IInjectionPoint injectionPoint) {
+ ICDIExtension ext =
injectionPoint.getCDIProject().getNature().getExtensionManager().getExtensionByRuntime("org.jboss.solder.bean.defaultbean.DefaultBeanExtension");
+ if(ext == null) {
+ return;
+ }
+ CDISeamSolderDefaultBeanExtension defaultBeanExtension =
(CDISeamSolderDefaultBeanExtension)ext;
+ filters.add(0, OPTION_DEFAULT_BEAN, "Eliminated @DefaultBean", new
DefaultBeanFilter(filters, injectionPoint, defaultBeanExtension));
+ }
+
+ class DefaultBeanFilter implements Filter {
+ AssignableBeanFilters filters;
+ IInjectionPoint injectionPoint;
+ CDISeamSolderDefaultBeanExtension defaultBeanExtension;
+ DefaultBeanFilter(AssignableBeanFilters filters, IInjectionPoint injectionPoint,
CDISeamSolderDefaultBeanExtension defaultBeanExtension) {
+ this.filters = filters;
+ this.injectionPoint = injectionPoint;
+ this.defaultBeanExtension = defaultBeanExtension;
+ }
+
+ @Override
+ public void filter(Set<IBean> beans) {
+ Set<IBean> eligible = new HashSet<IBean>(beans);
+ for (int i = AssignableBeanFilters.OPTION_UNAVAILABLE_BEANS + 1; i <
AssignableBeanFilters.OPTION_ELIMINATED_AMBIGUOUS; i++) {
+ Filter f = filters.getFilter(i);
+ if(f != null) {
+ f.filter(eligible);
+ }
+ }
+ boolean hasNonDefault = false;
+ for (IBean b: eligible) {
+ if(b.isEnabled() && !defaultBeanExtension.isBeanDefault(b)) {
+ hasNonDefault = true;
+ }
+ }
+ if(hasNonDefault) {
+ Iterator<IBean> it = beans.iterator();
+ while(it.hasNext()) {
+ IBean bean = it.next();
+ if(!eligible.contains(bean) || !defaultBeanExtension.isBeanDefault(bean)) continue;
+ it.remove();
+ }
+ }
+ }
+
+ }
+
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.text.ext/src/org/jboss/tools/cdi/seam/text/ext/hyperlink/SolderDefaultBeanFilterContributor.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain