Skip to content

Commit b9e5c5f

Browse files
committed
Update based on code review
1 parent a37958f commit b9e5c5f

9 files changed

+23
-31
lines changed

spring-integration-core/src/main/java/org/springframework/integration/config/xml/AbstractConsumerEndpointParser.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ protected String resolveId(Element element, AbstractBeanDefinition definition, P
8080
* @param parserContext The parser context.
8181
* @return The bean definition builder.
8282
*/
83-
protected abstract @Nullable BeanDefinitionBuilder parseHandler(Element element, ParserContext parserContext);
83+
protected abstract BeanDefinitionBuilder parseHandler(Element element, ParserContext parserContext);
8484

8585
protected String getInputChannelAttributeName() {
8686
return "input-channel";
@@ -180,6 +180,7 @@ private void poller(Element element, ParserContext parserContext, BeanDefinition
180180
}
181181
}
182182

183+
@SuppressWarnings("NullAway") // Dataflow analysis limitation
183184
private void registerChannelForCreation(ParserContext parserContext, String inputChannelName,
184185
BeanDefinitionBuilder consumerEndpointBuilder) {
185186

@@ -198,9 +199,9 @@ private void registerChannelForCreation(ParserContext parserContext, String inpu
198199
}
199200
@SuppressWarnings("unchecked")
200201
Collection<String> channelCandidateNames =
201-
(Collection<String>) Objects.requireNonNull(caValues.getArgumentValue(0, Collection.class))
202-
.getValue(); // NOSONAR see comment above
203-
Objects.requireNonNull(channelCandidateNames).add(inputChannelName); // NOSONAR
202+
(Collection<String>) caValues.getArgumentValue(0, Collection.class)
203+
.getValue();
204+
channelCandidateNames.add(inputChannelName);
204205
consumerEndpointBuilder.addDependsOn(IntegrationContextUtils.AUTO_CREATE_CHANNEL_CANDIDATES_BEAN_NAME);
205206
}
206207
else {

spring-integration-core/src/main/java/org/springframework/integration/config/xml/AbstractDelegatingConsumerEndpointParser.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
abstract class AbstractDelegatingConsumerEndpointParser extends AbstractConsumerEndpointParser {
4141

4242
@Override
43-
protected final @Nullable BeanDefinitionBuilder parseHandler(Element element, ParserContext parserContext) {
43+
protected final BeanDefinitionBuilder parseHandler(Element element, ParserContext parserContext) {
4444
Object source = parserContext.extractSource(element);
4545
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(this.getFactoryBeanClassName());
4646
BeanComponentDefinition innerDefinition = IntegrationNamespaceUtils.parseInnerHandlerDefinition(element,
@@ -66,7 +66,6 @@ else if (hasRef && hasExpression) {
6666
parserContext.getReaderContext().error(
6767
"Only one of 'ref' or 'expression' is permitted, not both, on element " +
6868
IntegrationNamespaceUtils.createElementDescription(element) + ".", source);
69-
return null;
7069
}
7170
else if (hasRef) {
7271
builder.addPropertyReference("targetObject", ref);
@@ -78,7 +77,6 @@ else if (!this.hasDefaultOption()) {
7877
parserContext.getReaderContext().error("Exactly one of the 'ref' attribute, 'expression' attribute, " +
7978
"or inner bean (<bean/>) definition is required for element " +
8079
IntegrationNamespaceUtils.createElementDescription(element) + ".", source);
81-
return null;
8280
}
8381
methodAttribute(element, parserContext, source, builder, innerDefinition, hasRef, hasExpression,
8482
expressionElement);

spring-integration-core/src/main/java/org/springframework/integration/config/xml/AbstractPollingInboundChannelAdapterParser.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
2727
import org.springframework.beans.factory.xml.ParserContext;
2828
import org.springframework.integration.config.SourcePollingChannelAdapterFactoryBean;
29+
import org.springframework.util.Assert;
2930
import org.springframework.util.xml.DomUtils;
3031

3132
/**
@@ -60,9 +61,8 @@ else if (source instanceof RuntimeBeanReference runtimeBeanReference) {
6061
}
6162
else {
6263
parserContext.getReaderContext().error("Wrong 'source' type: must be 'BeanDefinition' or 'RuntimeBeanReference'", source);
63-
throw new IllegalStateException("sourceBeanName must not be null");
6464
}
65-
65+
Assert.state(sourceBeanName != null, "'sourceBeanName' must not be null");
6666
adapterBuilder.addPropertyReference("source", sourceBeanName);
6767
adapterBuilder.addPropertyReference("outputChannel", channelName);
6868
IntegrationNamespaceUtils.setValueIfAttributeDefined(adapterBuilder, element, "send-timeout");

spring-integration-core/src/main/java/org/springframework/integration/config/xml/ChainParser.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323

2424
import org.apache.commons.logging.Log;
2525
import org.apache.commons.logging.LogFactory;
26-
import org.jspecify.annotations.Nullable;
2726
import org.w3c.dom.Element;
2827
import org.w3c.dom.Node;
2928
import org.w3c.dom.NodeList;
@@ -67,7 +66,7 @@ public class ChainParser extends AbstractConsumerEndpointParser {
6766
private final Log logger = LogFactory.getLog(this.getClass());
6867

6968
@Override
70-
protected @Nullable BeanDefinitionBuilder parseHandler(Element element, ParserContext parserContext) {
69+
protected BeanDefinitionBuilder parseHandler(Element element, ParserContext parserContext) {
7170
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(MessageHandlerChain.class);
7271

7372
if (!StringUtils.hasText(element.getAttribute(ID_ATTRIBUTE))) {
@@ -92,7 +91,6 @@ public class ChainParser extends AbstractConsumerEndpointParser {
9291
parserContext.getReaderContext().error("A bean definition is already registered for " +
9392
"beanName: '" + handlerBeanName + "' within the current <chain>.",
9493
element);
95-
return null;
9694
}
9795
}
9896
if ("gateway".equals(child.getLocalName())) {
@@ -125,7 +123,7 @@ protected String resolveId(Element element, AbstractBeanDefinition definition, P
125123
return id;
126124
}
127125

128-
private @Nullable BeanMetadataElement parseChild(String chainHandlerId, Element element, int order, ParserContext parserContext,
126+
private BeanMetadataElement parseChild(String chainHandlerId, Element element, int order, ParserContext parserContext,
129127
BeanDefinition parentDefinition) {
130128

131129
BeanDefinitionHolder holder = null;
@@ -144,7 +142,6 @@ protected String resolveId(Element element, AbstractBeanDefinition definition, P
144142
BeanDefinition beanDefinition = parserContext.getDelegate().parseCustomElement(element, parentDefinition);
145143
if (beanDefinition == null) {
146144
parserContext.getReaderContext().error("child BeanDefinition must not be null", element);
147-
return null;
148145
}
149146
else {
150147
holder = new BeanDefinitionHolder(beanDefinition, handlerComponentName + IntegrationConfigUtils.HANDLER_ALIAS_SUFFIX);

spring-integration-core/src/main/java/org/springframework/integration/config/xml/ChannelInterceptorParser.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import org.springframework.beans.factory.support.ManagedList;
3131
import org.springframework.beans.factory.xml.BeanDefinitionParserDelegate;
3232
import org.springframework.beans.factory.xml.ParserContext;
33-
import org.springframework.util.Assert;
3433

3534
/**
3635
* A helper class for parsing the sub-elements of a channel's
@@ -75,8 +74,9 @@ else if ("ref".equals(localName)) {
7574
if (parser == null) {
7675
parserContext.getReaderContext().error(
7776
"unsupported interceptor element '" + localName + "'", childElement);
77+
// Redundant Exception is here to satisfy NullAway warning parser.parse statement below.
78+
throw new IllegalStateException("unsupported interceptor element '" + localName + "'");
7879
}
79-
Assert.state(parser != null, "no parser registered for '" + localName + "'");
8080
String interceptorBeanName = parser.parse(childElement, parserContext);
8181
interceptors.add(new RuntimeBeanReference(interceptorBeanName));
8282
}

spring-integration-core/src/main/java/org/springframework/integration/config/xml/DefaultInboundChannelAdapterParser.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import org.springframework.integration.endpoint.ExpressionEvaluatingMessageSource;
3636
import org.springframework.integration.endpoint.MethodInvokingMessageSource;
3737
import org.springframework.integration.expression.DynamicExpression;
38-
import org.springframework.util.Assert;
3938
import org.springframework.util.CollectionUtils;
4039
import org.springframework.util.StringUtils;
4140
import org.springframework.util.xml.DomUtils;
@@ -77,14 +76,12 @@ public class DefaultInboundChannelAdapterParser extends AbstractPollingInboundCh
7776
parserContext.getReaderContext().error(
7877
"Neither 'ref' nor 'expression' are permitted when an inner bean (<bean/>) is configured on "
7978
+ "element " + IntegrationNamespaceUtils.createElementDescription(element) + ".", source);
80-
return null;
8179
}
82-
Assert.state(innerBeanDef != null, "No inner bean definition found"); //Required because JSpecify does not know how to use handle a preparsed boolean
8380
if (hasMethod) {
84-
result = parseMethodInvokingSource(innerBeanDef, methodName, element, parserContext);
81+
result = parseMethodInvokingSource(Objects.requireNonNull(innerBeanDef), methodName, element, parserContext);
8582
}
8683
else {
87-
result = innerBeanDef.getBeanDefinition();
84+
result = Objects.requireNonNull(innerBeanDef).getBeanDefinition();
8885
}
8986
}
9087
else if (hasScriptElement) {
@@ -95,8 +92,7 @@ else if (hasScriptElement) {
9592
+ IntegrationNamespaceUtils.createElementDescription(element) + ".", source);
9693
return null;
9794
}
98-
Assert.state(scriptElement != null, "No script element found");
99-
BeanDefinition scriptBeanDefinition = parserContext.getDelegate().parseCustomElement(scriptElement);
95+
BeanDefinition scriptBeanDefinition = parserContext.getDelegate().parseCustomElement(Objects.requireNonNull(scriptElement));
10096
BeanDefinitionBuilder sourceBuilder = BeanDefinitionBuilder.genericBeanDefinition(
10197
IntegrationContextUtils.BASE_PACKAGE + ".scripting.ScriptExecutingMessageSource");
10298
sourceBuilder.addConstructorArgValue(scriptBeanDefinition);

spring-integration-core/src/main/java/org/springframework/integration/config/xml/GatewayParser.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,12 @@ public class GatewayParser implements BeanDefinitionParser {
7171

7272
private static final String MAPPER_ATTR = "mapper";
7373

74+
@SuppressWarnings("NullAway")
7475
@Override
75-
public @Nullable BeanDefinition parse(final Element element, ParserContext parserContext) {
76+
public BeanDefinition parse(final Element element, ParserContext parserContext) {
7677
boolean isNested = parserContext.isNested();
7778

78-
final Map<String, @Nullable Object> gatewayAttributes = new HashMap<>();
79+
final Map<String, Object> gatewayAttributes = new HashMap<>();
7980
gatewayAttributes.put(AbstractBeanDefinitionParser.NAME_ATTRIBUTE,
8081
element.getAttribute(AbstractBeanDefinitionParser.ID_ATTRIBUTE));
8182
gatewayAttributes.put("defaultPayloadExpression", element.getAttribute("default-payload-expression"));

spring-integration-core/src/main/java/org/springframework/integration/config/xml/IntegrationNamespaceUtils.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -298,8 +298,7 @@ public static void configurePollerMetadata(Element pollerElement, BeanDefinition
298298
Element beanElement = childElements.get(0);
299299
BeanDefinitionParserDelegate delegate = parserContext.getDelegate();
300300
BeanDefinitionHolder bdHolder = delegate.parseBeanDefinitionElement(beanElement);
301-
Assert.state(bdHolder != null, "bdHolder must not be null");
302-
bdHolder = delegate.decorateBeanDefinitionIfRequired(beanElement, bdHolder);
301+
bdHolder = delegate.decorateBeanDefinitionIfRequired(beanElement, Objects.requireNonNull(bdHolder));
303302
BeanDefinition inDef = bdHolder.getBeanDefinition();
304303
innerComponentDefinition = new BeanComponentDefinition(inDef, bdHolder.getBeanName());
305304
}

spring-integration-core/src/main/java/org/springframework/integration/config/xml/PointToPointChannelParser.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616

1717
package org.springframework.integration.config.xml;
1818

19-
import org.jspecify.annotations.Nullable;
19+
import java.util.Objects;
20+
2021
import org.w3c.dom.Element;
2122

2223
import org.springframework.beans.factory.config.TypedStringValue;
@@ -45,7 +46,7 @@
4546
public class PointToPointChannelParser extends AbstractChannelParser {
4647

4748
@Override
48-
protected @Nullable BeanDefinitionBuilder buildBeanDefinition(Element element, ParserContext parserContext) {
49+
protected BeanDefinitionBuilder buildBeanDefinition(Element element, ParserContext parserContext) {
4950
BeanDefinitionBuilder builder = null;
5051
Element queueElement;
5152
String fixedSubscriberChannel = element.getAttribute("fixed-subscriber");
@@ -70,7 +71,6 @@ else if ((queueElement = DomUtils.getChildElementByTagName(element, "rendezvous-
7071
if (queueElement != null && dispatcherElement != null) {
7172
parserContext.getReaderContext().error(
7273
"The 'dispatcher' sub-element and any queue sub-element are mutually exclusive.", element);
73-
return null;
7474
}
7575

7676
if (queueElement != null) {
@@ -79,7 +79,7 @@ else if ((queueElement = DomUtils.getChildElementByTagName(element, "rendezvous-
7979
"The 'fixed-subscriber' attribute is not allowed when a <queue/> child element is present.",
8080
element);
8181
}
82-
return builder;
82+
return Objects.requireNonNull(builder);
8383
}
8484

8585
if (dispatcherElement == null) {

0 commit comments

Comments
 (0)