From ab357b32b7c02e1caadab166a5dc0464bd8aac83 Mon Sep 17 00:00:00 2001 From: tvs Date: Fri, 22 May 2020 16:25:28 +0200 Subject: [PATCH 1/2] [BEAM-10066] Added support for the ValueProvider for RedisConnectionConfiguration --- .../redis/RedisConnectionConfiguration.java | 75 ++++++++++++++----- 1 file changed, 56 insertions(+), 19 deletions(-) diff --git a/sdks/java/io/redis/src/main/java/org/apache/beam/sdk/io/redis/RedisConnectionConfiguration.java b/sdks/java/io/redis/src/main/java/org/apache/beam/sdk/io/redis/RedisConnectionConfiguration.java index 14d84e9f16c62..cf6a2caedfd0e 100644 --- a/sdks/java/io/redis/src/main/java/org/apache/beam/sdk/io/redis/RedisConnectionConfiguration.java +++ b/sdks/java/io/redis/src/main/java/org/apache/beam/sdk/io/redis/RedisConnectionConfiguration.java @@ -22,6 +22,8 @@ import com.google.auto.value.AutoValue; import java.io.Serializable; import javax.annotation.Nullable; + +import org.apache.beam.sdk.options.ValueProvider; import org.apache.beam.sdk.transforms.display.DisplayData; import redis.clients.jedis.Jedis; import redis.clients.jedis.Protocol; @@ -33,54 +35,66 @@ @AutoValue public abstract class RedisConnectionConfiguration implements Serializable { - abstract String host(); + abstract ValueProvider host(); - abstract int port(); + abstract ValueProvider port(); @Nullable - abstract String auth(); + abstract ValueProvider auth(); - abstract int timeout(); + abstract ValueProvider timeout(); - abstract boolean ssl(); + abstract ValueProvider ssl(); abstract Builder builder(); @AutoValue.Builder abstract static class Builder { - abstract Builder setHost(String host); + abstract Builder setHost(ValueProvider host); - abstract Builder setPort(int port); + abstract Builder setPort(ValueProvider port); - abstract Builder setAuth(String auth); + abstract Builder setAuth(ValueProvider auth); - abstract Builder setTimeout(int timeout); + abstract Builder setTimeout(ValueProvider timeout); - abstract Builder setSsl(boolean ssl); + abstract Builder setSsl(ValueProvider ssl); abstract RedisConnectionConfiguration build(); } public static RedisConnectionConfiguration create() { return new AutoValue_RedisConnectionConfiguration.Builder() - .setHost(Protocol.DEFAULT_HOST) - .setPort(Protocol.DEFAULT_PORT) - .setTimeout(Protocol.DEFAULT_TIMEOUT) - .setSsl(false) + .setHost(ValueProvider.StaticValueProvider.of(Protocol.DEFAULT_HOST)) + .setPort(ValueProvider.StaticValueProvider.of(Protocol.DEFAULT_PORT)) + .setTimeout(ValueProvider.StaticValueProvider.of(Protocol.DEFAULT_TIMEOUT)) + .setSsl(ValueProvider.StaticValueProvider.of(false)) .build(); } public static RedisConnectionConfiguration create(String host, int port) { + return create( + ValueProvider.StaticValueProvider.of(host), ValueProvider.StaticValueProvider.of(port)); + } + + public static RedisConnectionConfiguration create( + ValueProvider host, ValueProvider port) { return new AutoValue_RedisConnectionConfiguration.Builder() .setHost(host) .setPort(port) - .setTimeout(Protocol.DEFAULT_TIMEOUT) - .setSsl(false) + .setTimeout(ValueProvider.StaticValueProvider.of(Protocol.DEFAULT_TIMEOUT)) + .setSsl(ValueProvider.StaticValueProvider.of(false)) .build(); } /** Define the host name of the Redis server. */ public RedisConnectionConfiguration withHost(String host) { + checkArgument(host != null, "host can not be null"); + return withHost(ValueProvider.StaticValueProvider.of(host)); + } + + /** See {@link RedisConnectionConfiguration#withHost(String)}. */ + public RedisConnectionConfiguration withHost(ValueProvider host) { checkArgument(host != null, "host can not be null"); return builder().setHost(host).build(); } @@ -88,11 +102,23 @@ public RedisConnectionConfiguration withHost(String host) { /** Define the port number of the Redis server. */ public RedisConnectionConfiguration withPort(int port) { checkArgument(port > 0, "port can not be negative or 0"); + return withPort(ValueProvider.StaticValueProvider.of(port)); + } + + /** See {@link RedisConnectionConfiguration#withPort(int)}. */ + public RedisConnectionConfiguration withPort(ValueProvider port) { + checkArgument(port != null, "port can not be null"); return builder().setPort(port).build(); } /** Define the password to authenticate on the Redis server. */ public RedisConnectionConfiguration withAuth(String auth) { + checkArgument(auth != null, "auth can not be null"); + return withAuth(ValueProvider.StaticValueProvider.of(auth)); + } + + /** See {@link RedisConnectionConfiguration#withAuth(String)}. */ + public RedisConnectionConfiguration withAuth(ValueProvider auth) { checkArgument(auth != null, "auth can not be null"); return builder().setAuth(auth).build(); } @@ -102,19 +128,30 @@ public RedisConnectionConfiguration withAuth(String auth) { */ public RedisConnectionConfiguration withTimeout(int timeout) { checkArgument(timeout >= 0, "timeout can not be negative"); + return withTimeout(ValueProvider.StaticValueProvider.of(timeout)); + } + + /** See {@link RedisConnectionConfiguration#withTimeout(int)}. */ + public RedisConnectionConfiguration withTimeout(ValueProvider timeout) { + checkArgument(timeout != null, "timeout can not be null"); return builder().setTimeout(timeout).build(); } /** Enable SSL connection to Redis server. */ public RedisConnectionConfiguration enableSSL() { - return builder().setSsl(true).build(); + return withSSL(ValueProvider.StaticValueProvider.of(true)); + } + + /** Define if a SSL connection to Redis server should be used. */ + public RedisConnectionConfiguration withSSL(ValueProvider ssl) { + return builder().setSsl(ssl).build(); } /** Connect to the Redis instance. */ public Jedis connect() { - Jedis jedis = new Jedis(host(), port(), timeout(), ssl()); + Jedis jedis = new Jedis(host().get(), port().get(), timeout().get(), ssl().get()); if (auth() != null) { - jedis.auth(auth()); + jedis.auth(auth().get()); } return jedis; } From 86bc43d25c552667678bba72717a4e8b36d0c1d2 Mon Sep 17 00:00:00 2001 From: tvs Date: Fri, 5 Jun 2020 08:20:11 +0200 Subject: [PATCH 2/2] [BEAM-10066] Ran spotlessApply --- .../apache/beam/sdk/io/redis/RedisConnectionConfiguration.java | 1 - 1 file changed, 1 deletion(-) diff --git a/sdks/java/io/redis/src/main/java/org/apache/beam/sdk/io/redis/RedisConnectionConfiguration.java b/sdks/java/io/redis/src/main/java/org/apache/beam/sdk/io/redis/RedisConnectionConfiguration.java index cf6a2caedfd0e..7a01bc41f6fb5 100644 --- a/sdks/java/io/redis/src/main/java/org/apache/beam/sdk/io/redis/RedisConnectionConfiguration.java +++ b/sdks/java/io/redis/src/main/java/org/apache/beam/sdk/io/redis/RedisConnectionConfiguration.java @@ -22,7 +22,6 @@ import com.google.auto.value.AutoValue; import java.io.Serializable; import javax.annotation.Nullable; - import org.apache.beam.sdk.options.ValueProvider; import org.apache.beam.sdk.transforms.display.DisplayData; import redis.clients.jedis.Jedis;