Skip to content

Commit 398715b

Browse files
authored
GH-10083: Add Nullability to transaction package
Related to: #10083
1 parent 1352f70 commit 398715b

File tree

4 files changed

+32
-22
lines changed

4 files changed

+32
-22
lines changed

spring-integration-core/src/main/java/org/springframework/integration/transaction/ExpressionEvaluatingTransactionSynchronizationProcessor.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,26 +53,28 @@
5353
* @author Gary Russell
5454
* @author Oleg Zhurakousky
5555
* @author Artem Bilan
56+
* @author Glenn Renfro
5657
*
5758
* @since 2.2
5859
*
5960
*/
6061
public class ExpressionEvaluatingTransactionSynchronizationProcessor extends IntegrationObjectSupport
6162
implements TransactionSynchronizationProcessor {
6263

64+
@SuppressWarnings("NullAway.Init")
6365
private volatile EvaluationContext evaluationContext;
6466

65-
private volatile Expression beforeCommitExpression;
67+
private volatile @Nullable Expression beforeCommitExpression;
6668

67-
private volatile Expression afterCommitExpression;
69+
private volatile @Nullable Expression afterCommitExpression;
6870

69-
private volatile Expression afterRollbackExpression;
71+
private volatile @Nullable Expression afterRollbackExpression;
7072

71-
private volatile MessageChannel beforeCommitChannel;
73+
private volatile @Nullable MessageChannel beforeCommitChannel;
7274

73-
private volatile MessageChannel afterCommitChannel;
75+
private volatile @Nullable MessageChannel afterCommitChannel;
7476

75-
private volatile MessageChannel afterRollbackChannel;
77+
private volatile @Nullable MessageChannel afterRollbackChannel;
7678

7779
public void setIntegrationEvaluationContext(EvaluationContext evaluationContext) {
7880
this.evaluationContext = evaluationContext;
@@ -136,7 +138,7 @@ public String getComponentType() {
136138
return "processor";
137139
}
138140

139-
private void doProcess(IntegrationResourceHolder holder, Expression expression,
141+
private void doProcess(IntegrationResourceHolder holder, @Nullable Expression expression,
140142
@Nullable MessageChannel messageChannel, String expressionType) {
141143

142144
Message<?> message = holder.getMessage();

spring-integration-core/src/main/java/org/springframework/integration/transaction/IntegrationResourceHolder.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import java.util.HashMap;
2121
import java.util.Map;
2222

23+
import org.jspecify.annotations.Nullable;
24+
2325
import org.springframework.messaging.Message;
2426
import org.springframework.transaction.support.ResourceHolder;
2527

@@ -29,6 +31,7 @@
2931
*
3032
* @author Gary Russell
3133
* @author Oleg Zhurakousky
34+
* @author Glenn Renfro
3235
*
3336
* @since 2.2
3437
*
@@ -39,15 +42,15 @@ public class IntegrationResourceHolder implements ResourceHolder {
3942

4043
public static final String INPUT_CHANNEL = "inputChannel";
4144

42-
private volatile Message<?> message;
45+
private volatile @Nullable Message<?> message;
4346

4447
private final Map<String, Object> attributes = new HashMap<>();
4548

4649
public void setMessage(Message<?> message) {
4750
this.message = message;
4851
}
4952

50-
public Message<?> getMessage() {
53+
public @Nullable Message<?> getMessage() {
5154
return this.message;
5255
}
5356

spring-integration-core/src/main/java/org/springframework/integration/transaction/TransactionSynchronizationFactoryBean.java

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
import java.util.concurrent.atomic.AtomicInteger;
2020

21+
import org.jspecify.annotations.Nullable;
22+
2123
import org.springframework.beans.BeansException;
2224
import org.springframework.beans.factory.BeanFactory;
2325
import org.springframework.beans.factory.BeanFactoryAware;
@@ -38,6 +40,7 @@
3840
* @author Artem Bilan
3941
* @author Gary Russell
4042
* @author Ngoc Nhan
43+
* @author Glenn Renfro
4144
*
4245
* @since 4.0
4346
*/
@@ -51,27 +54,28 @@ public class TransactionSynchronizationFactoryBean implements FactoryBean<Defaul
5154

5255
private final AtomicInteger counter = new AtomicInteger();
5356

57+
@SuppressWarnings("NullAway.Init")
5458
private BeanFactory beanFactory;
5559

56-
private volatile String beforeCommitExpression;
60+
private volatile @Nullable String beforeCommitExpression;
5761

58-
private volatile String afterCommitExpression;
62+
private volatile @Nullable String afterCommitExpression;
5963

60-
private volatile String afterRollbackExpression;
64+
private volatile @Nullable String afterRollbackExpression;
6165

62-
private volatile MessageChannel beforeCommitChannel;
66+
private volatile @Nullable MessageChannel beforeCommitChannel;
6367

64-
private volatile String beforeCommitChannelName;
68+
private volatile @Nullable String beforeCommitChannelName;
6569

66-
private volatile MessageChannel afterCommitChannel;
70+
private volatile @Nullable MessageChannel afterCommitChannel;
6771

68-
private volatile String afterCommitChannelName;
72+
private volatile @Nullable String afterCommitChannelName;
6973

70-
private volatile MessageChannel afterRollbackChannel;
74+
private volatile @Nullable MessageChannel afterRollbackChannel;
7175

72-
private volatile String afterRollbackChannelName;
76+
private volatile @Nullable String afterRollbackChannelName;
7377

74-
private volatile DestinationResolver<MessageChannel> channelResolver;
78+
private volatile @Nullable DestinationResolver<MessageChannel> channelResolver;
7579

7680
@Override
7781
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
@@ -108,7 +112,7 @@ public TransactionSynchronizationFactoryBean beforeCommit(MessageChannel message
108112
return beforeCommit(this.beforeCommitExpression, messageChannel);
109113
}
110114

111-
public TransactionSynchronizationFactoryBean beforeCommit(String expression, MessageChannel messageChannel) {
115+
public TransactionSynchronizationFactoryBean beforeCommit(@Nullable String expression, @Nullable MessageChannel messageChannel) {
112116
Assert.state(StringUtils.hasText(expression) || messageChannel != null,
113117
EXPRESSION_OR_CHANNEL_NEEDED);
114118
this.beforeCommitExpression = expression;
@@ -134,7 +138,7 @@ public TransactionSynchronizationFactoryBean afterCommit(MessageChannel messageC
134138
return afterCommit(this.afterCommitExpression, messageChannel);
135139
}
136140

137-
public TransactionSynchronizationFactoryBean afterCommit(String expression, MessageChannel messageChannel) {
141+
public TransactionSynchronizationFactoryBean afterCommit(@Nullable String expression, @Nullable MessageChannel messageChannel) {
138142
Assert.state(StringUtils.hasText(expression) || messageChannel != null,
139143
EXPRESSION_OR_CHANNEL_NEEDED);
140144
this.afterCommitExpression = expression;
@@ -160,7 +164,7 @@ public TransactionSynchronizationFactoryBean afterRollback(MessageChannel messag
160164
return afterRollback(this.afterRollbackExpression, messageChannel);
161165
}
162166

163-
public TransactionSynchronizationFactoryBean afterRollback(String expression, MessageChannel messageChannel) {
167+
public TransactionSynchronizationFactoryBean afterRollback(@Nullable String expression, @Nullable MessageChannel messageChannel) {
164168
Assert.state(StringUtils.hasText(expression) || messageChannel != null,
165169
EXPRESSION_OR_CHANNEL_NEEDED);
166170
this.afterRollbackExpression = expression;

spring-integration-core/src/main/java/org/springframework/integration/transaction/package-info.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
* Provides classes supporting the use of transactions and
33
* pseudo transactions in Spring Integration applications.
44
*/
5+
@org.jspecify.annotations.NullMarked
56
package org.springframework.integration.transaction;

0 commit comments

Comments
 (0)