diff --git a/spring-integration-core/src/main/java/org/springframework/integration/gateway/MessagingGatewaySupport.java b/spring-integration-core/src/main/java/org/springframework/integration/gateway/MessagingGatewaySupport.java
index f53e2eb24b..bc225cc0a6 100644
--- a/spring-integration-core/src/main/java/org/springframework/integration/gateway/MessagingGatewaySupport.java
+++ b/spring-integration-core/src/main/java/org/springframework/integration/gateway/MessagingGatewaySupport.java
@@ -702,7 +702,7 @@ public abstract class MessagingGatewaySupport extends AbstractEndpoint
* @return the error message.
* @since 4.3.10
*/
- protected final ErrorMessage buildErrorMessage(Message> requestMessage, Throwable throwable) {
+ protected final ErrorMessage buildErrorMessage(@Nullable Message> requestMessage, Throwable throwable) {
return this.errorMessageStrategy.buildErrorMessage(throwable, getErrorMessageAttributes(requestMessage));
}
diff --git a/spring-integration-core/src/main/java/org/springframework/integration/util/AbstractExpressionEvaluator.java b/spring-integration-core/src/main/java/org/springframework/integration/util/AbstractExpressionEvaluator.java
index 850aa75ce2..6147a244ea 100644
--- a/spring-integration-core/src/main/java/org/springframework/integration/util/AbstractExpressionEvaluator.java
+++ b/spring-integration-core/src/main/java/org/springframework/integration/util/AbstractExpressionEvaluator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2016 the original author or authors.
+ * Copyright 2002-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -33,6 +33,7 @@ import org.springframework.integration.expression.ExpressionUtils;
import org.springframework.integration.support.DefaultMessageBuilderFactory;
import org.springframework.integration.support.MessageBuilderFactory;
import org.springframework.integration.support.utils.IntegrationUtils;
+import org.springframework.lang.Nullable;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHandlingException;
@@ -63,7 +64,7 @@ public abstract class AbstractExpressionEvaluator implements BeanFactoryAware, I
* Specify a BeanFactory in order to enable resolution via @beanName in the expression.
*/
@Override
- public void setBeanFactory(final BeanFactory beanFactory) {
+ public void setBeanFactory(final @Nullable BeanFactory beanFactory) {
if (beanFactory != null) {
this.beanFactory = beanFactory;
this.typeConverter.setBeanFactory(beanFactory);
diff --git a/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/StoredProcExecutor.java b/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/StoredProcExecutor.java
index 0723c3743c..35bfc3435c 100644
--- a/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/StoredProcExecutor.java
+++ b/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/StoredProcExecutor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2016 the original author or authors.
+ * Copyright 2002-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -48,6 +48,7 @@ import org.springframework.jdbc.core.simple.SimpleJdbcCallOperations;
import org.springframework.jmx.export.annotation.ManagedAttribute;
import org.springframework.jmx.export.annotation.ManagedMetric;
import org.springframework.jmx.export.annotation.ManagedResource;
+import org.springframework.lang.Nullable;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHeaders;
import org.springframework.util.Assert;
@@ -282,7 +283,7 @@ public class StoredProcExecutor implements BeanFactoryAware, InitializingBean {
* @return Map containing the stored procedure results if any.
*/
public Map executeStoredProcedure() {
- return executeStoredProcedureInternal(new Object(), this.evaluateExpression(null));
+ return executeStoredProcedureInternal(new Object(), evaluateExpression(null));
}
/**
@@ -311,9 +312,10 @@ public class StoredProcExecutor implements BeanFactoryAware, InitializingBean {
}
- private String evaluateExpression(Message> message) {
- final String storedProcedureNameToUse = this.storedProcedureNameExpression.getValue(this.evaluationContext,
- message, String.class);
+ private String evaluateExpression(@Nullable Message> message) {
+ final String storedProcedureNameToUse = message == null
+ ? this.storedProcedureNameExpression.getValue(this.evaluationContext, String.class)
+ : this.storedProcedureNameExpression.getValue(this.evaluationContext, message, String.class);
Assert.hasText(storedProcedureNameToUse, String.format(
"Unable to resolve Stored Procedure/Function name for the provided Expression '%s'.",
diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsOutboundGateway.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsOutboundGateway.java
index 1ac2292912..ad4a3b6314 100644
--- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsOutboundGateway.java
+++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsOutboundGateway.java
@@ -1416,11 +1416,11 @@ public class JmsOutboundGateway extends AbstractReplyProducingMessageHandler imp
if (logger.isWarnEnabled()) {
logger.warn("Unexpected error obtaining destination description: " + e.getMessage());
}
- return null;
+ return "";
}
}
else {
- return null;
+ return "";
}
}
diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/dsl/Jms.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/dsl/Jms.java
index a1b6d56d39..09039bc136 100644
--- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/dsl/Jms.java
+++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/dsl/Jms.java
@@ -22,6 +22,7 @@ import javax.jms.Destination;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.listener.AbstractMessageListenerContainer;
import org.springframework.jms.listener.DefaultMessageListenerContainer;
+import org.springframework.lang.Nullable;
/**
* Factory class for JMS components.
@@ -48,7 +49,9 @@ public final class Jms {
* @param connectionFactory the JMS ConnectionFactory to build on
* @return the {@link JmsPollableMessageChannelSpec} instance
*/
- public static JmsPollableMessageChannelSpec> pollableChannel(String id, ConnectionFactory connectionFactory) {
+ public static JmsPollableMessageChannelSpec> pollableChannel(@Nullable String id,
+ ConnectionFactory connectionFactory) {
+
return new JmsPollableMessageChannelSpec<>(connectionFactory).id(id);
}
@@ -67,7 +70,7 @@ public final class Jms {
* @param connectionFactory the JMS ConnectionFactory to build on
* @return the {@link JmsMessageChannelSpec} instance
*/
- public static JmsMessageChannelSpec> channel(String id, ConnectionFactory connectionFactory) {
+ public static JmsMessageChannelSpec> channel(@Nullable String id, ConnectionFactory connectionFactory) {
return new JmsMessageChannelSpec<>(connectionFactory)
.id(id);
}
@@ -87,7 +90,7 @@ public final class Jms {
* @param connectionFactory the JMS ConnectionFactory to build on
* @return the {@link JmsPublishSubscribeMessageChannelSpec} instance
*/
- public static JmsPublishSubscribeMessageChannelSpec publishSubscribeChannel(String id,
+ public static JmsPublishSubscribeMessageChannelSpec publishSubscribeChannel(@Nullable String id,
ConnectionFactory connectionFactory) {
return new JmsPublishSubscribeMessageChannelSpec(connectionFactory).id(id);
diff --git a/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/support/JpaParameter.java b/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/support/JpaParameter.java
index e913765df8..225f8b4d92 100644
--- a/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/support/JpaParameter.java
+++ b/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/support/JpaParameter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2017 the original author or authors.
+ * Copyright 2002-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,6 +19,7 @@ package org.springframework.integration.jpa.support;
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
+import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
/**
@@ -59,7 +60,7 @@ public class JpaParameter {
* @param value If null, the expression property must be set
* @param expression If null, the value property must be set
*/
- public JpaParameter(String name, Object value, String expression) {
+ public JpaParameter(String name, @Nullable Object value, @Nullable String expression) {
super();
Assert.hasText(name, "'name' must not be empty.");
@@ -76,7 +77,7 @@ public class JpaParameter {
* @param value If null, the expression property must be set
* @param expression If null, the value property must be set
*/
- public JpaParameter(Object value, String expression) {
+ public JpaParameter(@Nullable Object value, @Nullable String expression) {
this.value = value;
this.setExpression(expression);
}
diff --git a/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/support/parametersource/ExpressionEvaluatingParameterSourceFactory.java b/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/support/parametersource/ExpressionEvaluatingParameterSourceFactory.java
index f4b6e144a2..19a9cb8ce5 100644
--- a/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/support/parametersource/ExpressionEvaluatingParameterSourceFactory.java
+++ b/spring-integration-jpa/src/main/java/org/springframework/integration/jpa/support/parametersource/ExpressionEvaluatingParameterSourceFactory.java
@@ -30,6 +30,7 @@ import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionException;
import org.springframework.integration.jpa.support.JpaParameter;
import org.springframework.integration.jpa.support.parametersource.ExpressionEvaluatingParameterSourceUtils.ParameterExpressionEvaluator;
+import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
/**
@@ -55,7 +56,7 @@ public class ExpressionEvaluatingParameterSourceFactory implements ParameterSour
this(null);
}
- public ExpressionEvaluatingParameterSourceFactory(BeanFactory beanFactory) {
+ public ExpressionEvaluatingParameterSourceFactory(@Nullable BeanFactory beanFactory) {
this.parameters = new ArrayList<>();
this.expressionEvaluator.setBeanFactory(beanFactory);
}
@@ -78,6 +79,7 @@ public class ExpressionEvaluatingParameterSourceFactory implements ParameterSour
}
+ @Override
public PositionSupportingParameterSource createParameterSource(final Object input) {
return new ExpressionEvaluatingParameterSource(input, this.parameters, this.expressionEvaluator);
}
@@ -109,6 +111,7 @@ public class ExpressionEvaluatingParameterSourceFactory implements ParameterSour
}
+ @Override
public Object getValueByPosition(int position) {
Assert.isTrue(position >= 0, "The position must be non-negative.");
@@ -148,6 +151,7 @@ public class ExpressionEvaluatingParameterSourceFactory implements ParameterSour
}
+ @Override
public Object getValue(String paramName) {
if (this.values.containsKey(paramName)) {
return this.values.get(paramName);
@@ -178,6 +182,7 @@ public class ExpressionEvaluatingParameterSourceFactory implements ParameterSour
return value;
}
+ @Override
public boolean hasValue(String paramName) {
try {
final Object value = getValue(paramName);