Adapt to new Placeholder resolution API

See gh-41177
This commit is contained in:
Stéphane Nicoll 2024-02-24 09:29:02 +01:00 committed by Andy Wilkinson
parent 762434c85f
commit 2053e13c09
4 changed files with 12 additions and 7 deletions

View File

@ -157,6 +157,7 @@ public class DataSourceAutoConfiguration {
return StringUtils.hasText(environment.getProperty(DATASOURCE_URL_PROPERTY)); return StringUtils.hasText(environment.getProperty(DATASOURCE_URL_PROPERTY));
} }
catch (IllegalArgumentException ex) { catch (IllegalArgumentException ex) {
// NOTE: This should be PlaceholderResolutionException
// Ignore unresolvable placeholder errors // Ignore unresolvable placeholder errors
} }
} }

View File

@ -27,9 +27,10 @@ import org.springframework.core.env.MapPropertySource;
import org.springframework.core.env.MutablePropertySources; import org.springframework.core.env.MutablePropertySources;
import org.springframework.mock.env.MockEnvironment; import org.springframework.mock.env.MockEnvironment;
import org.springframework.test.context.support.TestPropertySourceUtils; import org.springframework.test.context.support.TestPropertySourceUtils;
import org.springframework.util.PlaceholderResolutionException;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
/** /**
* Tests for {@link SpringBootTestRandomPortEnvironmentPostProcessor}. * Tests for {@link SpringBootTestRandomPortEnvironmentPostProcessor}.
@ -169,7 +170,7 @@ class SpringBootTestRandomPortEnvironmentPostProcessorTests {
addTestPropertySource("0", null); addTestPropertySource("0", null);
this.propertySources this.propertySources
.addLast(new MapPropertySource("other", Collections.singletonMap("management.server.port", "${port}"))); .addLast(new MapPropertySource("other", Collections.singletonMap("management.server.port", "${port}")));
assertThatIllegalArgumentException() assertThatExceptionOfType(PlaceholderResolutionException.class)
.isThrownBy(() -> this.postProcessor.postProcessEnvironment(this.environment, null)) .isThrownBy(() -> this.postProcessor.postProcessEnvironment(this.environment, null))
.withMessage("Could not resolve placeholder 'port' in value \"${port}\""); .withMessage("Could not resolve placeholder 'port' in value \"${port}\"");
} }
@ -196,7 +197,7 @@ class SpringBootTestRandomPortEnvironmentPostProcessorTests {
source.put("server.port", "${port}"); source.put("server.port", "${port}");
source.put("management.server.port", "9090"); source.put("management.server.port", "9090");
this.propertySources.addLast(new MapPropertySource("other", source)); this.propertySources.addLast(new MapPropertySource("other", source));
assertThatIllegalArgumentException() assertThatExceptionOfType(PlaceholderResolutionException.class)
.isThrownBy(() -> this.postProcessor.postProcessEnvironment(this.environment, null)) .isThrownBy(() -> this.postProcessor.postProcessEnvironment(this.environment, null))
.withMessage("Could not resolve placeholder 'port' in value \"${port}\""); .withMessage("Could not resolve placeholder 'port' in value \"${port}\"");
} }

View File

@ -56,7 +56,8 @@ class ConfigDataEnvironmentContributorPlaceholdersResolver implements Placeholde
this.failOnResolveFromInactiveContributor = failOnResolveFromInactiveContributor; this.failOnResolveFromInactiveContributor = failOnResolveFromInactiveContributor;
this.conversionService = conversionService; this.conversionService = conversionService;
this.helper = new PropertyPlaceholderHelper(SystemPropertyUtils.PLACEHOLDER_PREFIX, this.helper = new PropertyPlaceholderHelper(SystemPropertyUtils.PLACEHOLDER_PREFIX,
SystemPropertyUtils.PLACEHOLDER_SUFFIX, SystemPropertyUtils.VALUE_SEPARATOR, true); SystemPropertyUtils.PLACEHOLDER_SUFFIX, SystemPropertyUtils.VALUE_SEPARATOR,
SystemPropertyUtils.ESCAPE_CHARACTER, true);
} }
@Override @Override

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2012-2022 the original author or authors. * Copyright 2012-2024 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -47,8 +47,10 @@ public class PropertySourcesPlaceholdersResolver implements PlaceholdersResolver
public PropertySourcesPlaceholdersResolver(Iterable<PropertySource<?>> sources, PropertyPlaceholderHelper helper) { public PropertySourcesPlaceholdersResolver(Iterable<PropertySource<?>> sources, PropertyPlaceholderHelper helper) {
this.sources = sources; this.sources = sources;
this.helper = (helper != null) ? helper : new PropertyPlaceholderHelper(SystemPropertyUtils.PLACEHOLDER_PREFIX, this.helper = (helper != null) ? helper
SystemPropertyUtils.PLACEHOLDER_SUFFIX, SystemPropertyUtils.VALUE_SEPARATOR, true); : new PropertyPlaceholderHelper(SystemPropertyUtils.PLACEHOLDER_PREFIX,
SystemPropertyUtils.PLACEHOLDER_SUFFIX, SystemPropertyUtils.VALUE_SEPARATOR,
SystemPropertyUtils.ESCAPE_CHARACTER, true);
} }
@Override @Override