Repository: beam Updated Branches: refs/heads/master efd785f88 -> 713701ddc
[BEAM-1921] Expose connection properties in JdbcIO Project: http://git-wip-us.apache.org/repos/asf/beam/repo Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/6da0b27a Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/6da0b27a Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/6da0b27a Branch: refs/heads/master Commit: 6da0b27aa56e8a133e206b5eb84b9ab937a2b17e Parents: efd785f Author: mingmxu <[email protected]> Authored: Sun Apr 9 11:34:26 2017 -0700 Committer: Jean-Baptiste Onofré <[email protected]> Committed: Sun Apr 9 22:14:42 2017 +0200 ---------------------------------------------------------------------- .../org/apache/beam/sdk/io/jdbc/JdbcIO.java | 21 ++++++++++++++++++++ 1 file changed, 21 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/beam/blob/6da0b27a/sdks/java/io/jdbc/src/main/java/org/apache/beam/sdk/io/jdbc/JdbcIO.java ---------------------------------------------------------------------- diff --git a/sdks/java/io/jdbc/src/main/java/org/apache/beam/sdk/io/jdbc/JdbcIO.java b/sdks/java/io/jdbc/src/main/java/org/apache/beam/sdk/io/jdbc/JdbcIO.java index 4754c98..dc31130 100644 --- a/sdks/java/io/jdbc/src/main/java/org/apache/beam/sdk/io/jdbc/JdbcIO.java +++ b/sdks/java/io/jdbc/src/main/java/org/apache/beam/sdk/io/jdbc/JdbcIO.java @@ -174,6 +174,7 @@ public class JdbcIO { @Nullable abstract String getUrl(); @Nullable abstract String getUsername(); @Nullable abstract String getPassword(); + @Nullable abstract String getConnectionProperties(); @Nullable abstract DataSource getDataSource(); abstract Builder builder(); @@ -184,6 +185,7 @@ public class JdbcIO { abstract Builder setUrl(String url); abstract Builder setUsername(String username); abstract Builder setPassword(String password); + abstract Builder setConnectionProperties(String connectionProperties); abstract Builder setDataSource(DataSource dataSource); abstract DataSourceConfiguration build(); } @@ -217,6 +219,22 @@ public class JdbcIO { return builder().setPassword(password).build(); } + /** + * Sets the connection properties passed to driver.connect(...). + * Format of the string must be [propertyName=property;]* + * + * <p>NOTE - The "user" and "password" properties can be add via {@link #withUsername(String)}, + * {@link #withPassword(String)}, so they do not need to be included here. + * @param connectionProperties + * @return + */ + public DataSourceConfiguration withConnectionProperties(String connectionProperties) { + checkArgument(connectionProperties != null, "DataSourceConfiguration.create(driver, url)" + + ".withConnectionProperties(connectionProperties) " + + "called with null connectionProperties"); + return builder().setConnectionProperties(connectionProperties).build(); + } + private void populateDisplayData(DisplayData.Builder builder) { if (getDataSource() != null) { builder.addIfNotNull(DisplayData.item("dataSource", getDataSource().getClass().getName())); @@ -238,6 +256,9 @@ public class JdbcIO { basicDataSource.setUrl(getUrl()); basicDataSource.setUsername(getUsername()); basicDataSource.setPassword(getPassword()); + if (getConnectionProperties() != null) { + basicDataSource.setConnectionProperties(getConnectionProperties()); + } return basicDataSource.getConnection(); } }
