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();
       }
     }

Reply via email to