From ec0966875cf20687c6e1e53159e53eefb5e71b08 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Wed, 28 Feb 2018 13:00:05 -0500 Subject: [PATCH] GH-1267: Created BindingCreatedEvent Fixes spring-cloud/spring-cloud-stream#1267 - updated AbstractChannelBinder to fire this event whenever bindings are created * Simple code style polishing and fix JavaDocs --- .../binder/AbstractMessageChannelBinder.java | 45 ++++++++++++++----- .../stream/binder/BindingCreatedEvent.java | 37 +++++++++++++++ 2 files changed, 70 insertions(+), 12 deletions(-) create mode 100644 spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/BindingCreatedEvent.java diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/AbstractMessageChannelBinder.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/AbstractMessageChannelBinder.java index 91f6a94d9..7ed4061a0 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/AbstractMessageChannelBinder.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/AbstractMessageChannelBinder.java @@ -25,12 +25,15 @@ import org.apache.commons.logging.Log; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.support.DefaultSingletonBeanRegistry; import org.springframework.cloud.stream.provisioning.ConsumerDestination; import org.springframework.cloud.stream.provisioning.ProducerDestination; import org.springframework.cloud.stream.provisioning.ProvisioningException; import org.springframework.cloud.stream.provisioning.ProvisioningProvider; +import org.springframework.context.ApplicationEvent; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.Lifecycle; import org.springframework.integration.channel.AbstractMessageChannel; import org.springframework.integration.channel.PublishSubscribeChannel; @@ -76,7 +79,7 @@ public abstract class AbstractMessageChannelBinder(destination, null, outputChannel, + Binding binding = new DefaultBinding(destination, null, outputChannel, producerMessageHandler instanceof Lifecycle ? (Lifecycle) producerMessageHandler : null) { @Override - public Map getExtendedInfo() { + public Map getExtendedInfo() { return doGetExtendedInfo(destination, producerProperties); } - + @Override public void afterUnbind() { try { @@ -182,6 +190,9 @@ public abstract class AbstractMessageChannelBinder(name, group, inputChannel, + Binding binding = new DefaultBinding(name, group, inputChannel, consumerEndpoint instanceof Lifecycle ? (Lifecycle) consumerEndpoint : null) { - + @Override public Map getExtendedInfo() { return doGetExtendedInfo(destination, properties); } - + @Override protected void afterUnbind() { try { @@ -289,6 +300,8 @@ public abstract class AbstractMessageChannelBinder>(name, group, inboundBindTarget, + Binding> binding = new DefaultBinding>(name, group, inboundBindTarget, resources.getSource() instanceof Lifecycle ? (Lifecycle) resources.getSource() : null) { - + @Override public Map getExtendedInfo() { return doGetExtendedInfo(destination, properties); @@ -351,6 +364,9 @@ public abstract class AbstractMessageChannelBinder doGetExtendedInfo(Object destination, Object properties) { Map extendedInfo = new LinkedHashMap<>(); extendedInfo.put("bindingDestination", destination.toString()); @@ -667,6 +683,12 @@ public abstract class AbstractMessageChannelBinder source) { + super(source); + } + +}