|
15 | 15 | */ |
16 | 16 | package com.google.cloud.teleport.v2.templates.io; |
17 | 17 |
|
| 18 | +import com.google.auto.value.AutoValue; |
18 | 19 | import com.google.common.base.Preconditions; |
19 | 20 | import java.util.HashMap; |
20 | 21 | import java.util.Map; |
|
27 | 28 | import org.apache.beam.sdk.values.PCollection; |
28 | 29 | import org.apache.beam.sdk.values.PDone; |
29 | 30 | import org.checkerframework.checker.nullness.qual.NonNull; |
| 31 | +import org.checkerframework.checker.nullness.qual.Nullable; |
30 | 32 | import redis.clients.jedis.Jedis; |
31 | 33 | import redis.clients.jedis.Pipeline; |
32 | 34 | import redis.clients.jedis.Transaction; |
33 | 35 |
|
34 | 36 | public abstract class RedisHashIO { |
35 | 37 |
|
36 | 38 | public static WriteHash write() { |
37 | | - return new WriteHash(RedisConnectionConfiguration.create(), null); |
| 39 | + |
| 40 | + return (new AutoValue_RedisHashIO_WriteHash.Builder()) |
| 41 | + .setConnectionConfiguration(RedisConnectionConfiguration.create()) |
| 42 | + .build(); |
38 | 43 | } |
39 | 44 |
|
40 | | - public static class WriteHash |
| 45 | + @AutoValue |
| 46 | + public abstract static class WriteHash |
41 | 47 | extends PTransform<@NonNull PCollection<KV<String, KV<String, String>>>, @NonNull PDone> { |
| 48 | + public WriteHash() {} |
42 | 49 |
|
43 | | - private final RedisConnectionConfiguration connectionConfiguration; |
44 | | - private final Long expireTime; |
| 50 | + @Nullable |
| 51 | + abstract RedisConnectionConfiguration connectionConfiguration(); |
45 | 52 |
|
46 | | - private WriteHash(RedisConnectionConfiguration connectionConfiguration, Long expireTime) { |
47 | | - this.connectionConfiguration = connectionConfiguration; |
48 | | - this.expireTime = expireTime; |
49 | | - } |
| 53 | + @Nullable |
| 54 | + abstract Long expireTime(); |
50 | 55 |
|
51 | | - public RedisConnectionConfiguration connectionConfiguration() { |
52 | | - return connectionConfiguration; |
53 | | - } |
54 | | - |
55 | | - public Long expireTime() { |
56 | | - return expireTime; |
57 | | - } |
| 56 | + abstract RedisHashIO.WriteHash.Builder builder(); |
58 | 57 |
|
59 | 58 | public RedisHashIO.WriteHash withConnectionConfiguration( |
60 | 59 | RedisConnectionConfiguration connectionConfiguration) { |
61 | 60 | Preconditions.checkArgument(connectionConfiguration != null, "connection cannot be null"); |
62 | | - return new WriteHash(connectionConfiguration, this.expireTime); |
| 61 | + return this.builder().setConnectionConfiguration(connectionConfiguration).build(); |
63 | 62 | } |
64 | 63 |
|
65 | 64 | public RedisHashIO.WriteHash withTtl(Long expireTimeMillis) { |
66 | | - return new WriteHash(this.connectionConfiguration, expireTimeMillis); |
| 65 | + return this.builder().setExpireTime(expireTimeMillis).build(); |
67 | 66 | } |
68 | 67 |
|
69 | 68 | @NonNull |
@@ -149,5 +148,17 @@ public void teardown() { |
149 | 148 | this.jedis.close(); |
150 | 149 | } |
151 | 150 | } |
| 151 | + |
| 152 | + @AutoValue.Builder |
| 153 | + abstract static class Builder { |
| 154 | + Builder() {} |
| 155 | + |
| 156 | + abstract WriteHash.Builder setExpireTime(Long expireTimeMillis); |
| 157 | + |
| 158 | + abstract WriteHash.Builder setConnectionConfiguration( |
| 159 | + RedisConnectionConfiguration connectionConfiguration); |
| 160 | + |
| 161 | + abstract WriteHash build(); |
| 162 | + } |
152 | 163 | } |
153 | 164 | } |
0 commit comments