From 0285789a24cbe8f88ec1f3ce597cbb5e5a97d3c6 Mon Sep 17 00:00:00 2001 From: Ashwin Giridharan Date: Mon, 16 Mar 2020 11:21:30 -0700 Subject: [PATCH] Addressed review comments --- .../kinesis/common/StreamIdentifier.java | 21 ++++++++++-------- .../kinesis/leases/MultiStreamLease.java | 22 ++----------------- 2 files changed, 14 insertions(+), 29 deletions(-) diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/common/StreamIdentifier.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/common/StreamIdentifier.java index 0bdce7fb..f4cbac29 100644 --- a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/common/StreamIdentifier.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/common/StreamIdentifier.java @@ -3,6 +3,7 @@ package software.amazon.kinesis.common; import com.google.common.base.Joiner; import lombok.EqualsAndHashCode; import lombok.Getter; +import lombok.NonNull; import lombok.experimental.Accessors; import software.amazon.awssdk.utils.Validate; @@ -18,14 +19,16 @@ public class StreamIdentifier { private static final String DELIMITER = ":"; private static final Pattern PATTERN = Pattern.compile(".*" + ":" + ".*" + ":" + "[0-9]*"); - private StreamIdentifier(Optional accountIdOptional, String streamName, - Optional streamCreationEpochOptional) { - Validate.isTrue((accountIdOptional.isPresent() && streamCreationEpochOptional.isPresent()) || - (!accountIdOptional.isPresent() && !streamCreationEpochOptional.isPresent()), - "AccountId and StreamCreationEpoch must either be present together or not"); - this.accountIdOptional = accountIdOptional; + private StreamIdentifier(@NonNull String accountId, @NonNull String streamName, @NonNull Long streamCreationEpoch) { + this.accountIdOptional = Optional.of(accountId); this.streamName = streamName; - this.streamCreationEpochOptional = streamCreationEpochOptional; + this.streamCreationEpochOptional = Optional.of(streamCreationEpoch); + } + + private StreamIdentifier(@NonNull String streamName) { + this.accountIdOptional = Optional.empty(); + this.streamName = streamName; + this.streamCreationEpochOptional = Optional.empty(); } /** @@ -51,7 +54,7 @@ public class StreamIdentifier { public static StreamIdentifier multiStreamInstance(String streamIdentifierSer) { if (PATTERN.matcher(streamIdentifierSer).matches()) { final String[] split = streamIdentifierSer.split(DELIMITER); - return new StreamIdentifier(Optional.of(split[0]), split[1], Optional.of(Long.parseLong(split[2]))); + return new StreamIdentifier(split[0], split[1], Long.parseLong(split[2])); } else { throw new IllegalArgumentException("Unable to deserialize StreamIdentifier from " + streamIdentifierSer); } @@ -64,6 +67,6 @@ public class StreamIdentifier { */ public static StreamIdentifier singleStreamInstance(String streamName) { Validate.notEmpty(streamName, "StreamName should not be empty"); - return new StreamIdentifier(Optional.empty(), streamName, Optional.empty()); + return new StreamIdentifier(streamName); } } diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/MultiStreamLease.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/MultiStreamLease.java index 862c203d..96818f74 100644 --- a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/MultiStreamLease.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/MultiStreamLease.java @@ -1,5 +1,6 @@ package software.amazon.kinesis.leases; +import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.NonNull; @@ -15,6 +16,7 @@ import static com.google.common.base.Verify.verifyNotNull; @NoArgsConstructor @Getter @Accessors(fluent = true) +@EqualsAndHashCode(callSuper = true) public class MultiStreamLease extends Lease { @NonNull private String streamIdentifier; @@ -40,26 +42,6 @@ public class MultiStreamLease extends Lease { return streamIdentifier + ":" + shardId; } - @Override - public int hashCode() { - return Objects.hash(super.hashCode(), streamIdentifier); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof MultiStreamLease)) { - return false; - } - MultiStreamLease other = (MultiStreamLease) obj; - return Objects.equals(streamIdentifier, other.streamIdentifier); - } - /** * Returns a deep copy of this object. Type-unsafe - there aren't good mechanisms for copy-constructing generics. *