From 5eaba5811c417795254c51a86aca732b5dfb1e66 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Tue, 20 Oct 2015 07:59:13 -0400 Subject: [PATCH] ChannelsEndpoint should return a Map<> (not a domain object) This is a general rule for endpoints so they work OOTB with JMX. --- .../cloud/stream/binding/ChannelBindingService.java | 4 ++-- .../cloud/stream/endpoint/ChannelsEndpoint.java | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/ChannelBindingService.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/ChannelBindingService.java index 897789941..655c84b87 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/ChannelBindingService.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binding/ChannelBindingService.java @@ -137,12 +137,12 @@ public class ChannelBindingService implements InitializingBean { catch (Exception e) { throw new IllegalStateException("Could not get the message channel to configure message converters" + e); } - BindingProperties bindingProperties = channelBindingServiceProperties.getBindings().get(channelName); + BindingProperties bindingProperties = this.channelBindingServiceProperties.getBindings().get(channelName); if (bindingProperties != null) { String contentType = bindingProperties.getContentType(); if (StringUtils.hasText(contentType)) { MimeType mimeType = MessageConverterUtils.getMimeType(contentType); - MessageConverter messageConverter = messageConverterFactory.newInstance(mimeType); + MessageConverter messageConverter = this.messageConverterFactory.newInstance(mimeType); Class dataType = MessageConverterUtils.getJavaTypeForContentType(mimeType, Thread.currentThread().getContextClassLoader()); messageChannel.setDatatypes(dataType); diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/endpoint/ChannelsEndpoint.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/endpoint/ChannelsEndpoint.java index 5f8b7b860..fd3db7c23 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/endpoint/ChannelsEndpoint.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/endpoint/ChannelsEndpoint.java @@ -24,17 +24,16 @@ import org.springframework.boot.actuate.endpoint.AbstractEndpoint; import org.springframework.cloud.stream.binding.Bindable; import org.springframework.cloud.stream.config.BindingProperties; import org.springframework.cloud.stream.config.ChannelBindingServiceProperties; -import org.springframework.cloud.stream.endpoint.ChannelsEndpoint.ChannelsMetaData; -import org.springframework.web.bind.annotation.RestController; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; /** * @author Dave Syer */ -@RestController -public class ChannelsEndpoint extends AbstractEndpoint { +public class ChannelsEndpoint extends AbstractEndpoint> { private List adapters; @@ -48,7 +47,7 @@ public class ChannelsEndpoint extends AbstractEndpoint { } @Override - public ChannelsMetaData invoke() { + public Map invoke() { ChannelsMetaData map = new ChannelsMetaData(); Map inputs = map.getInputs(); Map outputs = map.getOutputs(); @@ -63,7 +62,8 @@ public class ChannelsEndpoint extends AbstractEndpoint { : new BindingProperties()); } } - return map; + return new ObjectMapper().convertValue(map, new TypeReference>() { + }); } @JsonInclude(value = Include.NON_DEFAULT)