diff --git a/org/postgresql/Driver.java.in b/org/postgresql/Driver.java.in index f6c69c0..8d00c7a 100644 --- a/org/postgresql/Driver.java.in +++ b/org/postgresql/Driver.java.in @@ -562,7 +562,7 @@ * @return Properties with elements added from the url * @exception SQLException */ - Properties parseURL(String url, Properties defaults) throws SQLException + public static Properties parseURL(String url, Properties defaults) throws SQLException { Properties urlProps = new Properties(defaults); diff --git a/org/postgresql/ds/common/BaseDataSource.java b/org/postgresql/ds/common/BaseDataSource.java index bfe54f7..47fc04f 100644 --- a/org/postgresql/ds/common/BaseDataSource.java +++ b/org/postgresql/ds/common/BaseDataSource.java @@ -9,6 +9,7 @@ import javax.naming.*; import java.sql.*; +import java.util.Properties; import java.io.IOException; import java.io.PrintWriter; @@ -473,7 +474,7 @@ /** * Generates a DriverManager URL from the other properties supplied. */ - private String getUrl() + public String getUrl() { StringBuffer sb = new StringBuffer(100); sb.append("jdbc:postgresql://"); @@ -516,6 +517,30 @@ return sb.toString(); } + + /** + * Sets properties from a DriverManager URL. + */ + public void setUrl(String url) throws SQLException { + Properties p = org.postgresql.Driver.parseURL(url, null); + serverName = p.getProperty("PGHOST", "localhost"); + portNumber = Integer.parseInt(p.getProperty("PGPORT", "0")); + databaseName = p.getProperty("PGDBNAME"); + loginTimeout = Integer.parseInt(p.getProperty("loginTimeout", "0")); + socketTimeout = Integer.parseInt(p.getProperty("socketTimeout", "0")); + prepareThreshold = Integer.parseInt(p.getProperty("prepareThreshold", "5")); + unknownLength = Integer.parseInt(p.getProperty("unknownLength", "0")); + logLevel = Integer.parseInt(p.getProperty("loglevel", "0")); + protocolVersion = Integer.parseInt(p.getProperty("protocolVersion", "0")); + ssl = Boolean.parseBoolean(p.getProperty("ssl")); + sslfactory = p.getProperty("sslfactory"); + receiveBufferSize = Integer.parseInt(p.getProperty("receiveBufferSize", "-1")); + sendBufferSize = Integer.parseInt(p.getProperty("sendBufferSize", "-1")); + tcpKeepAlive = Boolean.parseBoolean(p.getProperty("tcpkeepalive")); + compatible = p.getProperty("compatible"); + applicationName = p.getProperty("ApplicationName"); + binaryTransfer = Boolean.parseBoolean(p.getProperty("binaryTransfer")); + } /** * Generates a reference using the appropriate object factory.