Skip to content

Commit de23781

Browse files
committed
Migrate to JSpecify for nullability constraints (take 5)
Resolves #1150 Signed-off-by: Chris Bono <[email protected]>
1 parent 8ab51d7 commit de23781

File tree

4 files changed

+34
-30
lines changed

4 files changed

+34
-30
lines changed

spring-pulsar-reactive/src/main/java/org/springframework/pulsar/reactive/config/MethodReactivePulsarListenerEndpoint.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -130,14 +130,17 @@ protected AbstractPulsarMessageToSpringMessageAdapter<V> createMessageHandler(
130130
HandlerAdapter handlerMethod = configureListenerAdapter(messageListener, messageHandlerMethodFactory);
131131
messageListener.setHandlerMethod(handlerMethod);
132132

133-
var payloadTypeParams = Arrays.stream(handlerMethod.requireNonNullInvokerHandlerMethod().getMethodParameters())
134-
.filter(methodParameter1 -> !methodParameter1.getParameterType().equals(Consumer.class)
135-
|| !methodParameter1.getParameterType().equals(Acknowledgement.class)
136-
|| !methodParameter1.hasParameterAnnotation(Header.class))
133+
// Determine the single payload param to use
134+
var methodParameters = handlerMethod.requireNonNullInvokerHandlerMethod().getMethodParameters();
135+
var allPayloadParams = Arrays.stream(methodParameters)
136+
.filter(param -> !param.getParameterType().equals(Consumer.class)
137+
&& !param.getParameterType().equals(Acknowledgement.class)
138+
&& !param.hasParameterAnnotation(Header.class))
137139
.toList();
138-
Assert.isTrue(payloadTypeParams.size() == 1,
139-
() -> "Expected exactly 1 payload type param but found " + payloadTypeParams.size());
140-
MethodParameter messageParameter = payloadTypeParams.get(0);
140+
Assert.isTrue(allPayloadParams.size() == 1, "Expected 1 payload types but found " + allPayloadParams);
141+
var messageParameter = allPayloadParams.stream()
142+
.findFirst()
143+
.orElseThrow(() -> new IllegalArgumentException("Unable to determine message parameter"));
141144

142145
DefaultReactivePulsarMessageListenerContainer<Object> containerInstance = (DefaultReactivePulsarMessageListenerContainer<Object>) container;
143146
ReactivePulsarContainerProperties<Object> pulsarContainerProperties = containerInstance

spring-pulsar/src/main/java/org/springframework/pulsar/config/MethodPulsarListenerEndpoint.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -145,17 +145,17 @@ protected AbstractPulsarMessageToSpringMessageAdapter<V> createMessageListener(
145145
messageConverter);
146146
HandlerAdapter handlerMethod = configureListenerAdapter(messageListener, messageHandlerMethodFactory);
147147
messageListener.setHandlerMethod(handlerMethod);
148-
149-
// TODO: filter out the payload type by excluding Consumer, Message, Messages etc.
150-
151-
var payloadTypeParams = Arrays.stream(handlerMethod.requireNonNullInvokerHandlerMethod().getMethodParameters())
152-
.filter(methodParameter1 -> !methodParameter1.getParameterType().equals(Consumer.class)
153-
|| !methodParameter1.getParameterType().equals(Acknowledgement.class)
154-
|| !methodParameter1.hasParameterAnnotation(Header.class))
148+
// Determine the single payload param to use
149+
var methodParameters = handlerMethod.requireNonNullInvokerHandlerMethod().getMethodParameters();
150+
var allPayloadParams = Arrays.stream(methodParameters)
151+
.filter(param -> !param.getParameterType().equals(Consumer.class)
152+
&& !param.getParameterType().equals(Acknowledgement.class)
153+
&& !param.hasParameterAnnotation(Header.class))
155154
.toList();
156-
Assert.isTrue(payloadTypeParams.size() == 1,
157-
() -> "Expected exactly 1 payload type param but found " + payloadTypeParams.size());
158-
MethodParameter messageParameter = payloadTypeParams.get(0);
155+
Assert.isTrue(allPayloadParams.size() == 1, "Expected 1 payload types but found " + allPayloadParams);
156+
var messageParameter = allPayloadParams.stream()
157+
.findFirst()
158+
.orElseThrow(() -> new IllegalArgumentException("Unable to determine message parameter"));
159159

160160
ConcurrentPulsarMessageListenerContainer<?> containerInstance = (ConcurrentPulsarMessageListenerContainer<?>) container;
161161
PulsarContainerProperties pulsarContainerProperties = containerInstance.getContainerProperties();

spring-pulsar/src/main/java/org/springframework/pulsar/config/MethodPulsarReaderEndpoint.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -115,16 +115,17 @@ protected AbstractPulsarMessageToSpringMessageAdapter<V> createReaderListener(
115115
HandlerAdapter handlerMethod = configureListenerAdapter(readerListener, messageHandlerMethodFactory);
116116
readerListener.setHandlerMethod(handlerMethod);
117117

118-
// TODO: filter out the payload type by excluding Consumer, Message, Messages etc.
119-
120-
var payloadTypeParams = Arrays.stream(handlerMethod.requireNonNullInvokerHandlerMethod().getMethodParameters())
121-
.filter(methodParameter1 -> !methodParameter1.getParameterType().equals(Consumer.class)
122-
|| !methodParameter1.getParameterType().equals(Acknowledgement.class)
123-
|| !methodParameter1.hasParameterAnnotation(Header.class))
118+
// Determine the single payload param to use
119+
var methodParameters = handlerMethod.requireNonNullInvokerHandlerMethod().getMethodParameters();
120+
var allPayloadParams = Arrays.stream(methodParameters)
121+
.filter(param -> !param.getParameterType().equals(Consumer.class)
122+
&& !param.getParameterType().equals(Acknowledgement.class)
123+
&& !param.hasParameterAnnotation(Header.class))
124124
.toList();
125-
Assert.isTrue(payloadTypeParams.size() == 1,
126-
() -> "Expected exactly 1 payload type param but found " + payloadTypeParams.size());
127-
MethodParameter messageParameter = payloadTypeParams.get(0);
125+
Assert.isTrue(allPayloadParams.size() == 1, "Expected 1 payload types but found " + allPayloadParams);
126+
var messageParameter = allPayloadParams.stream()
127+
.findFirst()
128+
.orElseThrow(() -> new IllegalArgumentException("Unable to determine message parameter"));
128129

129130
DefaultPulsarMessageReaderContainer<?> containerInstance = (DefaultPulsarMessageReaderContainer<?>) container;
130131
PulsarReaderContainerProperties pulsarContainerProperties = containerInstance.getContainerProperties();

spring-pulsar/src/main/java/org/springframework/pulsar/listener/DefaultPulsarMessageListenerContainer.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -617,13 +617,13 @@ protected void doInTransactionWithoutResult(TransactionStatus status) {
617617
return resourceHolder != null ? resourceHolder.getTransaction() : null;
618618
}
619619

620+
@SuppressWarnings("NullAway")
620621
private @Nullable RuntimeException dispatchMessageToListener(Message<T> message, AtomicBoolean inRetryMode,
621622
@Nullable Transaction txn) {
622623
try {
623-
if (this.listener instanceof PulsarAcknowledgingMessageListener
624-
&& this.ackMode.equals(AckMode.MANUAL)) {
625-
this.listener.received(this.consumer, message,
626-
new ConsumerAcknowledgment(this.consumer, message, txn));
624+
if (this.listener instanceof PulsarAcknowledgingMessageListener) {
625+
this.listener.received(this.consumer, message, this.ackMode.equals(AckMode.MANUAL)
626+
? new ConsumerAcknowledgment(this.consumer, message, txn) : null);
627627
}
628628
else if (this.listener != null) {
629629
this.listener.received(this.consumer, message);

0 commit comments

Comments
 (0)