Author: dazarov
Date: 2011-07-22 19:32:04 -0400 (Fri, 22 Jul 2011)
New Revision: 33150
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/quickfixes/TestDecorator.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/quickfixes/TestInterceptor3.java
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDIValidationErrorManager.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddAnnotationMarkerResolution.java
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/DeleteAnnotationMarkerResolution.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MarkerResolutionUtils.java
trunk/cdi/tests/org.jboss.tools.cdi.ui.test/src/org/jboss/tools/cdi/ui/test/marker/CDIMarkerResolutionTest.java
Log:
https://issues.jboss.org/browse/JBIDE-7684
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java 2011-07-22
20:56:58 UTC (rev 33149)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java 2011-07-22
23:32:04 UTC (rev 33150)
@@ -1069,9 +1069,9 @@
decoratorDeclaration = decorator.getNameLocation();
}
addError(CDIValidationMessages.DISPOSER_IN_DECORATOR,
CDIPreferences.DISPOSER_IN_INTERCEPTOR_OR_DECORATOR, decoratorDeclaration, bean
- .getResource());
+ .getResource(), DISPOSER_IN_DECORATOR_ID);
for (ITextSourceReference declaration : disposerDeclarations) {
- addError(CDIValidationMessages.DISPOSER_IN_DECORATOR,
CDIPreferences.DISPOSER_IN_INTERCEPTOR_OR_DECORATOR, declaration, bean.getResource());
+ addError(CDIValidationMessages.DISPOSER_IN_DECORATOR,
CDIPreferences.DISPOSER_IN_INTERCEPTOR_OR_DECORATOR, declaration, bean.getResource(),
DISPOSER_IN_DECORATOR_ID);
}
}
@@ -1087,10 +1087,10 @@
interceptorDeclaration = interceptor.getNameLocation();
}
addError(CDIValidationMessages.DISPOSER_IN_INTERCEPTOR,
CDIPreferences.DISPOSER_IN_INTERCEPTOR_OR_DECORATOR, interceptorDeclaration, bean
- .getResource());
+ .getResource(), DISPOSER_IN_INTERCEPTOR_ID);
for (ITextSourceReference declaration : disposerDeclarations) {
addError(CDIValidationMessages.DISPOSER_IN_INTERCEPTOR,
CDIPreferences.DISPOSER_IN_INTERCEPTOR_OR_DECORATOR, declaration, bean
- .getResource());
+ .getResource(), DISPOSER_IN_INTERCEPTOR_ID);
}
}
@@ -1926,7 +1926,7 @@
*/
Set<IProducer> producers = interceptor.getProducers();
for (IProducer producer : producers) {
- addError(CDIValidationMessages.PRODUCER_IN_INTERCEPTOR,
CDIPreferences.PRODUCER_IN_INTERCEPTOR_OR_DECORATOR, producer.getProducesAnnotation(),
interceptor.getResource());
+ addError(CDIValidationMessages.PRODUCER_IN_INTERCEPTOR,
CDIPreferences.PRODUCER_IN_INTERCEPTOR_OR_DECORATOR, producer.getProducesAnnotation(),
interceptor.getResource(), PRODUCER_IN_INTERCEPTOR_ID);
}
/*
* 9.2. Declaring the interceptor bindings of an interceptor
@@ -2014,7 +2014,7 @@
*/
Set<IProducer> producers = decorator.getProducers();
for (IProducer producer : producers) {
- addError(CDIValidationMessages.PRODUCER_IN_DECORATOR,
CDIPreferences.PRODUCER_IN_INTERCEPTOR_OR_DECORATOR, producer.getProducesAnnotation(),
decorator.getResource());
+ addError(CDIValidationMessages.PRODUCER_IN_DECORATOR,
CDIPreferences.PRODUCER_IN_INTERCEPTOR_OR_DECORATOR, producer.getProducesAnnotation(),
decorator.getResource(), PRODUCER_IN_DECORATOR_ID);
}
Set<IInjectionPoint> injections = decorator.getInjectionPoints();
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDIValidationErrorManager.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDIValidationErrorManager.java 2011-07-22
20:56:58 UTC (rev 33149)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDIValidationErrorManager.java 2011-07-22
23:32:04 UTC (rev 33150)
@@ -42,9 +42,12 @@
public static final int PRODUCER_ANNOTATED_INJECT_ID = 21;
public static final int OBSERVER_ANNOTATED_INJECT_ID = 22;
public static final int DISPOSER_ANNOTATED_INJECT_ID = 23;
-
public static final int CONSTRUCTOR_PARAMETER_ANNOTATED_OBSERVES_ID = 24;
public static final int CONSTRUCTOR_PARAMETER_ANNOTATED_DISPOSES_ID = 25;
+ public static final int PRODUCER_IN_INTERCEPTOR_ID = 26;
+ public static final int PRODUCER_IN_DECORATOR_ID = 27;
+ public static final int DISPOSER_IN_INTERCEPTOR_ID = 28;
+ public static final int DISPOSER_IN_DECORATOR_ID = 29;
/*
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddAnnotationMarkerResolution.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddAnnotationMarkerResolution.java 2011-07-22
20:56:58 UTC (rev 33149)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/AddAnnotationMarkerResolution.java 2011-07-22
23:32:04 UTC (rev 33150)
@@ -44,7 +44,7 @@
}else if(element instanceof IField){
type = "field";
}else if(element instanceof ILocalVariable && ((ILocalVariable)
element).isParameter()){
- type = "parameter";
+ type = "parameter of '"+element.getParent().getElementName()+"'
method";
}
label = NLS.bind(CDIUIMessages.ADD_ANNOTATION_MARKER_RESOLUTION_TITLE, new
String[]{shortName, element.getElementName(), type});
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-07-22
20:56:58 UTC (rev 33149)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/CDIProblemMarkerResolutionGenerator.java 2011-07-22
23:32:04 UTC (rev 33150)
@@ -328,6 +328,30 @@
};
}
}
+ }else if(messageId == CDIValidationErrorManager.DISPOSER_IN_INTERCEPTOR_ID){
+ IJavaElement element = findJavaElement(file, start);
+ if(element != null){
+ IJavaElement disposerElement = findJavaElementByAnnotation(element,
CDIConstants.DISPOSES_ANNOTATION_TYPE_NAME);
+ IJavaElement interceptorElement = findJavaElementByAnnotation(element,
CDIConstants.INTERCEPTOR_ANNOTATION_TYPE_NAME);
+ if(disposerElement != null && interceptorElement != null){
+ return new IMarkerResolution[] {
+ new DeleteAnnotationMarkerResolution(disposerElement,
CDIConstants.DISPOSES_ANNOTATION_TYPE_NAME),
+ new DeleteAnnotationMarkerResolution(interceptorElement,
CDIConstants.INTERCEPTOR_ANNOTATION_TYPE_NAME)
+ };
+ }
+ }
+ }else if(messageId == CDIValidationErrorManager.DISPOSER_IN_DECORATOR_ID){
+ IJavaElement element = findJavaElement(file, start);
+ if(element != null){
+ IJavaElement disposerElement = findJavaElementByAnnotation(element,
CDIConstants.DISPOSES_ANNOTATION_TYPE_NAME);
+ IJavaElement decoratorElement = findJavaElementByAnnotation(element,
CDIConstants.DECORATOR_TYPE_NAME);
+ if(disposerElement != null && decoratorElement != null){
+ return new IMarkerResolution[] {
+ new DeleteAnnotationMarkerResolution(disposerElement,
CDIConstants.DISPOSES_ANNOTATION_TYPE_NAME),
+ new DeleteAnnotationMarkerResolution(decoratorElement,
CDIConstants.DECORATOR_TYPE_NAME)
+ };
+ }
+ }
}
}
return new IMarkerResolution[] {};
@@ -577,7 +601,31 @@
if(annotation != null)
return parent;
}
+ }else if(element instanceof IType){
+ for(IField field : ((IType)element).getFields()){
+ annotation = getAnnotation(field, qualifiedName);
+ if(annotation != null)
+ return field;
+ }
+
+ for(IMethod method : ((IType)element).getMethods()){
+ annotation = getAnnotation(method, qualifiedName);
+ if(annotation != null)
+ return method;
+ for(ILocalVariable parameter : method.getParameters()){
+ annotation = getAnnotation(parameter, qualifiedName);
+ if(annotation != null)
+ return parameter;
+ }
+ }
}
+
+ if(element instanceof IMember){
+ annotation = getAnnotation(((IMember)element).getDeclaringType(), qualifiedName);
+ if(annotation != null)
+ return ((IMember)element).getDeclaringType();
+ }
+
return null;
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/DeleteAnnotationMarkerResolution.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/DeleteAnnotationMarkerResolution.java 2011-07-22
20:56:58 UTC (rev 33149)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/DeleteAnnotationMarkerResolution.java 2011-07-22
23:32:04 UTC (rev 33150)
@@ -44,7 +44,7 @@
}else if(element instanceof IField){
type = "field";
}else if(element instanceof ILocalVariable && ((ILocalVariable)
element).isParameter()){
- type = "parameter";
+ type = "parameter of '"+element.getParent().getElementName()+"'
method";
}
label = NLS.bind(CDIUIMessages.DELETE_ANNOTATION_MARKER_RESOLUTION_TITLE, new
String[]{shortName, element.getElementName(), type});
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MarkerResolutionUtils.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MarkerResolutionUtils.java 2011-07-22
20:56:58 UTC (rev 33149)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MarkerResolutionUtils.java 2011-07-22
23:32:04 UTC (rev 33150)
@@ -264,15 +264,17 @@
if (annotation == null || !annotation.exists()) {
annotation = ((IAnnotatable)element).getAnnotation(name);
}
- IMember member=null;
- if(element instanceof IMember){
- member = (IMember)element;
+ IType type=null;
+ if(element instanceof IType){
+ type = (IType)element;
+ }else if(element instanceof IMember){
+ type = ((IMember)element).getDeclaringType();
}else if(element instanceof ITypeParameter){
- member = ((ITypeParameter)element).getDeclaringMember();
+ type = ((ITypeParameter)element).getDeclaringMember().getDeclaringType();
}else if(element instanceof ILocalVariable){
- member = ((ILocalVariable)element).getDeclaringMember();
+ type = ((ILocalVariable)element).getDeclaringMember().getDeclaringType();
}
- if (member != null && annotation != null &&
qualifiedName.equals(EclipseJavaUtil.resolveType(member.getDeclaringType(), name))) {
+ if (type != null && annotation != null &&
qualifiedName.equals(EclipseJavaUtil.resolveType(type, name))) {
return annotation;
}
}
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/quickfixes/TestDecorator.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/quickfixes/TestDecorator.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/quickfixes/TestDecorator.java 2011-07-22
23:32:04 UTC (rev 33150)
@@ -0,0 +1,12 @@
+package org.jboss.jsr299.tck.tests.jbt.quickfixes;
+
+import javax.decorator.Decorator;
+import javax.enterprise.inject.Disposes;
+
+@Decorator
+public class TestDecorator {
+
+ public void method(@Disposes String parameter){
+
+ }
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/quickfixes/TestDecorator.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/quickfixes/TestInterceptor3.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/quickfixes/TestInterceptor3.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/quickfixes/TestInterceptor3.java 2011-07-22
23:32:04 UTC (rev 33150)
@@ -0,0 +1,12 @@
+package org.jboss.jsr299.tck.tests.jbt.quickfixes;
+
+import javax.enterprise.inject.Disposes;
+import javax.interceptor.Interceptor;
+
+@Interceptor
+public class TestInterceptor3 {
+
+ public void method(@Disposes String parameter){
+
+ }
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/quickfixes/TestInterceptor3.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.ui.test/src/org/jboss/tools/cdi/ui/test/marker/CDIMarkerResolutionTest.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.ui.test/src/org/jboss/tools/cdi/ui/test/marker/CDIMarkerResolutionTest.java 2011-07-22
20:56:58 UTC (rev 33149)
+++
trunk/cdi/tests/org.jboss.tools.cdi.ui.test/src/org/jboss/tools/cdi/ui/test/marker/CDIMarkerResolutionTest.java 2011-07-22
23:32:04 UTC (rev 33150)
@@ -679,4 +679,26 @@
DeleteAnnotationMarkerResolution.class);
}
+ public void testDeleteDisposerFromInterceptorResolution() throws CoreException{
+ checkResolution(tckProject,
+ new String[]{
+ "JavaSource/org/jboss/jsr299/tck/tests/jbt/quickfixes/TestInterceptor3.java"
+ },
+ CDICoreValidator.PROBLEM_TYPE,
+ CDIValidationErrorManager.MESSAGE_ID_ATTRIBUTE_NAME,
+ CDIValidationErrorManager.DISPOSER_IN_INTERCEPTOR_ID,
+ DeleteAnnotationMarkerResolution.class);
+ }
+
+ public void testDeleteDisposerFromDecoratorResolution() throws CoreException{
+ checkResolution(tckProject,
+ new String[]{
+ "JavaSource/org/jboss/jsr299/tck/tests/jbt/quickfixes/TestDecorator.java"
+ },
+ CDICoreValidator.PROBLEM_TYPE,
+ CDIValidationErrorManager.MESSAGE_ID_ATTRIBUTE_NAME,
+ CDIValidationErrorManager.DISPOSER_IN_DECORATOR_ID,
+ DeleteAnnotationMarkerResolution.class);
+ }
+
}
\ No newline at end of file