git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@805014 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -832,6 +832,10 @@ Other changes: | |||||
| * Ant now builds against commons-net 2.0 as well. | * Ant now builds against commons-net 2.0 as well. | ||||
| Bugzilla Report 47669. | Bugzilla Report 47669. | ||||
| * A new nested element connectionProperty of <sql> allows setting of | |||||
| arbitrary JDBC connection properties. | |||||
| Bugzilla Report 33452. | |||||
| Changes from Ant 1.7.0 TO Ant 1.7.1 | Changes from Ant 1.7.0 TO Ant 1.7.1 | ||||
| ============================================= | ============================================= | ||||
| @@ -296,6 +296,29 @@ of transactions. </p> | |||||
| href="../using.html#path">PATH like structure</a> and can also be set via a nested | href="../using.html#path">PATH like structure</a> and can also be set via a nested | ||||
| <em>classpath</em> element. It is used to load the JDBC classes.</p> | <em>classpath</em> element. It is used to load the JDBC classes.</p> | ||||
| <h4>connectionProperty</h4> | |||||
| <p><em>Since Ant 1.8.0</em></p> | |||||
| <p>Use nested <code><connectionProperty></code> elements to | |||||
| specify additional JDBC properties that need to be set when | |||||
| connecting to the database.</p> | |||||
| <table border="1" cellpadding="2" cellspacing="0"> | |||||
| <tr> | |||||
| <td valign="top"><b>Attribute</b></td> | |||||
| <td valign="top"><b>Description</b></td> | |||||
| <td align="center" valign="top"><b>Required</b></td> | |||||
| </tr> | |||||
| <tr> | |||||
| <td valign="top">name</td> | |||||
| <td valign="top">Name of the property</td> | |||||
| <td valign="top" align="center">Yes</td> | |||||
| </tr> | |||||
| <tr> | |||||
| <td valign="top">value</td> | |||||
| <td valign="top">Value of the property</td> | |||||
| <td valign="top" align="center">Yes</td> | |||||
| </tr> | |||||
| </table> | |||||
| <h3>Examples</h3> | <h3>Examples</h3> | ||||
| <blockquote><pre><sql | <blockquote><pre><sql | ||||
| driver="org.database.jdbcDriver" | driver="org.database.jdbcDriver" | ||||
| @@ -310,6 +333,21 @@ href="../using.html#path">PATH like structure</a> and can also be set via a nest | |||||
| org.database.jdbcDriver and executes the SQL statements contained within | org.database.jdbcDriver and executes the SQL statements contained within | ||||
| the file data.sql</p> | the file data.sql</p> | ||||
| <blockquote><pre><sql | |||||
| driver="org.database.jdbcDriver" | |||||
| url="jdbc:database-url" | |||||
| userid="sa" | |||||
| password="pass" | |||||
| src="data.sql"> | |||||
| <connectionProperty name="internal_logon" value="SYSDBA"> | |||||
| </sql> | |||||
| </pre></blockquote> | |||||
| <p>Connects to the database given in <i>url</i> as the sa user using | |||||
| the org.database.jdbcDriver and executes the SQL statements contained | |||||
| within the file data.sql. Also sets the | |||||
| property <i>internal_logon</i> to the value <i>SYSDBA</i>.</p> | |||||
| <blockquote><pre><sql | <blockquote><pre><sql | ||||
| driver="org.database.jdbcDriver" | driver="org.database.jdbcDriver" | ||||
| url="jdbc:database-url" | url="jdbc:database-url" | ||||
| @@ -22,9 +22,12 @@ import java.sql.Connection; | |||||
| import java.sql.DatabaseMetaData; | import java.sql.DatabaseMetaData; | ||||
| import java.sql.Driver; | import java.sql.Driver; | ||||
| import java.sql.SQLException; | import java.sql.SQLException; | ||||
| import java.util.ArrayList; | |||||
| import java.util.Hashtable; | import java.util.Hashtable; | ||||
| import java.util.Properties; | |||||
| import java.util.Iterator; | |||||
| import java.util.List; | |||||
| import java.util.Locale; | import java.util.Locale; | ||||
| import java.util.Properties; | |||||
| import org.apache.tools.ant.AntClassLoader; | import org.apache.tools.ant.AntClassLoader; | ||||
| import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
| @@ -148,6 +151,13 @@ public abstract class JDBCTask extends Task { | |||||
| */ | */ | ||||
| private boolean failOnConnectionError = true; | private boolean failOnConnectionError = true; | ||||
| /** | |||||
| * Additional properties to put into the JDBC connection string. | |||||
| * | |||||
| * @since Ant 1.8.0 | |||||
| */ | |||||
| private List/*<Property>*/ connectionProperties = new ArrayList(); | |||||
| /** | /** | ||||
| * Sets the classpath for loading the driver. | * Sets the classpath for loading the driver. | ||||
| * @param classpath The classpath to set | * @param classpath The classpath to set | ||||
| @@ -305,6 +315,15 @@ public abstract class JDBCTask extends Task { | |||||
| return loader; | return loader; | ||||
| } | } | ||||
| /** | |||||
| * Additional properties to put into the JDBC connection string. | |||||
| * | |||||
| * @since Ant 1.8.0 | |||||
| */ | |||||
| public void addConnectionProperty(Property var) { | |||||
| connectionProperties.add(var); | |||||
| } | |||||
| /** | /** | ||||
| * Creates a new Connection as using the driver, url, userid and password | * Creates a new Connection as using the driver, url, userid and password | ||||
| * specified. | * specified. | ||||
| @@ -332,6 +351,22 @@ public abstract class JDBCTask extends Task { | |||||
| Properties info = new Properties(); | Properties info = new Properties(); | ||||
| info.put("user", getUserId()); | info.put("user", getUserId()); | ||||
| info.put("password", getPassword()); | info.put("password", getPassword()); | ||||
| for (Iterator props = connectionProperties.iterator(); | |||||
| props.hasNext(); ) { | |||||
| Property p = (Property) props.next(); | |||||
| String name = p.getName(); | |||||
| String value = p.getValue(); | |||||
| if (name == null || value == null) { | |||||
| log("Only name/value pairs are supported as connection" | |||||
| + " properties.", Project.MSG_WARN); | |||||
| } else { | |||||
| log("Setting connection property " + name + " to " + value, | |||||
| Project.MSG_VERBOSE); | |||||
| info.put(name, value); | |||||
| } | |||||
| } | |||||
| Connection conn = getDriver().connect(getUrl(), info); | Connection conn = getDriver().connect(getUrl(), info); | ||||
| if (conn == null) { | if (conn == null) { | ||||