From eaffd9d71ba78c117f7b67dcfdf62fc504698470 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Fri, 11 Jul 2008 14:41:33 +0000 Subject: [PATCH] allow SQLWarnings to stop . PR 41836. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@675968 13f79535-47bb-0310-9956-ffa450edef68 --- WHATSNEW | 4 ++ docs/manual/CoreTasks/sql.html | 9 ++++ .../apache/tools/ant/taskdefs/SQLExec.java | 46 ++++++++++++------- 3 files changed, 43 insertions(+), 16 deletions(-) diff --git a/WHATSNEW b/WHATSNEW index 499da96be..f401f60aa 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -146,6 +146,10 @@ Other changes: * A new showWarnings attribute of allows warnings to be logged. Bugzilla Report 41836. + * A new treatWarningsAsErrors attribute of can be used to fail + a build if a warning occurs. + Bugzilla Report 41836. + Changes from Ant 1.7.0 TO Ant 1.7.1 ============================================= diff --git a/docs/manual/CoreTasks/sql.html b/docs/manual/CoreTasks/sql.html index 7ca2e79e4..44cd1b8a0 100644 --- a/docs/manual/CoreTasks/sql.html +++ b/docs/manual/CoreTasks/sql.html @@ -222,6 +222,15 @@ and abort execution and transaction and fail task.

No, default false + + treatWarningsAsErrors + If true, SQLWarnings will be treated + like errors - and the logic selected via the onError attribute + applies. + Since Ant 1.8.0.
+ No, default false + +

Parameters specified as nested elements

diff --git a/src/main/org/apache/tools/ant/taskdefs/SQLExec.java b/src/main/org/apache/tools/ant/taskdefs/SQLExec.java index 5f943a9e3..05c326f3d 100644 --- a/src/main/org/apache/tools/ant/taskdefs/SQLExec.java +++ b/src/main/org/apache/tools/ant/taskdefs/SQLExec.java @@ -211,6 +211,12 @@ public class SQLExec extends JDBCTask { */ private boolean showWarnings = false; + /** + * Whether a warning is an error - in which case onError aplies. + * @since Ant 1.8.0 + */ + private boolean treatWarningsAsErrors = false; + /** * Set the name of the SQL file to be run. * Required unless statements are enclosed in the build file @@ -427,6 +433,14 @@ public class SQLExec extends JDBCTask { showWarnings = b; } + /** + * Whether a warning is an error - in which case onError aplies. + * @since Ant 1.8.0 + */ + public void setTreatWarningsAsErrors(boolean b) { + treatWarningsAsErrors = b; + } + /** * Load the sql file and then execute it * @throws BuildException on error. @@ -613,10 +627,7 @@ public class SQLExec extends JDBCTask { } if (ret) { resultSet = getStatement().getResultSet(); - if (showWarnings) { - printWarnings(resultSet.getWarnings(), - Project.MSG_WARN); - } + printWarnings(resultSet.getWarnings(), false); resultSet.clearWarnings(); if (print) { printResults(resultSet, out); @@ -626,9 +637,7 @@ public class SQLExec extends JDBCTask { updateCount = getStatement().getUpdateCount(); } while (ret || updateCount != -1); - if (showWarnings) { - printWarnings(getStatement().getWarnings(), Project.MSG_WARN); - } + printWarnings(getStatement().getWarnings(), false); getStatement().clearWarnings(); log(updateCountTotal + " rows affected", Project.MSG_VERBOSE); @@ -637,8 +646,7 @@ public class SQLExec extends JDBCTask { out.println(updateCountTotal + " rows affected"); } SQLWarning warning = getConnection().getWarnings(); - printWarnings(warning, showWarnings - ? Project.MSG_WARN : Project.MSG_VERBOSE); + printWarnings(warning, true); getConnection().clearWarnings(); goodSql++; } catch (SQLException e) { @@ -707,9 +715,7 @@ public class SQLExec extends JDBCTask { printValue(rs, col, out); } out.println(); - if (showWarnings) { - printWarnings(rs.getWarnings(), Project.MSG_WARN); - } + printWarnings(rs.getWarnings(), false); } } } @@ -917,10 +923,18 @@ public class SQLExec extends JDBCTask { } } - private void printWarnings(SQLWarning warning, int level) { - while (warning != null) { - log(warning + " sql warning", level); - warning = warning.getNextWarning(); + private void printWarnings(SQLWarning warning, boolean force) + throws SQLException { + SQLWarning initialWarning = warning; + if (showWarnings || force) { + while (warning != null) { + log(warning + " sql warning", + showWarnings ? Project.MSG_WARN : Project.MSG_VERBOSE); + warning = warning.getNextWarning(); + } + } + if (treatWarningsAsErrors && initialWarning != null) { + throw initialWarning; } } }