1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.jumpmind.symmetric.db;
22
23 import javax.sql.DataSource;
24
25 import org.springframework.beans.factory.BeanFactory;
26 import org.springframework.beans.factory.BeanFactoryAware;
27 import org.springframework.beans.factory.FactoryBean;
28
29 /***
30 * Factory that will create either a jndiDataSource or a basicDataSource based
31 * on whether a JNDI name is provided.
32 */
33 public class DataSourceFactoryBean implements FactoryBean, BeanFactoryAware {
34
35 private String jndiName;
36
37 private String beanName;
38
39 private BeanFactory beanFactory;
40
41 public Object getObject() throws Exception {
42 if (jndiName == null || jndiName.trim().length() == 0) {
43 return beanFactory.getBean(beanName);
44 } else {
45 return beanFactory.getBean("jndiDataSource");
46 }
47 }
48
49 public Class<DataSource> getObjectType() {
50 return DataSource.class;
51 }
52
53 public boolean isSingleton() {
54 return true;
55 }
56
57 public void setBeanFactory(BeanFactory beanFactory) {
58 this.beanFactory = beanFactory;
59 }
60
61 public void setJndiName(String jndiName) {
62 this.jndiName = jndiName;
63 }
64
65 public void setBeanName(String beanName) {
66 this.beanName = beanName;
67 }
68
69 }