Reuse MapPropertySource for DynamicValuesPropertySource implementation
Closes gh-32110
This commit is contained in:
parent
08e6df8832
commit
7e5efdd8dd
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
* Copyright 2002-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -40,4 +40,16 @@ public abstract class SupplierUtils {
|
|||
return (supplier != null ? supplier.get() : null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve a given {@code Supplier}, getting its result or immediately
|
||||
* returning the given Object as-is if not a {@code Supplier}.
|
||||
* @param candidate the candidate to resolve (potentially a {@code Supplier})
|
||||
* @return a supplier's result or the given Object as-is
|
||||
* @since 6.1.4
|
||||
*/
|
||||
@Nullable
|
||||
public static Object resolve(@Nullable Object candidate) {
|
||||
return (candidate instanceof Supplier<?> supplier ? supplier.get() : null);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2023 the original author or authors.
|
||||
* Copyright 2002-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -19,38 +19,27 @@ package org.springframework.test.context.support;
|
|||
import java.util.Map;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import org.springframework.core.env.EnumerablePropertySource;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.core.env.MapPropertySource;
|
||||
import org.springframework.util.function.SupplierUtils;
|
||||
|
||||
/**
|
||||
* {@link EnumerablePropertySource} backed by a map with dynamically supplied
|
||||
* values.
|
||||
* {@link MapPropertySource} backed by a map with dynamically supplied values.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Sam Brannen
|
||||
* @author Juergen Hoeller
|
||||
* @since 5.2.5
|
||||
*/
|
||||
class DynamicValuesPropertySource extends EnumerablePropertySource<Map<String, Supplier<Object>>> {
|
||||
class DynamicValuesPropertySource extends MapPropertySource {
|
||||
|
||||
@SuppressWarnings({"rawtypes", "unchecked"})
|
||||
DynamicValuesPropertySource(String name, Map<String, Supplier<Object>> valueSuppliers) {
|
||||
super(name, valueSuppliers);
|
||||
super(name, (Map) valueSuppliers);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Object getProperty(String name) {
|
||||
Supplier<Object> valueSupplier = this.source.get(name);
|
||||
return (valueSupplier != null ? valueSupplier.get() : null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsProperty(String name) {
|
||||
return this.source.containsKey(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getPropertyNames() {
|
||||
return StringUtils.toStringArray(this.source.keySet());
|
||||
return SupplierUtils.resolve(super.getProperty(name));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue