Author: bpoussin Date: 2011-04-27 19:46:44 +0200 (Wed, 27 Apr 2011) New Revision: 843 Url: http://nuiton.org/repositories/revision/wikitty/843 Log: Anomalie #1484: bad getConnection method used in wikitty-jdbc (before correction work with h2 and fail with pg) Modified: trunk/wikitty-jdbc/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java trunk/wikitty-jdbc/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java trunk/wikitty-jdbc/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java Modified: trunk/wikitty-jdbc/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java =================================================================== --- trunk/wikitty-jdbc/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java 2011-04-27 15:51:40 UTC (rev 842) +++ trunk/wikitty-jdbc/src/main/java/org/nuiton/wikitty/jdbc/WikittyExtensionStorageJDBC.java 2011-04-27 17:46:44 UTC (rev 843) @@ -96,7 +96,7 @@ public WikittyExtensionStorageJDBC(ApplicationConfig config) { this.config = config; jdbcQuery = WikittyJDBCUtil.loadQuery(config); - Connection connectionTest = WikittyJDBCUtil.getJDBCConnection(config); + Connection connectionTest = WikittyJDBCUtil.getConnection(config); try { // If test of existance work, no exception and do nothing // if exception try to create databse Modified: trunk/wikitty-jdbc/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java =================================================================== --- trunk/wikitty-jdbc/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java 2011-04-27 15:51:40 UTC (rev 842) +++ trunk/wikitty-jdbc/src/main/java/org/nuiton/wikitty/jdbc/WikittyJDBCUtil.java 2011-04-27 17:46:44 UTC (rev 843) @@ -48,6 +48,7 @@ import org.apache.commons.dbcp.managed.BasicManagedDataSource; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.ApplicationConfig; @@ -228,11 +229,14 @@ /** * Get a new connection instance (i.e. it opens a new transaction) plug on * JTA. - * + * + * This connection is not configured, returned connection is just create connection + * Don't use this method, use getConnection that change auto commit to false + * * @param conf configuration * @return a new Connection (db transaction) */ - public static synchronized Connection getConnection(ApplicationConfig conf) { + public static synchronized Connection getConnectionUnconfigured(ApplicationConfig conf) { String driver = conf.getOption( WikittyConfigOption.WIKITTY_STORAGE_JDBC_DRIVER.getKey()); String host = conf.getOption( @@ -257,21 +261,22 @@ BasicManagedDataSource dataSource = new BasicManagedDataSource(); // if xadatasource - if(xaDataSourceClassName != null) { - XADataSource xaDataSource = (XADataSource) Class.forName(xaDataSourceClassName).newInstance(); + if(StringUtils.isNotEmpty(xaDataSourceClassName)) { + XADataSource xaDataSource = (XADataSource) + Class.forName(xaDataSourceClassName).newInstance(); BeanMap beanMap = new BeanMap(xaDataSource); Set<String> fields = beanMap.keySet(); + String keyStart = + WikittyConfigOption.WIKITTY_STORAGE_JDBC_XADATASOURCE.getKey() + + "." + xaDataSourceClassName + "."; + // Inject properties in xadatasource for(Entry<Object, Object> properties : conf.getFlatOptions().entrySet()) { String propertyName = (String) properties.getKey(); - if (propertyName.startsWith( - WikittyConfigOption.WIKITTY_STORAGE_JDBC_XADATASOURCE.getKey() - + "." + xaDataSourceClassName + ".")) { - propertyName = propertyName.replaceFirst( - WikittyConfigOption.WIKITTY_STORAGE_JDBC_XADATASOURCE.getKey() - + "." + xaDataSourceClassName + ".", ""); + if (propertyName.startsWith(keyStart)) { + propertyName = propertyName.replaceFirst(keyStart, ""); if(fields.contains(propertyName)) { String propertyValue = (String) properties.getValue(); BeanUtils.setProperty(xaDataSource, propertyName, propertyValue); @@ -333,10 +338,12 @@ * @return a new Connection (db transaction) * @throws SQLException if the connection fails */ - public static synchronized Connection getJDBCConnection(ApplicationConfig config) { + public static synchronized Connection getConnection(ApplicationConfig config) { try { - Connection connection = getConnection(config); - connection.setAutoCommit(false); + Connection connection = getConnectionUnconfigured(config); + if (connection.getAutoCommit()) { + connection.setAutoCommit(false); + } return connection; } catch(SQLException eee) { throw new WikittyException( Modified: trunk/wikitty-jdbc/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java =================================================================== --- trunk/wikitty-jdbc/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java 2011-04-27 15:51:40 UTC (rev 842) +++ trunk/wikitty-jdbc/src/main/java/org/nuiton/wikitty/jdbc/WikittyStorageJDBC.java 2011-04-27 17:46:44 UTC (rev 843) @@ -129,7 +129,7 @@ * test table existance or create them if necessary */ protected void checkTableOrCreation() { - Connection connectionTest = WikittyJDBCUtil.getJDBCConnection(config); + Connection connectionTest = WikittyJDBCUtil.getConnection(config); try { // If test of existance work, no exception and do nothing // if exception try to create databse @@ -162,7 +162,7 @@ * If add can be done, wikitty work for all, except binary type */ protected void checkColumnBinaryOrAlter() { - Connection connectionTest = WikittyJDBCUtil.getJDBCConnection(config); + Connection connectionTest = WikittyJDBCUtil.getConnection(config); try { // If test of existance work, no exception and do nothing // if exception try to create databse