diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/source/SpringIterableConfigurationPropertySource.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/source/SpringIterableConfigurationPropertySource.java index f0b3adf195..6411fd26c4 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/source/SpringIterableConfigurationPropertySource.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/source/SpringIterableConfigurationPropertySource.java @@ -25,7 +25,7 @@ import java.util.List; import java.util.Set; import java.util.stream.Stream; -import org.springframework.boot.env.OriginTrackedMapPropertySource; +import org.springframework.boot.origin.OriginLookup; import org.springframework.core.env.EnumerablePropertySource; import org.springframework.core.env.MapPropertySource; import org.springframework.core.env.PropertySource; @@ -236,8 +236,8 @@ class SpringIterableConfigurationPropertySource extends SpringConfigurationPrope } private static boolean isImmutable(EnumerablePropertySource source) { - if (source instanceof OriginTrackedMapPropertySource) { - return ((OriginTrackedMapPropertySource) source).isImmutable(); + if (source instanceof OriginLookup) { + return ((OriginLookup) source).isImmutable(); } if (StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME.equals(source.getName())) { return source.getSource() == System.getenv(); diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/env/OriginTrackedMapPropertySource.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/env/OriginTrackedMapPropertySource.java index b4c762c327..7e1d5c11c8 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/env/OriginTrackedMapPropertySource.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/env/OriginTrackedMapPropertySource.java @@ -22,7 +22,6 @@ import org.springframework.boot.origin.Origin; import org.springframework.boot.origin.OriginLookup; import org.springframework.boot.origin.OriginTrackedValue; import org.springframework.core.env.MapPropertySource; -import org.springframework.core.env.PropertySource; /** * {@link OriginLookup} backed by a {@link Map} containing {@link OriginTrackedValue @@ -52,6 +51,7 @@ public final class OriginTrackedMapPropertySource extends MapPropertySource impl * @param name the property source name * @param source the underlying map source * @param immutable if the underlying source is immutable and guaranteed not to change + * @since 2.2.0 */ @SuppressWarnings({ "unchecked", "rawtypes" }) public OriginTrackedMapPropertySource(String name, Map source, boolean immutable) { @@ -77,11 +77,7 @@ public final class OriginTrackedMapPropertySource extends MapPropertySource impl return null; } - /** - * Return {@code true} if this {@link PropertySource} is immutable and has contents - * that will never change. - * @return if the property source is read only - */ + @Override public boolean isImmutable() { return this.immutable; } diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/origin/OriginLookup.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/origin/OriginLookup.java index 4a71734af6..b798fa640b 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/origin/OriginLookup.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/origin/OriginLookup.java @@ -35,6 +35,16 @@ public interface OriginLookup { */ Origin getOrigin(K key); + /** + * Return {@code true} if this lookup is immutable and has contents that will never + * change. + * @return if the lookup is immutable + * @since 2.2.0 + */ + default boolean isImmutable() { + return false; + } + /** * Attempt to lookup the origin from the given source. If the source is not a * {@link OriginLookup} or if an exception occurs during lookup then {@code null} is