ok, after changing how I was going about this, I have found a elegant enough
way of doing this.


@Component
public class ReloadRoutes implements ApplicationContextAware {

    public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
        this.applicationContext = applicationContext;
    }

    ApplicationContext applicationContext;

    public String reload(String camelContextName) throws Exception {
        CamelContextFactoryBean camelContextFactory =
applicationContext.getBean("&" + camelContextName,
CamelContextFactoryBean.class);
        SpringCamelContext camelContext = camelContextFactory.getContext();
        camelContext.stop();
        camelContext.destroy();
        camelContextFactory.setContext(null);
        for (RouteBuilder
rb:applicationContext.getBeansOfType(RouteBuilder.class).values()) {
            rb.getRouteCollection().setRoutes(new ArrayList()); // must
clear the routes!
            rb.configure();
        }
        camelContextFactory.afterPropertiesSet();
        camelContextFactory.getContext(true).start();
        return "ok";
    }

}


--
View this message in context: 
http://camel.465427.n5.nabble.com/How-do-I-stop-the-RouteBuilders-from-caching-the-routes-they-build-tp4248807p4248915.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to