001 package org.apache.camel.spring; 002 003 import java.util.ArrayList; 004 005 import org.apache.camel.builder.RouteBuilder; 006 import org.springframework.beans.BeansException; 007 import org.springframework.beans.factory.BeanFactory; 008 import org.springframework.beans.factory.BeanFactoryAware; 009 import org.springframework.beans.factory.FactoryBean; 010 011 public class RouteBuilderFactory implements FactoryBean, BeanFactoryAware { 012 private ArrayList<BuilderStatement> routes; 013 private boolean singleton; 014 private BeanFactory beanFactory; 015 016 class SpringRouteBuilder extends RouteBuilder { 017 private ArrayList<BuilderStatement> routes; 018 private BeanFactory beanFactory; 019 020 @Override 021 public void configure() { 022 for (BuilderStatement routeFactory : routes) { 023 routeFactory.create(beanFactory, this); 024 } 025 } 026 027 public ArrayList<BuilderStatement> getRoutes() { 028 return routes; 029 } 030 public void setRoutes(ArrayList<BuilderStatement> routes) { 031 this.routes = routes; 032 } 033 034 public void setBeanFactory(BeanFactory beanFactory) { 035 this.beanFactory = beanFactory; 036 } 037 } 038 039 public Object getObject() throws Exception { 040 SpringRouteBuilder builder = new SpringRouteBuilder(); 041 builder.setBeanFactory(beanFactory); 042 builder.setRoutes(routes); 043 return builder; 044 } 045 046 public Class getObjectType() { 047 return SpringRouteBuilder.class; 048 } 049 050 public boolean isSingleton() { 051 return singleton; 052 } 053 public void setSingleton(boolean singleton) { 054 this.singleton = singleton; 055 } 056 057 public ArrayList<BuilderStatement> getRoutes() { 058 return routes; 059 } 060 public void setRoutes(ArrayList<BuilderStatement> routes) { 061 this.routes = routes; 062 } 063 064 public void setBeanFactory(BeanFactory beanFactory) throws BeansException { 065 this.beanFactory = beanFactory; 066 } 067 068 }