Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-2027

NullPointerException when defining Camel route using Spring JavaConfig

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.0.0
    • 2.1.0
    • camel-spring
    • None

    Description

      Following unit test fails.

      Similar test, but using Spring XML with <routeBuilder ref="..."/> instead of Spring JavaConfig, would succeed.

      @ContextConfiguration(
          locations = "org.plos.camel.BeanJavaConfigTest$ContextConfig",
          loader = JavaConfigContextLoader.class
      )
      public class BeanJavaConfigTest extends AbstractTestNGSpringContextTests {
      
        @EndpointInject(uri = "mock:end")
        protected MockEndpoint endpoint;
      
        @EndpointInject(uri = "mock:error")
        protected MockEndpoint errorEndpoint;
      
        @Produce(uri = "direct:start")
        protected ProducerTemplate producer;
      
        @Test
        @DirtiesContext
        public void testSomething() throws Exception {
          endpoint.expectedMessageCount(1);
          endpoint.message(0).body().isEqualTo("Message Body");
          producer.sendBody("Message Body");
          endpoint.assertIsSatisfied();
        }
      
        public static class SomeBean {
      
          @Handler
          public String someMethod(String body) {
            System.out.println("Received: " + body);
            return body;
          }
        }
      
        @Configuration
        public static class ContextConfig extends SingleRouteCamelConfiguration {
      
          @Bean
          @Override
          public RouteBuilder route() {
            return new RouteBuilder() {
              @Override
              public void configure() throws Exception {
                from("direct:start")
                    .bean(new SomeBean())
                    .to("mock:end")
                    .errorHandler(deadLetterChannel("mock:end"));
              }
            };
          }
        }
      }
      

      Error stack:

      java.lang.IllegalStateException: Failed to load ApplicationContext
      
      ...
      
      Caused by: java.lang.NullPointerException
      	at org.apache.camel.spring.spi.ApplicationContextRegistry.lookup(ApplicationContextRegistry.java:41)
      	at org.apache.camel.component.bean.BeanInfo.createParameterMappingStrategy(BeanInfo.java:115)
      	at org.apache.camel.component.bean.BeanProcessor.<init>(BeanProcessor.java:55)
      	at org.apache.camel.model.BeanDefinition.createProcessor(BeanDefinition.java:156)
      	at org.apache.camel.model.ProcessorDefinition.makeProcessor(ProcessorDefinition.java:276)
      	at org.apache.camel.model.ProcessorDefinition.addRoutes(ProcessorDefinition.java:116)
      	at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:439)
      	at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:126)
      	at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:569)
      	at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:924)
      	at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:901)
      	at org.apache.camel.spring.SpringCamelContext.maybeDoStart(SpringCamelContext.java:165)
      	at org.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:160)
      	at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:52)
      	at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:816)
      	at org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:99)
      	at org.apache.camel.spring.SpringCamelContext.afterPropertiesSet(SpringCamelContext.java:87)
      	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369)
      	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
      	... 74 more
      

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            davsclaus Claus Ibsen
            dragisak Dragisa Krsmanovic
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment