Skip to content

Commit 7f9de71

Browse files
committed
DATAREDIS-1212 - Polishing.
Remove overly pessimistic null checks. Use constant when channel/body are empty to avoid allocations. Remove superfluous final keywords. Original pull request: #559.
1 parent 588bf0a commit 7f9de71

File tree

7 files changed

+15
-26
lines changed

7 files changed

+15
-26
lines changed

src/main/java/org/springframework/data/redis/connection/DefaultMessage.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@
2323
*
2424
* @author Costin Leau
2525
* @author Christoph Strobl
26+
* @author Mark Paluch
2627
*/
2728
public class DefaultMessage implements Message {
2829

30+
private static final byte[] EMPTY = new byte[0];
2931
private final byte[] channel;
3032
private final byte[] body;
3133
private @Nullable String toString;
@@ -39,15 +41,14 @@ public DefaultMessage(byte[] channel, byte[] body) {
3941
this.channel = channel;
4042
}
4143

42-
/**
43-
* @return
44-
*/
44+
@Override
4545
public byte[] getChannel() {
46-
return channel.clone();
46+
return channel.length == 0 ? EMPTY : channel.clone();
4747
}
4848

49+
@Override
4950
public byte[] getBody() {
50-
return body.clone();
51+
return body.length == 0 ? EMPTY : body.clone();
5152
}
5253

5354
@Override

src/main/java/org/springframework/data/redis/core/RedisKeyValueAdapter.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -808,8 +808,9 @@ public void onMessage(Message message, @Nullable byte[] pattern) {
808808

809809
Object value = CollectionUtils.isEmpty(hash) ? null : converter.read(Object.class, new RedisData(hash));
810810

811-
String channel = !ObjectUtils.isEmpty(message.getChannel())
812-
? converter.getConversionService().convert(message.getChannel(), String.class)
811+
byte[] channelAsBytes = message.getChannel();
812+
String channel = !ObjectUtils.isEmpty(channelAsBytes)
813+
? converter.getConversionService().convert(channelAsBytes, String.class)
813814
: null;
814815

815816
RedisKeyExpiredEvent event = new RedisKeyExpiredEvent(channel, key, value);
@@ -825,11 +826,6 @@ public void onMessage(Message message, @Nullable byte[] pattern) {
825826
}
826827

827828
private boolean isKeyExpirationMessage(Message message) {
828-
829-
if (message == null) {
830-
return false;
831-
}
832-
833829
return BinaryKeyspaceIdentifier.isValid(message.getBody());
834830
}
835831
}

src/main/java/org/springframework/data/redis/core/convert/MappingRedisConverter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1303,7 +1303,7 @@ public static BinaryKeyspaceIdentifier of(byte[] key) {
13031303
*/
13041304
public static boolean isValid(byte[] key) {
13051305

1306-
if (key == null) {
1306+
if (key.length == 0) {
13071307
return false;
13081308
}
13091309

src/main/java/org/springframework/data/redis/listener/KeyspaceEventMessageListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public KeyspaceEventMessageListener(RedisMessageListenerContainer listenerContai
6060
@Override
6161
public void onMessage(Message message, @Nullable byte[] pattern) {
6262

63-
if (message == null || ObjectUtils.isEmpty(message.getChannel()) || ObjectUtils.isEmpty(message.getBody())) {
63+
if (ObjectUtils.isEmpty(message.getChannel()) || ObjectUtils.isEmpty(message.getBody())) {
6464
return;
6565
}
6666

src/main/java/org/springframework/data/redis/listener/RedisMessageListenerContainer.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -979,10 +979,11 @@ public void onMessage(Message message, @Nullable byte[] pattern) {
979979
}
980980
}
981981

982-
private void dispatchMessage(Collection<MessageListener> listeners, final Message message, final byte[] pattern) {
983-
final byte[] source = (pattern != null ? pattern.clone() : message.getChannel());
982+
private void dispatchMessage(Collection<MessageListener> listeners, Message message, @Nullable byte[] pattern) {
984983

985-
for (final MessageListener messageListener : listeners) {
984+
byte[] source = (pattern != null ? pattern.clone() : message.getChannel());
985+
986+
for (MessageListener messageListener : listeners) {
986987
taskExecutor.execute(() -> processMessage(messageListener, message, source));
987988
}
988989
}

src/test/java/org/springframework/data/redis/core/convert/BinaryKeyspaceIdentifierUnitTests.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ public class BinaryKeyspaceIdentifierUnitTests {
3131
@Test // DATAREDIS-744
3232
public void shouldReturnIfKeyIsValid() {
3333

34-
assertThat(BinaryKeyspaceIdentifier.isValid(null)).isFalse();
3534
assertThat(BinaryKeyspaceIdentifier.isValid("foo".getBytes())).isFalse();
3635
assertThat(BinaryKeyspaceIdentifier.isValid("".getBytes())).isFalse();
3736
assertThat(BinaryKeyspaceIdentifier.isValid("foo:bar".getBytes())).isTrue();

src/test/java/org/springframework/data/redis/listener/KeyExpirationEventMessageListenerUnitTests.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,6 @@ public void handleMessageShouldPublishKeyExpiredEvent() {
6464
assertThat((byte[]) captor.getValue().getSource()).isEqualTo(MESSAGE_BODY.getBytes());
6565
}
6666

67-
@Test // DATAREDIS-425
68-
public void handleMessageShouldNotRespondToNullMessage() {
69-
70-
listener.onMessage(null, "*".getBytes());
71-
72-
verifyZeroInteractions(publisherMock);
73-
}
74-
7567
@Test // DATAREDIS-425, DATAREDIS-692
7668
public void handleMessageShouldNotRespondToEmptyMessage() {
7769

0 commit comments

Comments
 (0)