From 2b60ea3f10d0b652605f54816b4d2fef82a07544 Mon Sep 17 00:00:00 2001 From: Cleverson Sacramento Date: Thu, 7 Feb 2013 15:15:54 -0300 Subject: [PATCH] Escolha entre conexão via JNDI ou configurada manualmente --- impl/extension/jdbc/pom.xml | 5 ++++- impl/extension/jdbc/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/JdbcConfig.java | 21 +++++++++++++++++++++ impl/extension/jdbc/src/main/java/br/gov/frameworkdemoiselle/internal/producer/DataSourceProducer.java | 23 +++++++++++++++++++---- parent/bom/pom.xml | 8 +++++++- 4 files changed, 51 insertions(+), 6 deletions(-) diff --git a/impl/extension/jdbc/pom.xml b/impl/extension/jdbc/pom.xml index d55a675..448ad2d 100755 --- a/impl/extension/jdbc/pom.xml +++ b/impl/extension/jdbc/pom.xml @@ -36,7 +36,6 @@ --> - 4.0.0 demoiselle-jdbc @@ -68,6 +67,10 @@ + + commons-dbcp + commons-dbcp + diff --git a/impl/extension/jdbc/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/JdbcConfig.java b/impl/extension/jdbc/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/JdbcConfig.java index 1f57575..8a6de3c 100644 --- a/impl/extension/jdbc/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/JdbcConfig.java +++ b/impl/extension/jdbc/src/main/java/br/gov/frameworkdemoiselle/internal/configuration/JdbcConfig.java @@ -56,6 +56,15 @@ public class JdbcConfig implements Serializable { @Name("driver.class") private Map driverClass; + @Name("url") + private Map url; + + @Name("username") + private Map username; + + @Name("password") + private Map password; + public String getDefaultDataDourceName() { return defaultDataDourceName; } @@ -67,4 +76,16 @@ public class JdbcConfig implements Serializable { public Map getDriverClass() { return driverClass; } + + public Map getUrl() { + return url; + } + + public Map getUsername() { + return username; + } + + public Map getPassword() { + return password; + } } diff --git a/impl/extension/jdbc/src/main/java/br/gov/frameworkdemoiselle/internal/producer/DataSourceProducer.java b/impl/extension/jdbc/src/main/java/br/gov/frameworkdemoiselle/internal/producer/DataSourceProducer.java index 49be7b7..80705db 100644 --- a/impl/extension/jdbc/src/main/java/br/gov/frameworkdemoiselle/internal/producer/DataSourceProducer.java +++ b/impl/extension/jdbc/src/main/java/br/gov/frameworkdemoiselle/internal/producer/DataSourceProducer.java @@ -15,6 +15,7 @@ import javax.naming.Context; import javax.naming.InitialContext; import javax.sql.DataSource; +import org.apache.commons.dbcp.BasicDataSource; import org.slf4j.Logger; import br.gov.frameworkdemoiselle.DemoiselleException; @@ -109,12 +110,26 @@ public class DataSourceProducer implements Serializable { try { JdbcConfig config = Beans.getReference(JdbcConfig.class); - String jndi = config.getJndiName().get(dataSourceName); + Map jndiMap = config.getJndiName(); - // TODO Lançar exceção caso o JNDI esteja vazio ou nulo. + if (jndiMap != null) { + Context context = new InitialContext(); + result = (DataSource) context.lookup(jndiMap.get(dataSourceName)); - Context context = new InitialContext(); - result = (DataSource) context.lookup(jndi); + } else { + String driver = config.getDriverClass().get(dataSourceName); + String url = config.getUrl().get(dataSourceName); + String username = config.getUsername().get(dataSourceName); + String password = config.getPassword().get(dataSourceName); + + BasicDataSource dataSource = new BasicDataSource(); + dataSource.setDriverClassName(driver); + dataSource.setUrl(url); + dataSource.setUsername(username); + dataSource.setPassword(password); + + result = dataSource; + } } catch (Exception cause) { // TODO Colocar uma mensagem amigável diff --git a/parent/bom/pom.xml b/parent/bom/pom.xml index c9a62a1..072a278 100755 --- a/parent/bom/pom.xml +++ b/parent/bom/pom.xml @@ -262,12 +262,17 @@ ${slf4j.version} - + commons-configuration commons-configuration ${commons.configuration.version} + + commons-dbcp + commons-dbcp + ${commons.dbcp.version} + @@ -353,6 +358,7 @@ 1.6.1 1.1.8.Final 1.5 + 1.4 1.8.0.10 4.0.1 1.4.4 -- libgit2 0.21.2