GH-2501 Maje StreamBridge 'safer' if created outside of Spring

Resolves #2501
This commit is contained in:
Oleg Zhurakousky
2022-08-31 13:33:37 +02:00
parent 3fc3097852
commit 8b9f1349fc

View File

@@ -50,6 +50,7 @@ import org.springframework.lang.Nullable;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.support.GenericMessage;
import org.springframework.util.Assert;
import org.springframework.util.MimeType;
import org.springframework.util.MimeTypeUtils;
import org.springframework.util.StringUtils;
@@ -105,6 +106,9 @@ public final class StreamBridge implements SmartInitializingSingleton {
@SuppressWarnings("serial")
StreamBridge(FunctionCatalog functionCatalog, BindingServiceProperties bindingServiceProperties,
ConfigurableApplicationContext applicationContext, @Nullable NewDestinationBindingCallback destinationBindingCallback) {
Assert.notNull(functionCatalog, "'functionCatalog' must not be null");
Assert.notNull(applicationContext, "'applicationContext' must not be null");
Assert.notNull(bindingServiceProperties, "'bindingServiceProperties' must not be null");
this.bindingService = applicationContext.getBean(BindingService.class);
this.functionCatalog = functionCatalog;
this.applicationContext = applicationContext;
@@ -206,6 +210,9 @@ public final class StreamBridge implements SmartInitializingSingleton {
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public boolean send(String bindingName, @Nullable String binderName, Object data, MimeType outputContentType) {
if (!this.initialized) {
this.afterSingletonsInstantiated();
}
ProducerProperties producerProperties = this.bindingServiceProperties.getProducerProperties(bindingName);
MessageChannel messageChannel = this.resolveDestination(bindingName, producerProperties, binderName);