Merge branch '2.7.x' into 3.0.x

Closes gh-36519
This commit is contained in:
Stephane Nicoll
2023-07-24 13:24:40 +02:00

View File

@@ -39,31 +39,22 @@ import org.springframework.boot.origin.Origin;
class ConfigDataLocationBindHandler extends AbstractBindHandler {
@Override
@SuppressWarnings("unchecked")
public Object onSuccess(ConfigurationPropertyName name, Bindable<?> target, BindContext context, Object result) {
if (result instanceof ConfigDataLocation location) {
return withOrigin(context, location);
}
if (result instanceof List) {
List<Object> list = ((List<Object>) result).stream()
if (result instanceof List<?> list) {
return list.stream()
.filter(Objects::nonNull)
.map((element) -> (element instanceof ConfigDataLocation location) ? withOrigin(context, location)
: element)
.collect(Collectors.toCollection(ArrayList::new));
for (int i = 0; i < list.size(); i++) {
Object element = list.get(i);
if (element instanceof ConfigDataLocation location) {
list.set(i, withOrigin(context, location));
}
}
return list;
}
if (result instanceof ConfigDataLocation[] unfilteredLocations) {
ConfigDataLocation[] locations = Arrays.stream(unfilteredLocations)
return Arrays.stream(unfilteredLocations)
.filter(Objects::nonNull)
.map((element) -> withOrigin(context, element))
.toArray(ConfigDataLocation[]::new);
for (int i = 0; i < locations.length; i++) {
locations[i] = withOrigin(context, locations[i]);
}
return locations;
}
return result;
}