From 50df4d08c2e5180eab2eda916a1502f7566cb45f Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Fri, 31 Aug 2012 16:52:28 +0200 Subject: [PATCH] adapted to deprecation backport in 3.1.3 Issue: SPR-9664 --- .../test/jdbc/JdbcTestUtils.java | 57 ++++++------------- .../test/jdbc/SimpleJdbcTestUtils.java | 7 +-- 2 files changed, 20 insertions(+), 44 deletions(-) diff --git a/spring-test/src/main/java/org/springframework/test/jdbc/JdbcTestUtils.java b/spring-test/src/main/java/org/springframework/test/jdbc/JdbcTestUtils.java index 6006d2e3d09..cb9ec9f0cbc 100644 --- a/spring-test/src/main/java/org/springframework/test/jdbc/JdbcTestUtils.java +++ b/spring-test/src/main/java/org/springframework/test/jdbc/JdbcTestUtils.java @@ -35,8 +35,8 @@ import org.springframework.util.StringUtils; /** * {@code JdbcTestUtils} is a collection of JDBC related utility functions * intended to simplify standard database testing scenarios. - * - *

As of Spring 3.2, {@code JdbcTestUtils} supersedes {@link SimpleJdbcTestUtils}. + * + *

As of Spring 3.1.3, {@code JdbcTestUtils} supersedes {@link SimpleJdbcTestUtils}. * * @author Thomas Risberg * @author Sam Brannen @@ -50,11 +50,9 @@ public class JdbcTestUtils { /** * Count the rows in the given table. - * * @param jdbcTemplate the JdbcTemplate with which to perform JDBC operations * @param tableName name of the table to count rows in * @return the number of rows in the table - * @since 3.2 */ public static int countRowsInTable(JdbcTemplate jdbcTemplate, String tableName) { return jdbcTemplate.queryForInt("SELECT COUNT(0) FROM " + tableName); @@ -62,38 +60,31 @@ public class JdbcTestUtils { /** * Count the rows in the given table, using the provided {@code WHERE} clause. - * *

If the provided {@code WHERE} clause contains text, it will be prefixed * with {@code " WHERE "} and then appended to the generated {@code SELECT} * statement. For example, if the provided table name is {@code "person"} and * the provided where clause is {@code "name = 'Bob' and age > 25"}, the * resulting SQL statement to execute will be * {@code "SELECT COUNT(0) FROM person WHERE name = 'Bob' and age > 25"}. - * * @param jdbcTemplate the JdbcTemplate with which to perform JDBC operations * @param tableName the name of the table to count rows in * @param whereClause the {@code WHERE} clause to append to the query * @return the number of rows in the table that match the provided * {@code WHERE} clause - * @since 3.2 */ public static int countRowsInTableWhere(JdbcTemplate jdbcTemplate, String tableName, String whereClause) { String sql = "SELECT COUNT(0) FROM " + tableName; - if (StringUtils.hasText(whereClause)) { sql += " WHERE " + whereClause; } - return jdbcTemplate.queryForInt(sql); } /** * Delete all rows from the specified tables. - * * @param jdbcTemplate the JdbcTemplate with which to perform JDBC operations * @param tableNames the names of the tables to delete from * @return the total number of rows deleted from all specified tables - * @since 3.2 */ public static int deleteFromTables(JdbcTemplate jdbcTemplate, String... tableNames) { int totalRowCount = 0; @@ -109,10 +100,8 @@ public class JdbcTestUtils { /** * Drop the specified tables. - * * @param jdbcTemplate the JdbcTemplate with which to perform JDBC operations * @param tableNames the names of the tables to drop - * @since 3.2 */ public static void dropTables(JdbcTemplate jdbcTemplate, String... tableNames) { for (String tableName : tableNames) { @@ -125,12 +114,9 @@ public class JdbcTestUtils { /** * Execute the given SQL script. - * *

The script will typically be loaded from the classpath. There should * be one statement per line. Any semicolons will be removed. - * *

Do not use this method to execute DDL if you expect rollback. - * * @param jdbcTemplate the JdbcTemplate with which to perform JDBC operations * @param resourceLoader the resource loader with which to load the SQL script * @param sqlResourcePath the Spring resource path for the SQL script @@ -138,45 +124,39 @@ public class JdbcTestUtils { * exception in the event of an error * @throws DataAccessException if there is an error executing a statement * and {@code continueOnError} is {@code false} - * @since 3.2 */ public static void executeSqlScript(JdbcTemplate jdbcTemplate, ResourceLoader resourceLoader, String sqlResourcePath, boolean continueOnError) throws DataAccessException { + Resource resource = resourceLoader.getResource(sqlResourcePath); executeSqlScript(jdbcTemplate, resource, continueOnError); } /** * Execute the given SQL script. - * *

The script will typically be loaded from the classpath. Statements * should be delimited with a semicolon. If statements are not delimited with * a semicolon then there should be one statement per line. Statements are * allowed to span lines only if they are delimited with a semicolon. - * *

Do not use this method to execute DDL if you expect rollback. - * * @param jdbcTemplate the JdbcTemplate with which to perform JDBC operations * @param resource the resource to load the SQL script from * @param continueOnError whether or not to continue without throwing an * exception in the event of an error * @throws DataAccessException if there is an error executing a statement * and {@code continueOnError} is {@code false} - * @since 3.2 */ public static void executeSqlScript(JdbcTemplate jdbcTemplate, Resource resource, boolean continueOnError) throws DataAccessException { + executeSqlScript(jdbcTemplate, new EncodedResource(resource), continueOnError); } /** * Execute the given SQL script. - * *

The script will typically be loaded from the classpath. There should * be one statement per line. Any semicolons will be removed. - * *

Do not use this method to execute DDL if you expect rollback. - * * @param jdbcTemplate the JdbcTemplate with which to perform JDBC operations * @param resource the resource (potentially associated with a specific encoding) * to load the SQL script from @@ -184,7 +164,6 @@ public class JdbcTestUtils { * exception in the event of an error * @throws DataAccessException if there is an error executing a statement * and {@code continueOnError} is {@code false} - * @since 3.2 */ public static void executeSqlScript(JdbcTemplate jdbcTemplate, EncodedResource resource, boolean continueOnError) throws DataAccessException { @@ -192,7 +171,6 @@ public class JdbcTestUtils { if (logger.isInfoEnabled()) { logger.info("Executing SQL script from " + resource); } - long startTime = System.currentTimeMillis(); List statements = new LinkedList(); LineNumberReader reader = null; @@ -210,12 +188,14 @@ public class JdbcTestUtils { if (logger.isDebugEnabled()) { logger.debug(rowsAffected + " rows affected by SQL: " + statement); } - } catch (DataAccessException ex) { + } + catch (DataAccessException ex) { if (continueOnError) { if (logger.isWarnEnabled()) { logger.warn("SQL statement [" + statement + "] failed", ex); } - } else { + } + else { throw ex; } } @@ -224,9 +204,11 @@ public class JdbcTestUtils { if (logger.isInfoEnabled()) { logger.info(String.format("Executed SQL script from %s in %s ms.", resource, elapsedTime)); } - } catch (IOException ex) { + } + catch (IOException ex) { throw new DataAccessResourceFailureException("Failed to open SQL script from " + resource, ex); - } finally { + } + finally { try { if (reader != null) { reader.close(); @@ -240,7 +222,6 @@ public class JdbcTestUtils { /** * Read a script from the provided {@code LineNumberReader} and build a * {@code String} containing the lines. - * * @param lineNumberReader the {@code LineNumberReader} containing the script * to be processed * @return a {@code String} containing the script lines @@ -262,12 +243,9 @@ public class JdbcTestUtils { /** * Determine if the provided SQL script contains the specified delimiter. - * * @param script the SQL script - * @param delim character delimiting each statement — typically a ';' - * character - * @return {@code true} if the script contains the delimiter; {@code false} - * otherwise + * @param delim character delimiting each statement — typically a ';' character + * @return {@code true} if the script contains the delimiter; {@code false} otherwise */ public static boolean containsSqlScriptDelimiters(String script, char delim) { boolean inLiteral = false; @@ -287,10 +265,8 @@ public class JdbcTestUtils { * Split an SQL script into separate statements delimited with the provided * delimiter character. Each individual statement will be added to the * provided List. - * * @param script the SQL script - * @param delim character delimiting each statement — typically a ';' - * character + * @param delim character delimiting each statement — typically a ';' character * @param statements the list that will contain the individual statements */ public static void splitSqlScript(String script, char delim, List statements) { @@ -306,7 +282,8 @@ public class JdbcTestUtils { statements.add(sb.toString()); sb = new StringBuilder(); } - } else { + } + else { sb.append(content[i]); } } diff --git a/spring-test/src/main/java/org/springframework/test/jdbc/SimpleJdbcTestUtils.java b/spring-test/src/main/java/org/springframework/test/jdbc/SimpleJdbcTestUtils.java index 95f24a42302..348448894e3 100644 --- a/spring-test/src/main/java/org/springframework/test/jdbc/SimpleJdbcTestUtils.java +++ b/spring-test/src/main/java/org/springframework/test/jdbc/SimpleJdbcTestUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2011 the original author or authors. + * Copyright 2002-2012 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +18,6 @@ package org.springframework.test.jdbc; import java.io.IOException; import java.io.LineNumberReader; - import java.util.LinkedList; import java.util.List; @@ -40,7 +39,7 @@ import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; * @author Juergen Hoeller * @author Thomas Risberg * @since 2.5 - * @deprecated As of Spring 3.2, use {@link JdbcTestUtils} instead. + * @deprecated as of Spring 3.1.3; use {@link JdbcTestUtils} instead. */ @Deprecated public abstract class SimpleJdbcTestUtils { @@ -97,7 +96,7 @@ public abstract class SimpleJdbcTestUtils { } /** - * Execute the given SQL script. The script will normally be loaded by classpath. + * Execute the given SQL script. The script will normally be loaded by classpath. *

Statements should be delimited with a semicolon. If statements are not delimited with * a semicolon then there should be one statement per line. Statements are allowed to span * lines only if they are delimited with a semicolon.