diff options
author | amitjai <amitjai@amdocs.com> | 2018-04-27 13:28:57 +0530 |
---|---|---|
committer | Oren Kleks <orenkle@amdocs.com> | 2018-04-30 06:05:27 +0000 |
commit | 42c920baf4dbb9fe8775843a6d4c9f70fa29f064 (patch) | |
tree | ac2aff977e2b129e61d2166c4832842676e4f5c3 /common/onap-common-configuration-management/onap-configuration-management-core/src/main/java/org/onap/config/impl/ConfigurationDataSource.java | |
parent | f487427a32f410ab5c97a4092865d32beb88ee27 (diff) |
Rename packages from openecomp to onap.
This task is all about package name space change also make changes to pom for common module
Change-Id: Ie9bda0f958a9a05826c0374830cc9cb7d6d196b6
Issue-ID: SDC-1272
Signed-off-by: amitjai <amitjai@amdocs.com>
Diffstat (limited to 'common/onap-common-configuration-management/onap-configuration-management-core/src/main/java/org/onap/config/impl/ConfigurationDataSource.java')
-rw-r--r-- | common/onap-common-configuration-management/onap-configuration-management-core/src/main/java/org/onap/config/impl/ConfigurationDataSource.java | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/common/onap-common-configuration-management/onap-configuration-management-core/src/main/java/org/onap/config/impl/ConfigurationDataSource.java b/common/onap-common-configuration-management/onap-configuration-management-core/src/main/java/org/onap/config/impl/ConfigurationDataSource.java new file mode 100644 index 0000000000..ea9c61f635 --- /dev/null +++ b/common/onap-common-configuration-management/onap-configuration-management-core/src/main/java/org/onap/config/impl/ConfigurationDataSource.java @@ -0,0 +1,105 @@ +package org.onap.config.impl; + +import org.apache.commons.configuration2.ImmutableConfiguration; +import org.apache.commons.dbcp2.BasicDataSource; +import org.apache.commons.lang3.StringUtils; +import org.onap.config.ConfigurationUtils; +import org.onap.config.Constants; + +import java.sql.Driver; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.ServiceLoader; +import java.util.Set; + +/** + * The type Configuration data source. + */ +public final class ConfigurationDataSource { + + private static BasicDataSource configDBDatasource = null; + private static Set<String> validCallers = Collections.unmodifiableSet(new HashSet<>( + Arrays.asList(ConfigurationUtils.class.getName(), CliConfigurationImpl.class.getName()))); + + private ConfigurationDataSource() { + //Hide constructor to prevent instantiation using the default implicit constructor + } + + static { + try { + configDBDatasource = initDataSource(); + } catch (Exception exception) { + System.err.println("Datasource initialization error. Configuration management will be using" + + "in-memory persistence."); + } + } + + /** + * Lookup basic data source. + * + * @return the basic data source + * @throws Exception the exception + */ + public static BasicDataSource lookup() throws Exception { + if (validCallers.contains(Thread.currentThread().getStackTrace()[2].getClassName())) { + return configDBDatasource; + } else { + return null; + } + } + + /** + * Init data source basic data source. + * + * @return the basic data source + * @throws Exception the exception + */ + public static BasicDataSource initDataSource() throws Exception { + ImmutableConfiguration dbConfig = ConfigurationRepository.lookup() + .getConfigurationFor(Constants.DEFAULT_TENANT, Constants.DB_NAMESPACE); + if (StringUtils.isEmpty(dbConfig.getString("dbhost"))) { + return null; + } + BasicDataSource datasource = new BasicDataSource(); + String driverClassName = dbConfig.getString("driverClassName"); + String jdbcUrl = dbConfig.getString("jdbcURL"); + if (!isDriverSuitable(driverClassName, jdbcUrl)) { + driverClassName = getDriverFor(jdbcUrl); + } + datasource.setDriverClassName(driverClassName); + datasource.setUrl(jdbcUrl); + String dbuser = dbConfig.getString("dbuser"); + String dbpassword = dbConfig.getString("dbpassword"); + if (dbuser != null && dbuser.trim().length() > 0) { + datasource.setUsername(dbuser); + } + if (dbpassword != null && dbpassword.trim().length() > 0) { + datasource.setPassword(dbpassword); + } + return datasource; + } + + private static boolean isDriverSuitable(String driverClassName, String url) { + if (driverClassName == null || driverClassName.trim().length() == 0) { + return false; + } + try { + Driver driver = Driver.class.cast(Class.forName(driverClassName).newInstance()); + return driver.acceptsURL(url); + } catch (Exception exception) { + return false; + } + } + + private static String getDriverFor(String url) throws Exception { + ServiceLoader<Driver> loader = ServiceLoader.load(Driver.class); + for (Driver driver : loader) { + if (driver.acceptsURL(url)) { + return driver.getClass().getName(); + } + } + throw new RuntimeException("No Suitable driver found for " + url); + } + +} |