
org.unidal.dal.jdbc.datasource.DefaultDataSourceManager Maven / Gradle / Ivy
The newest version!
package org.unidal.dal.jdbc.datasource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.unidal.lookup.ContainerHolder;
import org.unidal.lookup.annotation.Inject;
import org.unidal.lookup.annotation.Named;
@Named(type = DataSourceManager.class)
public class DefaultDataSourceManager extends ContainerHolder implements DataSourceManager {
@Inject
private JdbcDataSourceDescriptorManager m_manager;
private Map m_dataSources = new HashMap();
@Override
public DataSource getDataSource(String name) {
DataSource dataSource = m_dataSources.get(name);
if (dataSource == null) {
synchronized (m_dataSources) {
dataSource = m_dataSources.get(name);
if (dataSource == null) {
DataSourceDescriptor descriptor = m_manager.getDescriptor(name);
if (descriptor == null) {
throw new RuntimeException(String.format("No data source(%s) defined!", name));
}
dataSource = lookup(DataSource.class, descriptor.getType());
dataSource.initialize(descriptor);
m_dataSources.put(name, dataSource);
}
}
}
return dataSource;
}
@Override
public List getDataSourceNames() {
List list = new ArrayList(m_dataSources.keySet());
Collections.sort(list);
return list;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy