1 21 package net.sf.hajdbc.sql; 22 23 import java.util.Hashtable ; 24 25 import javax.naming.Context ; 26 import javax.naming.Name ; 27 import javax.naming.RefAddr ; 28 import javax.naming.Reference ; 29 import javax.naming.spi.ObjectFactory ; 30 31 import net.sf.hajdbc.DatabaseCluster; 32 import net.sf.hajdbc.DatabaseClusterFactory; 33 34 35 39 public class DataSourceFactory implements ObjectFactory 40 { 41 44 public Object getObjectInstance(Object object, Name name, Context context, Hashtable <?,?> environment) throws Exception 45 { 46 if (object == null) return null; 47 48 if (!Reference .class.isInstance(object)) return null; 49 50 Reference reference = Reference .class.cast(object); 51 52 String className = reference.getClassName(); 53 54 if (className == null) return null; 55 56 if (!DataSource.class.getName().equals(className)) return null; 57 58 DataSource dataSource = new DataSource(); 59 60 RefAddr addr = reference.get(DataSource.DATABASE_CLUSTER); 61 62 if (addr == null) return null; 63 64 String id = String .class.cast(addr.getContent()); 65 66 if (id == null) return null; 67 68 DatabaseCluster databaseCluster = DatabaseClusterFactory.getInstance().getDatabaseCluster(id); 69 70 if (databaseCluster == null) return null; 71 72 dataSource.setCluster(id); 73 dataSource.setConnectionFactory(new ConnectionFactory<javax.sql.DataSource >(databaseCluster, javax.sql.DataSource .class)); 74 75 return dataSource; 76 } 77 } 78 | Popular Tags |