so in the stack trace it talks about line 66 but when i debug i can see that
"camelContext.startRoute("salesforce-versions"); " already in line 64 meaning the route is not started as the routeservices object is empty (null). Which thereby causes and expection at line 66 which is Endpoint ep = theRoute.getEndpoint(); I am wondering if there any specific call which adds all routes to the camelcontext differently in 2.19.x compared to 2.20.0 ? On Tue, Oct 24, 2017 at 7:13 PM, Mark Nuttall <mknutt...@gmail.com> wrote: > Oh. i missed the "complex use case". Of the code you provided, what is line > 66? > > On Tue, Oct 24, 2017 at 11:47 AM, Mark Nuttall <mknutt...@gmail.com> > wrote: > > > Is there any reason you are not using the standard Spring Boot + Camel > > mechanisms to create the context and routes. I don't readily see any in > > your code. Doing so might resolve the problem. Let me know if you need > > help with that.. > > > > Mark > > > > On Tue, Oct 24, 2017 at 9:36 AM, Dicken George <dickengeo...@gmail.com> > > wrote: > > > >> Dear Fellow Developers, > >> > >> Just recently, I tried to upgrade my camel-spring boot project form > camel > >> 2.19.3 to camel 2.20.0 and I face the problem that, I cannot boot up my > >> application any more, and I get the following stack trace > >> > >> java.lang.NullPointerException > >> at > >> com.haufe.ssmp.sfdc.api.app.BeanConfiguration.afterApplicati > >> onStart(BeanConfiguration.java:66) > >> at > >> org.apache.camel.spring.boot.RoutesCollector.onApplicationEv > >> ent(RoutesCollector.java:226) > >> at > >> org.apache.camel.spring.boot.RoutesCollector.onApplicationEv > >> ent(RoutesCollector.java:54) > >> at > >> org.springframework.context.event.SimpleApplicationEventMult > >> icaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) > >> at > >> org.springframework.context.event.SimpleApplicationEventMult > >> icaster.invokeListener(SimpleApplicationEventMulticaster.java:165) > >> at > >> org.springframework.context.event.SimpleApplicationEventMult > >> icaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) > >> at > >> org.springframework.context.support.AbstractApplicationConte > >> xt.publishEvent(AbstractApplicationContext.java:393) > >> at > >> org.springframework.context.support.AbstractApplicationConte > >> xt.publishEvent(AbstractApplicationContext.java:347) > >> at > >> org.springframework.context.support.AbstractApplicationConte > >> xt.finishRefresh(AbstractApplicationContext.java:883) > >> at > >> org.springframework.boot.context.embedded.EmbeddedWebApplica > >> tionContext.finishRefresh(EmbeddedWebApplicationContext.java:144) > >> at > >> org.springframework.context.support.AbstractApplicationConte > >> xt.refresh(AbstractApplicationContext.java:546) > >> at > >> org.springframework.boot.context.embedded.EmbeddedWebApplica > >> tionContext.refresh(EmbeddedWebApplicationContext.java:122) > >> at > >> org.springframework.boot.SpringApplication.refresh(SpringApp > >> lication.java:693) > >> at > >> org.springframework.boot.SpringApplication.refreshContext(Sp > >> ringApplication.java:360) > >> at > >> org.springframework.boot.SpringApplication.run(SpringApplica > >> tion.java:303) > >> at > >> org.springframework.boot.SpringApplication.run(SpringApplica > >> tion.java:1118) > >> at > >> org.springframework.boot.SpringApplication.run(SpringApplica > >> tion.java:1107) > >> at com.haufe.ssmp.sfdc.api.Application.main(Application.java:12) > >> > >> Due to my complex use case, i would like to start one specific route > >> manually and not use the autoconfiguration and autostart from > >> camelcontext. > >> I do this in my configuration class by over riding the before > application > >> start and after application start methods. > >> > >> @Configuration > >> class BeanConfiguration implements CamelContextConfiguration { > >> private static final Logger log = > >> LoggerFactory.getLogger(BeanConfiguration.class); > >> > >> @Override > >> public void beforeApplicationStart(CamelContext camelContext) { > >> camelContext.setPackageScanClassResolver(new > >> FatJarPackageScanClassResolver()); > >> camelContext.resolveDataFormat("json-jackson"); > >> } > >> > >> @Autowired > >> SalesforceComponent sfdcComp; > >> > >> @Override > >> public void afterApplicationStart(CamelContext camelContext) { > >> > >> try { > >> sfdcComp.start(); > >> camelContext.startRoute("salesforce-versions"); > >> Route theRoute = camelContext.getRoute("salesfo > >> rce-versions"); > >> Endpoint ep = theRoute.getEndpoint(); > >> > >> Exchange exchange = ep.createExchange(); > >> ProducerTemplate template = > >> exchange.getContext().createProducerTemplate(); > >> DefaultExchange o = (DefaultExchange) template.request(ep, > new > >> Processor() { > >> > >> @Override > >> public void process(Exchange exchange) throws Exception > { > >> // TODO Auto-generated method stub > >> > >> } > >> }); > >> Object result = o.getOut().getBody(); > >> if(result == null && !(result instanceof ArrayList)) > >> throw new Exception("No Salesforce version, login > >> failed."); > >> > >> ArrayList theList = (ArrayList) result; > >> if(theList.size() <= 1) > >> throw new Exception("No Salesforce version got, > login > >> failed."); > >> log.debug("Connection to salesforce successfully > >> established:"); > >> > >> } catch (Exception e) { > >> // TODO Auto-generated catch block > >> e.printStackTrace(); > >> throw new RuntimeException("No Connection to salesforce"); > >> } > >> > >> } > >> In this code, i saw during my debugging that it was able to start the > >> routes in camelcontext object and get the endpoints, however with > version > >> 2.20.0 I see my routes are not added to the camelcontext and no routes > are > >> started. > >> > >> Could anyone help me here to trouble shoot this issue ? > >> > >> Thanks in advance > >> -- > >> > >> Dicken George > >> > > > > > -- Dicken George