Skip to content

Commit 03309ea

Browse files
authored
GH-10083: Add nullability to Core splitter package
Related to: #10083
1 parent ea7477f commit 03309ea

File tree

4 files changed

+20
-12
lines changed

4 files changed

+20
-12
lines changed

spring-integration-core/src/main/java/org/springframework/integration/splitter/AbstractMessageProcessingSplitter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
import java.util.Collection;
2020

21+
import org.jspecify.annotations.Nullable;
22+
2123
import org.springframework.context.Lifecycle;
2224
import org.springframework.integration.handler.MessageProcessor;
2325
import org.springframework.integration.support.management.ManageableLifecycle;
@@ -48,7 +50,7 @@ protected void doInit() {
4850
}
4951

5052
@Override
51-
protected final Object splitMessage(Message<?> message) {
53+
protected final @Nullable Object splitMessage(Message<?> message) {
5254
return this.processor.processMessage(message);
5355
}
5456

spring-integration-core/src/main/java/org/springframework/integration/splitter/AbstractMessageSplitter.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import java.util.stream.Stream;
2828

2929
import com.fasterxml.jackson.core.TreeNode;
30+
import org.jspecify.annotations.Nullable;
3031
import org.reactivestreams.Publisher;
3132
import reactor.core.publisher.Flux;
3233
import reactor.core.publisher.Mono;
@@ -54,15 +55,16 @@
5455
* @author Gary Russell
5556
* @author Ngoc Nhan
5657
* @author Jooyoung Pyoung
58+
* @author Glenn Renfro
5759
*/
5860
public abstract class AbstractMessageSplitter extends AbstractReplyProducingMessageHandler
5961
implements DiscardingMessageHandler {
6062

6163
private boolean applySequence = true;
6264

63-
private MessageChannel discardChannel;
65+
private @Nullable MessageChannel discardChannel;
6466

65-
private String discardChannelName;
67+
private @Nullable String discardChannelName;
6668

6769
/**
6870
* Set the applySequence flag to the specified value. Defaults to true.
@@ -99,7 +101,7 @@ public void setDiscardChannelName(String discardChannelName) {
99101
}
100102

101103
@Override
102-
public MessageChannel getDiscardChannel() {
104+
public @Nullable MessageChannel getDiscardChannel() {
103105
if (this.discardChannel == null) {
104106
String channelName = this.discardChannelName;
105107
if (channelName != null) {
@@ -122,7 +124,7 @@ protected void doInit() {
122124
}
123125

124126
@Override
125-
protected final Object handleRequestMessage(Message<?> message) {
127+
protected final @Nullable Object handleRequestMessage(Message<?> message) {
126128
Object result = splitMessage(message);
127129
// return null if 'null'
128130
if (result == null) {
@@ -181,7 +183,7 @@ else if (result instanceof Publisher<?> publisher) {
181183
}
182184

183185
@SuppressWarnings("unchecked")
184-
private Iterator<?> prepareIteratorResult(Message<?> message, Object result) {
186+
private @Nullable Iterator<?> prepareIteratorResult(Message<?> message, Object result) {
185187
int sequenceSize = 1;
186188
Iterator<?> iterator = Collections.singleton(result).iterator();
187189

@@ -272,7 +274,7 @@ protected int obtainSizeIfPossible(Iterator<?> iterator) {
272274
}
273275

274276
private AbstractIntegrationMessageBuilder<?> createBuilder(Object item, Map<String, Object> headers,
275-
Object correlationId, int sequenceNumber, int sequenceSize) {
277+
@Nullable Object correlationId, int sequenceNumber, int sequenceSize) {
276278

277279
AbstractIntegrationMessageBuilder<?> builder = messageBuilderForReply(item);
278280
builder.setHeader(MessageHistory.HEADER_NAME, headers.get(MessageHistory.HEADER_NAME))
@@ -348,7 +350,7 @@ public String getComponentType() {
348350
* @param message The message.
349351
* @return The result of splitting the message.
350352
*/
351-
protected abstract Object splitMessage(Message<?> message);
353+
protected abstract @Nullable Object splitMessage(Message<?> message);
352354

353355
@Deprecated(since = "7.0", forRemoval = true)
354356
private static final class JacksonNodeHelper {

spring-integration-core/src/main/java/org/springframework/integration/splitter/DefaultMessageSplitter.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import java.util.List;
2121
import java.util.StringTokenizer;
2222

23+
import org.jspecify.annotations.Nullable;
24+
2325
import org.springframework.messaging.Message;
2426

2527
/**
@@ -29,10 +31,11 @@
2931
* those delimiters.
3032
*
3133
* @author Mark Fisher
34+
* @author Glenn Renfro
3235
*/
3336
public class DefaultMessageSplitter extends AbstractMessageSplitter {
3437

35-
private volatile String delimiters;
38+
private volatile @Nullable String delimiters;
3639

3740
/**
3841
* Set delimiters to use for tokenizing String values. The default is
@@ -41,16 +44,16 @@ public class DefaultMessageSplitter extends AbstractMessageSplitter {
4144
*
4245
* @param delimiters The delimiters.
4346
*/
44-
public void setDelimiters(String delimiters) {
47+
public void setDelimiters(@Nullable String delimiters) {
4548
this.delimiters = delimiters;
4649
}
4750

4851
@Override
4952
protected final Object splitMessage(Message<?> message) {
5053
Object payload = message.getPayload();
51-
if (payload instanceof String && this.delimiters != null) {
54+
if (payload instanceof String payloadVal && this.delimiters != null) {
5255
List<String> tokens = new ArrayList<String>();
53-
StringTokenizer tokenizer = new StringTokenizer((String) payload, this.delimiters);
56+
StringTokenizer tokenizer = new StringTokenizer(payloadVal, this.delimiters);
5457
while (tokenizer.hasMoreElements()) {
5558
tokens.add(tokenizer.nextToken());
5659
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/**
22
* Provides classes supporting the splitter pattern.
33
*/
4+
@org.jspecify.annotations.NullMarked
45
package org.springframework.integration.splitter;

0 commit comments

Comments
 (0)