001 package org.apache.camel.spring.builder;
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 }