Author: dazarov
Date: 2011-08-30 14:54:25 -0400 (Tue, 30 Aug 2011)
New Revision: 34406
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.ui/src/org/jboss/tools/cdi/seam/config/ui/marker/
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.ui/src/org/jboss/tools/cdi/seam/config/ui/marker/CDIMarkerResolutionGeneratorExtension.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/schema/quickFixExtension.exsd
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/CDIQuickFixExtensionManager.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/ICDIMarkerResolutionGeneratorExtension.java
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.ui/META-INF/MANIFEST.MF
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.ui/plugin.xml
trunk/cdi/plugins/org.jboss.tools.cdi.ui/plugin.xml
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/CDIProblemMarkerResolutionGenerator.java
Log:
Disabled quick fixes for case of generic beans
Quick fix for "Multiple beans are eligible for injection point" problem markers
works wrong in case of working with generic beans.
https://issues.jboss.org/browse/JBIDE-9115
Modified: trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.ui/META-INF/MANIFEST.MF
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.ui/META-INF/MANIFEST.MF 2011-08-30
18:44:04 UTC (rev 34405)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.ui/META-INF/MANIFEST.MF 2011-08-30
18:54:25 UTC (rev 34406)
@@ -20,6 +20,7 @@
org.jboss.tools.cdi.seam.config.core,
org.jboss.tools.cdi.seam.solder.core,
org.jboss.tools.jst.web.kb,
- org.jboss.tools.jst.web
+ org.jboss.tools.jst.web,
+ org.eclipse.ui.ide;bundle-version="3.7.0"
Bundle-Version: 1.2.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Modified: trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.ui/plugin.xml
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.ui/plugin.xml 2011-08-30 18:44:04
UTC (rev 34405)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.ui/plugin.xml 2011-08-30 18:54:25
UTC (rev 34406)
@@ -32,4 +32,11 @@
class="org.jboss.tools.cdi.seam.config.ui.preferences.CDISeamConfigurationBlockDescriptionProvider">
</provider>
</extension>
+<extension
+ point="org.jboss.tools.cdi.ui.quickFixExtension">
+ <resolution_generator_extension
+
generator-extension-class="org.jboss.tools.cdi.seam.config.ui.marker.CDIMarkerResolutionGeneratorExtension"
+
id="org.jboss.tools.cdi.seam.config.ui.resolution_generator_extension">
+ </resolution_generator_extension>
+</extension>
</plugin>
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.ui/src/org/jboss/tools/cdi/seam/config/ui/marker/CDIMarkerResolutionGeneratorExtension.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.ui/src/org/jboss/tools/cdi/seam/config/ui/marker/CDIMarkerResolutionGeneratorExtension.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.ui/src/org/jboss/tools/cdi/seam/config/ui/marker/CDIMarkerResolutionGeneratorExtension.java 2011-08-30
18:54:25 UTC (rev 34406)
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * 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.config.ui.marker;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.ui.IMarkerResolution;
+import org.jboss.tools.cdi.core.IBean;
+import org.jboss.tools.cdi.internal.core.validation.CDIValidationErrorManager;
+import org.jboss.tools.cdi.seam.solder.core.generic.GenericBeanProducerField;
+import org.jboss.tools.cdi.seam.solder.core.generic.GenericBeanProducerMethod;
+import org.jboss.tools.cdi.seam.solder.core.generic.GenericClassBean;
+import org.jboss.tools.cdi.ui.marker.ICDIMarkerResolutionGeneratorExtension;
+
+public class CDIMarkerResolutionGeneratorExtension implements
+ ICDIMarkerResolutionGeneratorExtension {
+
+ private boolean isBeanGeneric(IBean bean){
+ return (bean instanceof GenericClassBean ||
+ bean instanceof GenericBeanProducerField ||
+ bean instanceof GenericBeanProducerMethod);
+ }
+
+ @Override
+ public boolean shouldBeExtended(int id, IBean bean) {
+ return (id == CDIValidationErrorManager.AMBIGUOUS_INJECTION_POINTS_ID || id ==
CDIValidationErrorManager.UNSATISFIED_INJECTION_POINTS_ID) &&
+ isBeanGeneric(bean);
+ }
+
+ @Override
+ public List<IMarkerResolution> getResolutions(int id, IBean bean) {
+ return Collections.emptyList();
+ }
+
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.ui/src/org/jboss/tools/cdi/seam/config/ui/marker/CDIMarkerResolutionGeneratorExtension.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/cdi/plugins/org.jboss.tools.cdi.ui/plugin.xml
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.ui/plugin.xml 2011-08-30 18:44:04 UTC (rev
34405)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.ui/plugin.xml 2011-08-30 18:54:25 UTC (rev
34406)
@@ -2,6 +2,7 @@
<?eclipse version="3.2"?>
<plugin>
<extension-point id="configBlockDescriptionProvider" name="Config
Block Description Provider"
schema="schema/configBlockDescriptionProvider.exsd"/>
+ <extension-point id="quickFixExtension" name="Quick Fix
Extension" schema="schema/quickFixExtension.exsd"/>
<extension
point="org.eclipse.ui.propertyPages">
Added: trunk/cdi/plugins/org.jboss.tools.cdi.ui/schema/quickFixExtension.exsd
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.ui/schema/quickFixExtension.exsd
(rev 0)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.ui/schema/quickFixExtension.exsd 2011-08-30
18:54:25 UTC (rev 34406)
@@ -0,0 +1,133 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.jboss.tools.cdi.ui"
xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.jboss.tools.cdi.ui"
id="quickFixExtension" name="Quick Fix Extension"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appInfo>
+ <meta.element />
+ </appInfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="resolution_generator_extension"
minOccurs="1" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="point" type="string"
use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="resolution_generator_extension">
+ <complexType>
+ <attribute name="id" type="string"
use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="identifier"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="generator-extension-class" type="string"
use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java"
basedOn=":org.jboss.tools.cdi.ui.marker.ICDIMarkerResolutionGeneratorExtension"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ JBoss Tools 3.3
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ <extension
point="org.jboss.tools.cdi.ui.quickFixExtension">
+ <resolution_generator_extension
+ generator-extension-class =
"org.jboss.tools.cdi.seam.config.ui.marker.CDIMarkerResolutionGeneratorExtension"
+
id="org.jboss.tools.cdi.seam.config.ui.resolution_generator_extension">
+ </resolution_generator_extension>
+</extension>
+
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiinfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="copyright"/>
+ </appInfo>
+ <documentation>
+ 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
+ </documentation>
+ </annotation>
+
+</schema>
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/schema/quickFixExtension.exsd
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/CDIProblemMarkerResolutionGenerator.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/CDIProblemMarkerResolutionGenerator.java 2011-08-30
18:44:04 UTC (rev 34405)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/CDIProblemMarkerResolutionGenerator.java 2011-08-30
18:54:25 UTC (rev 34406)
@@ -44,11 +44,9 @@
import org.jboss.tools.cdi.internal.core.validation.CDIValidationErrorManager;
import org.jboss.tools.cdi.ui.CDIUIPlugin;
import org.jboss.tools.common.EclipseUtil;
-import org.jboss.tools.common.java.IAnnotated;
import org.jboss.tools.common.java.IAnnotationDeclaration;
import org.jboss.tools.common.model.util.EclipseJavaUtil;
import org.jboss.tools.common.model.util.EclipseResourceUtil;
-import org.jboss.tools.common.text.ITextSourceReference;
/**
* @author Daniel Azarov
@@ -93,6 +91,8 @@
if (attribute == null)
return new IMarkerResolution[] {};
final int start = attribute.intValue();
+
+ ICDIMarkerResolutionGeneratorExtension[] extensions =
CDIQuickFixExtensionManager.getInstances();
if (JAVA_EXTENSION.equals(file.getFileExtension())) {
if (messageId == CDIValidationErrorManager.ILLEGAL_PRODUCER_FIELD_IN_SESSION_BEAN_ID)
{
@@ -135,39 +135,41 @@
new DeleteAllInjectedConstructorsMarkerResolution(method, file)
};
}
- }else if(messageId == CDIValidationErrorManager.AMBIGUOUS_INJECTION_POINTS_ID){
+ }else if(messageId == CDIValidationErrorManager.AMBIGUOUS_INJECTION_POINTS_ID ||
+ messageId == CDIValidationErrorManager.UNSATISFIED_INJECTION_POINTS_ID){
+
+ List<IMarkerResolution> resolutions = new
ArrayList<IMarkerResolution>();
+
IInjectionPoint injectionPoint = findInjectionPoint(file, start);
if(injectionPoint != null){
- List<IBean> beans = findBeans(injectionPoint);
- if(beans.size() < MARKER_RESULUTION_NUMBER_LIMIT){
- IMarkerResolution[] resolutions = new IMarkerResolution[beans.size()];
- for(int i = 0; i < beans.size(); i++){
- resolutions[i] = new MakeInjectedPointUnambiguousMarkerResolution(injectionPoint,
beans, i);
- }
- return resolutions;
+ List<IBean> beans;
+ if(messageId == CDIValidationErrorManager.AMBIGUOUS_INJECTION_POINTS_ID){
+ beans = findBeans(injectionPoint);
}else{
- IMarkerResolution[] resolutions = new IMarkerResolution[1];
- resolutions[0] = new SelectBeanMarkerResolution(injectionPoint, beans);
- return resolutions;
+ beans = findLegalBeans(injectionPoint);
}
- }
- }else if(messageId == CDIValidationErrorManager.UNSATISFIED_INJECTION_POINTS_ID){
- IInjectionPoint injectionPoint = findInjectionPoint(file, start);
- if(injectionPoint != null){
- List<IBean> beans = findLegalBeans(injectionPoint);
- if(beans.size() < MARKER_RESULUTION_NUMBER_LIMIT){
- IMarkerResolution[] resolutions = new IMarkerResolution[beans.size()];
+ for(int i = beans.size()-1; i >= 0; i--){
+ IBean bean = beans.get(i);
+ for(ICDIMarkerResolutionGeneratorExtension extension : extensions){
+ if(extension.shouldBeExtended(messageId, bean)){
+ List<IMarkerResolution> addings = extension.getResolutions(messageId,
bean);
+ resolutions.addAll(addings);
+ beans.remove(bean);
+ break;
+ }
+ }
+ }
+
+ if(beans.size() < MARKER_RESULUTION_NUMBER_LIMIT){
for(int i = 0; i < beans.size(); i++){
- resolutions[i] = new MakeInjectedPointUnambiguousMarkerResolution(injectionPoint,
beans, i);
+ resolutions.add(new MakeInjectedPointUnambiguousMarkerResolution(injectionPoint,
beans, i));
}
- return resolutions;
}else{
- IMarkerResolution[] resolutions = new IMarkerResolution[1];
- resolutions[0] = new SelectBeanMarkerResolution(injectionPoint, beans);
- return resolutions;
+ resolutions.add(new SelectBeanMarkerResolution(injectionPoint, beans));
}
}
+ return resolutions.toArray(new IMarkerResolution[]{});
}else if(messageId == CDIValidationErrorManager.NOT_PASSIVATION_CAPABLE_BEAN_ID){
IType type = findTypeWithNoSerializable(file, start);
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/CDIQuickFixExtensionManager.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/CDIQuickFixExtensionManager.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/CDIQuickFixExtensionManager.java 2011-08-30
18:54:25 UTC (rev 34406)
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * 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.ui.marker;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.Platform;
+import org.jboss.tools.common.el.core.ELCorePlugin;
+
+public class CDIQuickFixExtensionManager {
+ public static String EXTENSION_POINT =
"org.jboss.tools.cdi.ui.quickFixExtension"; //$NON-NLS-1$
+
+ String id;
+ ICDIMarkerResolutionGeneratorExtension extension;
+
+ public CDIQuickFixExtensionManager() {}
+
+ public String getId() {
+ return id;
+ }
+
+ static ICDIMarkerResolutionGeneratorExtension[] INSTANCES;
+
+ public static ICDIMarkerResolutionGeneratorExtension[] getInstances() {
+ if(INSTANCES != null) return INSTANCES;
+ List<ICDIMarkerResolutionGeneratorExtension> list = new
ArrayList<ICDIMarkerResolutionGeneratorExtension>();
+ IExtensionPoint point =
Platform.getExtensionRegistry().getExtensionPoint(EXTENSION_POINT);
+ IConfigurationElement[] es = point.getConfigurationElements();
+ for (IConfigurationElement e: es) {
+ CDIQuickFixExtensionManager n = new CDIQuickFixExtensionManager();
+ n.id = e.getAttribute("id"); //$NON-NLS-1$
+ try{
+ n.extension =
(ICDIMarkerResolutionGeneratorExtension)e.createExecutableExtension("generator-extension-class");
//$NON-NLS-1$
+ list.add(n.extension);
+ }catch(CoreException ex){
+ ELCorePlugin.getDefault().logError(ex);
+ }
+
+ }
+ return INSTANCES = list.toArray(new ICDIMarkerResolutionGeneratorExtension[0]);
+ }
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/CDIQuickFixExtensionManager.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/ICDIMarkerResolutionGeneratorExtension.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/ICDIMarkerResolutionGeneratorExtension.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/ICDIMarkerResolutionGeneratorExtension.java 2011-08-30
18:54:25 UTC (rev 34406)
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * 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.ui.marker;
+
+import java.util.List;
+
+import org.eclipse.ui.IMarkerResolution;
+import org.jboss.tools.cdi.core.IBean;
+
+
+public interface ICDIMarkerResolutionGeneratorExtension{
+ public boolean shouldBeExtended(int id, IBean bean);
+ public List<IMarkerResolution> getResolutions(int id, IBean bean);
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/ICDIMarkerResolutionGeneratorExtension.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain