[
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)