[ 
https://issues.apache.org/jira/browse/CAMEL-8541?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen updated CAMEL-8541:
-------------------------------
    Priority: Minor  (was: Major)

> Came main TestSupport class is incompatible with the CDI specification
> ----------------------------------------------------------------------
>
>                 Key: CAMEL-8541
>                 URL: https://issues.apache.org/jira/browse/CAMEL-8541
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-test
>    Affects Versions: 2.12.5, 2.14.2
>            Reporter: Alex Savitsky
>            Priority: Minor
>
> JUnit4 test support class (org.apache.camel.test.junit4.TestSupport) contains 
> the following declaration:
> {noformat}
>     // CHECKSTYLE:OFF
>     @Rule
>     public TestName testName = new TestName();
>     // CHECKSTYLE:ON
> {noformat}
> In addition to being a terrible idea overall, this public field also breaks 
> CDI integration, as any tests attempted to be bootstrapped in CDI will throw 
> the following error (WELD trace is shown for an example):
> {noformat}
> org.jboss.weld.exceptions.DefinitionException: WELD-000075: Normal scoped 
> managed bean implementation class has a public field:  
> [EnhancedAnnotatedFieldImpl] @Rule public com.netotc.ha.route.TestCDI.testName
>       at 
> org.jboss.weld.bean.ManagedBean.checkBeanImplementation(ManagedBean.java:227)
>       at 
> org.jboss.weld.bean.AbstractClassBean.internalInitialize(AbstractClassBean.java:74)
>       at 
> org.jboss.weld.bean.ManagedBean.internalInitialize(ManagedBean.java:105)
>       at org.jboss.weld.bean.RIBean.initialize(RIBean.java:66)
>       at 
> org.jboss.weld.bootstrap.ConcurrentBeanDeployer$5.doWork(ConcurrentBeanDeployer.java:121)
>       at 
> org.jboss.weld.bootstrap.ConcurrentBeanDeployer$5.doWork(ConcurrentBeanDeployer.java:118)
>       at 
> org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60)
>       at 
> org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53)
>       at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>       at java.lang.Thread.run(Thread.java:745)
> {noformat}
> Suggesting to create a getter for this field, making the field private, and 
> moving the @Rule annotation to the getter.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to