Polish "Tighten rules around profile naming"

See gh-43176
This commit is contained in:
Moritz Halbritter
2025-01-14 14:32:37 +01:00
parent 0be0bed88c
commit 5322352919
3 changed files with 8 additions and 9 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2012-2024 the original author or authors.
* Copyright 2012-2025 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.
@@ -149,13 +149,13 @@ public class StandardConfigDataLocationResolver
@Override
public List<StandardConfigDataResource> resolveProfileSpecific(ConfigDataLocationResolverContext context,
ConfigDataLocation location, Profiles profiles) {
validateProfiles(profiles);
return resolve(getProfileSpecificReferences(context, location.split(), profiles));
}
private Set<StandardConfigDataReference> getProfileSpecificReferences(ConfigDataLocationResolverContext context,
ConfigDataLocation[] configDataLocations, Profiles profiles) {
Set<StandardConfigDataReference> references = new LinkedHashSet<>();
validateProfiles(profiles);
for (String profile : profiles) {
for (ConfigDataLocation configDataLocation : configDataLocations) {
String resourceLocation = getResourceLocation(context, configDataLocation);
@@ -172,7 +172,7 @@ public class StandardConfigDataLocationResolver
}
private void validateProfile(String profile) {
Assert.hasText(profile, "Profile must contain text");
Assert.hasText(profile, "'profile' must contain text");
Assert.state(!profile.startsWith("-") && !profile.startsWith("_"),
() -> String.format("Invalid profile '%s': must not start with '-' or '_'", profile));
Assert.state(!profile.endsWith("-") && !profile.endsWith("_"),
@@ -181,7 +181,8 @@ public class StandardConfigDataLocationResolver
if (codePoint == '-' || codePoint == '_' || Character.isLetterOrDigit(codePoint)) {
return;
}
throw new IllegalStateException(String.format("Invalid profile '%s': must contain only letters or digits or '-' or '_'", profile));
throw new IllegalStateException(
String.format("Invalid profile '%s': must contain only letters or digits or '-' or '_'", profile));
});
}

View File

@@ -258,8 +258,7 @@ class SpringApplicationTests {
application.setWebApplicationType(WebApplicationType.NONE);
application.setEnvironment(environment);
this.context = application.run();
assertThat(output)
.contains("No active profile set, falling back to 2 default profiles: \"p0\", \"default\"");
assertThat(output).contains("No active profile set, falling back to 2 default profiles: \"p0\", \"default\"");
}
@Test

View File

@@ -309,7 +309,7 @@ class StandardConfigDataLocationResolverTests {
this.environment.setActiveProfiles("dev-테스트_123");
Profiles profiles = new Profiles(this.environment, this.environmentBinder, Collections.emptyList());
assertThatNoException()
.isThrownBy(() -> this.resolver.resolveProfileSpecific(this.context, location, profiles));
.isThrownBy(() -> this.resolver.resolveProfileSpecific(this.context, location, profiles));
}
@Test
@@ -368,8 +368,7 @@ class StandardConfigDataLocationResolverTests {
Profiles profiles = new Profiles(this.environment, this.environmentBinder, Collections.emptyList());
assertThatIllegalStateException()
.isThrownBy(() -> this.resolver.resolveProfileSpecific(this.context, location, profiles))
.withMessageStartingWith(
"Invalid profile 'dev*test': must contain only letters or digits or '-' or '_'");
.withMessageStartingWith("Invalid profile 'dev*test': must contain only letters or digits or '-' or '_'");
}
private String filePath(String... components) {