From 635cd40dbba586639c57c374bac287bedba1503d Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Tue, 5 Feb 2019 05:57:43 +0100 Subject: [PATCH] GH-1601 Ensured type information propagation in AbstractExtendedBindingProperties Made getBindings() method abstract forcing an implementation at the sub-class level, hence propagation of type information to metadata Resolves #1601 --- .../stream/binder/AbstractExtendedBindingProperties.java | 9 ++++++--- .../cloud/stream/utils/FooExtendedBindingProperties.java | 6 ++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/AbstractExtendedBindingProperties.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/AbstractExtendedBindingProperties.java index 4f831dd64..454d15637 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/AbstractExtendedBindingProperties.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/binder/AbstractExtendedBindingProperties.java @@ -16,6 +16,7 @@ package org.springframework.cloud.stream.binder; +import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -47,9 +48,7 @@ public abstract class AbstractExtendedBindingProperties getBindings() { - return this.bindings; - } + public abstract Map getBindings(); public void setBindings(Map bindings) { this.bindings.putAll(bindings); @@ -101,4 +100,8 @@ public abstract class AbstractExtendedBindingProperties doGetBindings() { + return Collections.unmodifiableMap(this.bindings); + } + } diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/utils/FooExtendedBindingProperties.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/utils/FooExtendedBindingProperties.java index 7cef77766..e51db3ebf 100644 --- a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/utils/FooExtendedBindingProperties.java +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/utils/FooExtendedBindingProperties.java @@ -16,6 +16,8 @@ package org.springframework.cloud.stream.utils; +import java.util.Map; + import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.cloud.stream.binder.AbstractExtendedBindingProperties; import org.springframework.cloud.stream.binder.BinderSpecificPropertiesProvider; @@ -34,6 +36,10 @@ public class FooExtendedBindingProperties extends return DEFAULTS_PREFIX; } + public Map getBindings() { + return this.doGetBindings(); + } + @Override public Class getExtendedPropertiesEntryClass() { return FooBindingProperties.class;