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

Reply via email to