Error message when incorrectly starting Camel is misleading
-----------------------------------------------------------

                 Key: CAMEL-1055
                 URL: https://issues.apache.org/activemq/browse/CAMEL-1055
             Project: Apache Camel
          Issue Type: Improvement
    Affects Versions: 1.5.0
            Reporter: Noah Nordrum
            Priority: Minor


Yes, I know you should just do things correctly, but sometimes we don't. When 
the CamelContext is created/retrieved as follows, the error message is somewhat 
misleading as to the actual problem. The root exception does state "No 
applicationContext has been injected!", but the bulk of the other exceptions 
are referring to the "beanPostProcessor".

If we could somehow throw a more concise exception, that would be great.



#
import org.springframework.core.io.Resource;
#
import org.springframework.core.io.ClassPathResource;
#
import org.springframework.beans.factory.BeanFactory;
#
import org.springframework.beans.factory.xml.XmlBeanFactory;
#
import org.apache.camel.CamelContext;
#
 
#
public class JamesTest {
#
 
#
    public static void main(String[] args) {
#
        Resource res = new ClassPathResource("/james.xml");
#
        BeanFactory factory = new XmlBeanFactory(res);
#
 
#
        final CamelContext cc = (CamelContext) factory.getBean("camelContext");
#
 
#
    }
#
}
#
 
#
 
#
 
#
james.xml
#
<?xml version="1.0" encoding="UTF-8"?>
#
<beans xmlns="http://www.springframework.org/schema/beans";
#
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
#
       xmlns:context="http://www.springframework.org/schema/context";
#
       xmlns:camel="http://activemq.apache.org/camel/schema/spring";
#
       xsi:schemaLocation="
#
      http://www.springframework.org/schema/beans
#
      http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
#
      http://www.springframework.org/schema/context
#
      http://www.springframework.org/schema/context/spring-context-2.5.xsd
#
      http://activemq.apache.org/camel/schema/spring
#
      http://activemq.apache.org/camel/schema/spring/camel-spring.xsd";>
#
 
#
    <camel:camelContext id="camelContext">
#
    </camel:camelContext>
#
 
#
</beans>
#
 
#
 
#
stack
#
INFO  - XmlBeanDefinitionReader    - Loading XML bean definitions from class 
path resource [james.xml]
#
Exception in thread "main" 
org.springframework.beans.factory.BeanCreationException: Error creating bean 
with name 'camelContext': Cannot resolve reference to bean 
'camelContext:beanPostProcessor' while setting bean property 
'beanPostProcessor'; nested exception is 
org.springframework.beans.factory.BeanCreationException: Error creating bean 
with name 'camelContext:beanPostProcessor': Cannot resolve reference to bean 
'camelContext' while setting bean property 'camelContext'; nested exception is 
org.springframework.beans.factory.BeanCreationException: Error creating bean 
with name 'camelContext': FactoryBean threw exception on object creation; 
nested exception is java.lang.IllegalArgumentException: No applicationContext 
has been injected!
#
        at 
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
#
        at 
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
#
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
#
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
#
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
#
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
#
        at java.security.AccessController.doPrivileged(Native Method)
#
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
#
        at 
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
#
        at 
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
#
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
#
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
#
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
#
        at JamesTest.main(JamesTest.java:13)
#
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
#
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
#
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
#
        at java.lang.reflect.Method.invoke(Method.java:585)
#
        at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
#
Caused by: org.springframework.beans.factory.BeanCreationException: Error 
creating bean with name 'camelContext:beanPostProcessor': Cannot resolve 
reference to bean 'camelContext' while setting bean property 'camelContext'; 
nested exception is org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'camelContext': FactoryBean threw exception on 
object creation; nested exception is java.lang.IllegalArgumentException: No 
applicationContext has been injected!
#
        at 
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
#
        at 
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
#
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
#
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
#
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
#
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
#
        at java.security.AccessController.doPrivileged(Native Method)
#
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
#
        at 
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
#
        at 
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
#
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
#
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
#
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
#
        at 
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
#
        ... 18 more
#
Caused by: org.springframework.beans.factory.BeanCreationException: Error 
creating bean with name 'camelContext': FactoryBean threw exception on object 
creation; nested exception is java.lang.IllegalArgumentException: No 
applicationContext has been injected!
#
        at 
org.springframework.beans.factory.support.FactoryBeanRegistrySupport$1.run(FactoryBeanRegistrySupport.java:127)
#
        at java.security.AccessController.doPrivileged(Native Method)
#
        at 
org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:116)
#
        at 
org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:98)
#
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1285)
#
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:217)
#
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
#
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
#
        at 
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
#
        ... 31 more
#
Caused by: java.lang.IllegalArgumentException: No applicationContext has been 
injected!
#
        at 
org.apache.camel.spring.CamelContextFactoryBean.getApplicationContext(CamelContextFactoryBean.java:354)
#
        at 
org.apache.camel.spring.CamelContextFactoryBean.createContext(CamelContextFactoryBean.java:473)
#
        at 
org.apache.camel.spring.CamelContextFactoryBean.getContext(CamelContextFactoryBean.java:305)
#
        at 
org.apache.camel.spring.CamelContextFactoryBean.getObject(CamelContextFactoryBean.java:130)
#
        at 
org.springframework.beans.factory.support.FactoryBeanRegistrySupport$1.run(FactoryBeanRegistrySupport.java:121)
#
        ... 39 more
#
 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to