All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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