Author: akazakov
Date: 2010-04-30 11:49:13 -0400 (Fri, 30 Apr 2010)
New Revision: 21832
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/beans.xml
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/disposers/
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/disposers/Spider.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/disposers/TimestampLogger.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/disposers/beans.xml
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/interceptors/FordInterceptor.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/interceptors/Spider.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/interceptors/Transactional.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/interceptors/beans.xml
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/CDIValidationMessages.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/messages.properties
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/preferences/CDIConfigurationBlock.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/ValidationTest.java
trunk/tests/plugins/org.jboss.tools.tests/src/org/jboss/tools/tests/AbstractResourceMarkerTest.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-2708 Added new validation rules
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 2010-04-30
14:55:55 UTC (rev 21831)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java 2010-04-30
15:49:13 UTC (rev 21832)
@@ -312,6 +312,7 @@
Set<IBeanMethod> disposers = bean.getDisposers();
for (IBeanMethod disposer : disposers) {
List<IParameter> params = disposer.getParameters();
+
/*
* 3.3.6. Declaring a disposer method
* - method has more than one parameter annotated @Disposes
@@ -328,6 +329,7 @@
addError(CDIValidationMessages.MULTIPLE_DISPOSING_PARAMETERS,
CDIPreferences.MULTIPLE_DISPOSING_PARAMETERS, declaration, bean.getResource());
}
}
+
/*
* 3.3.6. Declaring a disposer method
* - a disposer method has a parameter annotated @Observes.
@@ -350,6 +352,7 @@
addError(CDIValidationMessages.OBSERVER_PARAMETER_ILLEGALLY_ANNOTATED,
CDIPreferences.OBSERVER_PARAMETER_ILLEGALLY_ANNOTATED, declaration, bean.getResource());
}
}
+
/*
* 3.3.6. Declaring a disposer method
* - a disposer method is annotated @Inject.
@@ -370,6 +373,32 @@
* - a non-static method of a session bean class has a parameter annotated @Disposes,
and the method is not a business method of the session bean
*/
validateSessionBeanMethod(bean, disposer, disposerDeclarations,
CDIValidationMessages.ILLEGAL_DISPOSER_IN_SESSION_BEAN,
CDIPreferences.ILLEGAL_DISPOSER_IN_SESSION_BEAN);
+
+ /*
+ * 3.3.6. Declaring a disposer method
+ * - decorators may not declare disposer methods
+ */
+ if(bean instanceof IDecorator) {
+ IDecorator decorator = (IDecorator)bean;
+ IAnnotationDeclaration decoratorDeclaration = decorator.getDecoratorAnnotation();
+ addError(CDIValidationMessages.DISPOSER_IN_DECORATOR,
CDIPreferences.DISPOSER_IN_INTERCEPTOR_OR_DECORATOR, decoratorDeclaration,
bean.getResource());
+ for (ITextSourceReference declaration : disposerDeclarations) {
+ addError(CDIValidationMessages.DISPOSER_IN_DECORATOR,
CDIPreferences.DISPOSER_IN_INTERCEPTOR_OR_DECORATOR, declaration, bean.getResource());
+ }
+ }
+
+ /*
+ * 3.3.6. Declaring a disposer method
+ * - interceptors may not declare disposer methods
+ */
+ if(bean instanceof IInterceptor) {
+ IInterceptor interceptor = (IInterceptor)bean;
+ IAnnotationDeclaration interceptorDeclaration =
interceptor.getInterceptorAnnotation();
+ addError(CDIValidationMessages.DISPOSER_IN_INTERCEPTOR,
CDIPreferences.DISPOSER_IN_INTERCEPTOR_OR_DECORATOR, interceptorDeclaration,
bean.getResource());
+ for (ITextSourceReference declaration : disposerDeclarations) {
+ addError(CDIValidationMessages.DISPOSER_IN_INTERCEPTOR,
CDIPreferences.DISPOSER_IN_INTERCEPTOR_OR_DECORATOR, declaration, bean.getResource());
+ }
+ }
}
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDIValidationMessages.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDIValidationMessages.java 2010-04-30
14:55:55 UTC (rev 21831)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDIValidationMessages.java 2010-04-30
15:49:13 UTC (rev 21832)
@@ -68,8 +68,10 @@
public static String ILLEGAL_CONDITIONAL_OBSERVER;
public static String BOTH_INTERCEPTOR_AND_DECORATOR;
- public static String PRODUCER_IN_INTERCEPTOR_OR_DECORATOR;
- public static String DISPOSER_IN_INTERCEPTOR_OR_DECORATOR;
+ public static String PRODUCER_IN_INTERCEPTOR;
+ public static String PRODUCER_IN_DECORATOR;
+ public static String DISPOSER_IN_INTERCEPTOR;
+ public static String DISPOSER_IN_DECORATOR;
public static String MULTIPLE_DELEGATE;
public static String MISSING_DELEGATE;
public static String ILLEGAL_INJECTION_POINT_DELEGATE;
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/messages.properties
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/messages.properties 2010-04-30
14:55:55 UTC (rev 21831)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/messages.properties 2010-04-30
15:49:13 UTC (rev 21832)
@@ -48,8 +48,10 @@
BOTH_INTERCEPTOR_AND_DECORATOR=the bean class of a managed bean is annotated with both
the @Interceptor and @Decorator stereotypes
SESSION_BEAN_ANNOTATED_INTERCEPTOR_OR_DECORATOR=Bean class of a session bean is annotated
@Interceptor or @Decorator
-PRODUCER_IN_INTERCEPTOR_OR_DECORATOR=Interceptor or decorator has a member annotated
@Produces
-DISPOSER_IN_INTERCEPTOR_OR_DECORATOR=Interceptor or decorator has a method annotated
@Disposes
+PRODUCER_IN_INTERCEPTOR=Interceptor has a member annotated @Produces
+PRODUCER_IN_OR_DECORATOR=Decorator has a member annotated @Produces
+DISPOSER_IN_INTERCEPTOR=Interceptor has a method annotated @Disposes
+DISPOSER_IN_DECORATOR=Decorator has a method annotated @Disposes
MULTIPLE_DELEGATE=Decorator has more than one delegate injection point
MISSING_DELEGATE=Decorator does not have a delegate injection point
ILLEGAL_INJECTION_POINT_DELEGATE=Injection point that is not an injected field,
initializer method parameter or bean constructor method parameter is annotated @Delegate
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/preferences/CDIConfigurationBlock.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/preferences/CDIConfigurationBlock.java 2010-04-30
14:55:55 UTC (rev 21831)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/preferences/CDIConfigurationBlock.java 2010-04-30
15:49:13 UTC (rev 21832)
@@ -97,13 +97,13 @@
CDICorePlugin.PLUGIN_ID
);
-// private static SectionDescription SECTION_INTERCEPTOR = new SectionDescription(
-// CDIPreferencesMessages.CDIValidatorConfigurationBlock_section_interceptor_and_decorator,
-// new String[][]{
+ private static SectionDescription SECTION_INTERCEPTOR = new SectionDescription(
+ CDIPreferencesMessages.CDIValidatorConfigurationBlock_section_interceptor_and_decorator,
+ new String[][]{
// {CDIPreferences.BOTH_INTERCEPTOR_AND_DECORATOR,
CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_bothInterceptorAndDecorator_label},
// {CDIPreferences.SESSION_BEAN_ANNOTATED_INTERCEPTOR_OR_DECORATOR,
CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_sessionBeanAnnotatedInterceptorOrDecorator_label},
// {CDIPreferences.PRODUCER_IN_INTERCEPTOR_OR_DECORATOR,
CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_producerInInterceptorOrDecorator_label},
-// {CDIPreferences.DISPOSER_IN_INTERCEPTOR_OR_DECORATOR,
CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_disposerInInterceptorOrDecorator_label},
+ {CDIPreferences.DISPOSER_IN_INTERCEPTOR_OR_DECORATOR,
CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_disposerInInterceptorOrDecorator_label},
// {CDIPreferences.MULTIPLE_DELEGATE,
CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_multipleDelegate_label},
// {CDIPreferences.MISSING_DELEGATE,
CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_missingDelegate_label},
// {CDIPreferences.ILLEGAL_INJECTION_POINT_DELEGATE,
CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_illegalInjectionPointDelegate_label},
@@ -115,9 +115,9 @@
// {CDIPreferences.OBSERVER_IN_INTERCEPTOR_OR_DECORATOR,
CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_observerInInterceptorOrDecorator_label},
// {CDIPreferences.INTERCEPTOR_OR_DECORATOR_IS_ALTERNATIVE,
CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_interceptorOrDecoratorIsAlternative_label},
// {CDIPreferences.MISSING_INTERCEPTOR_BINDING,
CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_missingInterceptorBinding_label},
-// },
-// CDICorePlugin.PLUGIN_ID
-// );
+ },
+ CDICorePlugin.PLUGIN_ID
+ );
// private static SectionDescription SECTION_SPECIALIZATION = new SectionDescription(
// CDIPreferencesMessages.CDIValidatorConfigurationBlock_section_specializing,
@@ -148,7 +148,7 @@
SECTION_TYPE,
SECTION_SCOPE,
SECTION_MEMBER,
-// SECTION_INTERCEPTOR,
+ SECTION_INTERCEPTOR,
// SECTION_SPECIALIZATION,
SECTION_MISCELLANEOUS
};
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/beans.xml
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/beans.xml
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/beans.xml 2010-04-30
15:49:13 UTC (rev 21832)
@@ -0,0 +1,5 @@
+<beans>
+ <decorators>
+
<class>org.jboss.jsr299.tck.tests.jdt.validation.decorators.NamedDecoratorBroken</class>
+ </decorators>
+</beans>
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/beans.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/disposers/Spider.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/disposers/Spider.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/disposers/Spider.java 2010-04-30
15:49:13 UTC (rev 21832)
@@ -0,0 +1,4 @@
+package org.jboss.jsr299.tck.tests.jbt.validation.disposers;
+
+class Spider {
+}
\ No newline at end of file
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/disposers/Spider.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/disposers/TimestampLogger.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/disposers/TimestampLogger.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/disposers/TimestampLogger.java 2010-04-30
15:49:13 UTC (rev 21832)
@@ -0,0 +1,11 @@
+package org.jboss.jsr299.tck.tests.jbt.validation.disposers;
+
+import javax.decorator.Decorator;
+import javax.enterprise.inject.Disposes;
+
+@Decorator
+public class TimestampLogger {
+
+ public static void destorySpider(@Disposes Spider spider) {
+ }
+}
\ No newline at end of file
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/disposers/TimestampLogger.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/disposers/beans.xml
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/disposers/beans.xml
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/disposers/beans.xml 2010-04-30
15:49:13 UTC (rev 21832)
@@ -0,0 +1,5 @@
+<beans>
+ <decorators>
+
<class>org.jboss.jsr299.tck.tests.jdt.validation.disposers.TimestampLogger</class>
+ </decorators>
+</beans>
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/disposers/beans.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/interceptors/FordInterceptor.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/interceptors/FordInterceptor.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/interceptors/FordInterceptor.java 2010-04-30
15:49:13 UTC (rev 21832)
@@ -0,0 +1,18 @@
+package org.jboss.jsr299.tck.tests.jbt.validation.interceptors;
+
+import javax.enterprise.inject.Disposes;
+import javax.interceptor.AroundInvoke;
+import javax.interceptor.Interceptor;
+import javax.interceptor.InvocationContext;
+
+@Interceptor
+@Transactional
+class FordInterceptor {
+ @AroundInvoke
+ public Object alwaysReturnThis(InvocationContext ctx) throws Exception {
+ return ctx.proceed();
+ }
+
+ public static void destorySpider(@Disposes Spider spider) {
+ }
+}
\ No newline at end of file
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/interceptors/FordInterceptor.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/interceptors/Spider.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/interceptors/Spider.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/interceptors/Spider.java 2010-04-30
15:49:13 UTC (rev 21832)
@@ -0,0 +1,4 @@
+package org.jboss.jsr299.tck.tests.jbt.validation.interceptors;
+
+class Spider {
+}
\ No newline at end of file
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/interceptors/Spider.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/interceptors/Transactional.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/interceptors/Transactional.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/interceptors/Transactional.java 2010-04-30
15:49:13 UTC (rev 21832)
@@ -0,0 +1,19 @@
+package org.jboss.jsr299.tck.tests.jbt.validation.interceptors;
+
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.interceptor.InterceptorBinding;
+
+@Target( { TYPE, METHOD })
+@Retention(RUNTIME)
+@Documented
+@InterceptorBinding
+@interface Transactional {
+
+}
\ No newline at end of file
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/interceptors/Transactional.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/interceptors/beans.xml
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/interceptors/beans.xml
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/interceptors/beans.xml 2010-04-30
15:49:13 UTC (rev 21832)
@@ -0,0 +1,6 @@
+<beans>
+ <interceptors>
+
<class>org.jboss.jsr299.tck.tests.jdt.validation.interceptors.NamedInterceptorBroken</class>
+
<class>org.jboss.jsr299.tck.tests.jdt.validation.interceptors.FordInterceptor</class>
+ </interceptors>
+</beans>
\ No newline at end of file
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/interceptors/beans.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/ValidationTest.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/ValidationTest.java 2010-04-30
14:55:55 UTC (rev 21831)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/ValidationTest.java 2010-04-30
15:49:13 UTC (rev 21832)
@@ -217,6 +217,28 @@
}
/**
+ * 3.3.6. Declaring a disposer method
+ * - decorators may not declare disposer methods
+ *
+ * @throws Exception
+ */
+ public void testDecoratorDeclaresDisposer() throws Exception {
+ IFile file =
tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/jbt/validation/disposers/TimestampLogger.java");
+ AbstractResourceMarkerTest.assertMarkerIsCreated(file,
AbstractResourceMarkerTest.MARKER_TYPE, CDIValidationMessages.DISPOSER_IN_DECORATOR, 6,
9);
+ }
+
+ /**
+ * 3.3.6. Declaring a disposer method
+ * - interceptors may not declare disposer methods
+ *
+ * @throws Exception
+ */
+ public void testInterceptorDeclaresDisposer() throws Exception {
+ IFile file =
tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/jbt/validation/interceptors/FordInterceptor.java");
+ AbstractResourceMarkerTest.assertMarkerIsCreated(file,
AbstractResourceMarkerTest.MARKER_TYPE, CDIValidationMessages.DISPOSER_IN_INTERCEPTOR, 8,
16);
+ }
+
+ /**
* 3.3.7. Disposer method resolution
* TODO
*
Modified:
trunk/tests/plugins/org.jboss.tools.tests/src/org/jboss/tools/tests/AbstractResourceMarkerTest.java
===================================================================
---
trunk/tests/plugins/org.jboss.tools.tests/src/org/jboss/tools/tests/AbstractResourceMarkerTest.java 2010-04-30
14:55:55 UTC (rev 21831)
+++
trunk/tests/plugins/org.jboss.tools.tests/src/org/jboss/tools/tests/AbstractResourceMarkerTest.java 2010-04-30
15:49:13 UTC (rev 21832)
@@ -99,6 +99,7 @@
realString.append(", ");
}
}
+ i = 1;
for (int expected : expectedLines) {
expectedString.append(expected);
if(expectedLines.length>i++) {