Testing in Intellij IDEA
------------------------
Key: CAMEL-3625
URL: https://issues.apache.org/jira/browse/CAMEL-3625
Project: Camel
Issue Type: Improvement
Reporter: Edstrom Johan
Priority: Minor
When running camel-components tests in Intellij IDEA you frequently run into
{code}
java.lang.NoClassDefFoundError:
org/apache/camel/core/xml/CamelJMXAgentDefinition
at
org.apache.camel.spring.CamelBeanPostProcessor.canPostProcessBean(CamelBeanPostProcessor.java:209)
at
org.apache.camel.spring.CamelBeanPostProcessor.postProcessBeforeInitialization(CamelBeanPostProcessor.java:89)
at
org.apache.camel.test.junit4.CamelTestSupport.postProcessTest(CamelTestSupport.java:190)
at
org.apache.camel.test.junit4.CamelTestSupport.setUp(CamelTestSupport.java:133)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
at
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:24)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
at
com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
{code}
The following would handle the issue
{code}
Index:
components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java
===================================================================
---
components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java
(revision 1065694)
+++
components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java
(revision )
@@ -192,6 +192,17 @@
* @return true to process it
*/
protected boolean canPostProcessBean(Object bean, String beanName) {
+
+ //Let us check if we can load this class...
+ ClassLoader classLoader =
getCamelContext().getClassResolver().getClass().getClassLoader();
+
+ try {
+ Class aClass =
classLoader.loadClass("org.apache.camel.core.xml.CamelJMXAgentDefinition");
+ //Keep going.
+ } catch (ClassNotFoundException e) {
+ return false;
+ }
+
// the JMXAgent is a bit strange and causes Spring issues if we let it
being
// post processed by this one. It does not need it anyway so we are
good to go.
if (bean instanceof CamelJMXAgentDefinition) {
{code}
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira