Polish Environment and StandardEnvironmentTests
See gh-30206 See gh-30226
This commit is contained in:
@@ -57,6 +57,7 @@ package org.springframework.core.env;
|
||||
* of property sources prior to application context {@code refresh()}.
|
||||
*
|
||||
* @author Chris Beams
|
||||
* @author Phillip Webb
|
||||
* @since 3.1
|
||||
* @see PropertyResolver
|
||||
* @see EnvironmentCapable
|
||||
@@ -95,14 +96,17 @@ public interface Environment extends PropertyResolver {
|
||||
String[] getDefaultProfiles();
|
||||
|
||||
/**
|
||||
* Return whether one or more of the given profiles is active or, in the case of no
|
||||
* explicit active profiles, whether one or more of the given profiles is included in
|
||||
* the set of default profiles. If a profile begins with '!' the logic is inverted,
|
||||
* i.e. the method will return {@code true} if the given profile is <em>not</em> active.
|
||||
* For example, {@code env.acceptsProfiles("p1", "!p2")} will return {@code true} if
|
||||
* profile 'p1' is active or 'p2' is not active.
|
||||
* @throws IllegalArgumentException if called with zero arguments
|
||||
* or if any profile is {@code null}, empty, or whitespace only
|
||||
* Determine whether one or more of the given profiles is active — or
|
||||
* in the case of no explicit {@linkplain #getActiveProfiles() active profiles},
|
||||
* whether one or more of the given profiles is included in the set of
|
||||
* {@linkplain #getDefaultProfiles() default profiles}.
|
||||
* <p>If a profile begins with '!' the logic is inverted, meaning this method
|
||||
* will return {@code true} if the given profile is <em>not</em> active. For
|
||||
* example, {@code env.acceptsProfiles("p1", "!p2")} will return {@code true}
|
||||
* if profile 'p1' is active or 'p2' is not active.
|
||||
* @throws IllegalArgumentException if called with a {@code null} array, an
|
||||
* empty array, zero arguments or if any profile is {@code null}, empty, or
|
||||
* whitespace only
|
||||
* @see #getActiveProfiles
|
||||
* @see #getDefaultProfiles
|
||||
* @see #acceptsProfiles(Profiles)
|
||||
@@ -112,8 +116,14 @@ public interface Environment extends PropertyResolver {
|
||||
boolean acceptsProfiles(String... profiles);
|
||||
|
||||
/**
|
||||
* Return whether the {@linkplain #getActiveProfiles() active profiles}
|
||||
* match the given {@link Profiles} predicate.
|
||||
* Determine whether the given {@link Profiles} predicate matches the
|
||||
* {@linkplain #getActiveProfiles() active profiles} — or in the case
|
||||
* of no explicit active profiles, whether the given {@code Profiles} predicate
|
||||
* matches the {@linkplain #getDefaultProfiles() default profiles}.
|
||||
* <p>If you wish to check a single profile expression, consider using
|
||||
* {@link #acceptsProfiles(String)} instead.
|
||||
* @since 5.1
|
||||
* @see Profiles#of(String...)
|
||||
*/
|
||||
boolean acceptsProfiles(Profiles profiles);
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2020 the original author or authors.
|
||||
* Copyright 2002-2023 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.
|
||||
@@ -43,32 +43,32 @@ public interface Profiles {
|
||||
|
||||
/**
|
||||
* Create a new {@link Profiles} instance that checks for matches against
|
||||
* the given <em>profile strings</em>.
|
||||
* the given <em>profile expressions</em>.
|
||||
* <p>The returned instance will {@linkplain Profiles#matches(Predicate) match}
|
||||
* if any one of the given profile strings matches.
|
||||
* <p>A profile string may contain a simple profile name (for example
|
||||
* {@code "production"}) or a profile expression. A profile expression allows
|
||||
* if any one of the given profile expressions matches.
|
||||
* <p>A profile expression may contain a simple profile name (for example
|
||||
* {@code "production"}) or a compound expression. A compound expression allows
|
||||
* for more complicated profile logic to be expressed, for example
|
||||
* {@code "production & cloud"}.
|
||||
* <p>The following operators are supported in profile expressions.
|
||||
* <ul>
|
||||
* <li>{@code !} - A logical <em>NOT</em> of the profile or profile expression</li>
|
||||
* <li>{@code &} - A logical <em>AND</em> of the profiles or profile expressions</li>
|
||||
* <li>{@code |} - A logical <em>OR</em> of the profiles or profile expressions</li>
|
||||
* <li>{@code !} - A logical <em>NOT</em> of the profile name or compound expression</li>
|
||||
* <li>{@code &} - A logical <em>AND</em> of the profile names or compound expressions</li>
|
||||
* <li>{@code |} - A logical <em>OR</em> of the profile names or compound expressions</li>
|
||||
* </ul>
|
||||
* <p>Please note that the {@code &} and {@code |} operators may not be mixed
|
||||
* without using parentheses. For example {@code "a & b | c"} is not a valid
|
||||
* expression; it must be expressed as {@code "(a & b) | c"} or
|
||||
* without using parentheses. For example, {@code "a & b | c"} is not a valid
|
||||
* expression: it must be expressed as {@code "(a & b) | c"} or
|
||||
* {@code "a & (b | c)"}.
|
||||
* <p>As of Spring Framework 5.1.17, two {@code Profiles} instances returned
|
||||
* by this method are considered equivalent to each other (in terms of
|
||||
* {@code equals()} and {@code hashCode()} semantics) if they are created
|
||||
* with identical <em>profile strings</em>.
|
||||
* @param profiles the <em>profile strings</em> to include
|
||||
* with identical <em>profile expressions</em>.
|
||||
* @param profileExpressions the <em>profile expressions</em> to include
|
||||
* @return a new {@link Profiles} instance
|
||||
*/
|
||||
static Profiles of(String... profiles) {
|
||||
return ProfilesParser.parse(profiles);
|
||||
static Profiles of(String... profileExpressions) {
|
||||
return ProfilesParser.parse(profileExpressions);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ final class ProfilesParser {
|
||||
|
||||
|
||||
static Profiles parse(String... expressions) {
|
||||
Assert.notEmpty(expressions, "Must specify at least one profile");
|
||||
Assert.notEmpty(expressions, "Must specify at least one profile expression");
|
||||
Profiles[] parsed = new Profiles[expressions.length];
|
||||
for (int i = 0; i < expressions.length; i++) {
|
||||
parsed[i] = parseExpression(expressions[i]);
|
||||
@@ -137,8 +137,8 @@ final class ProfilesParser {
|
||||
return activeProfile -> activeProfile.test(profile);
|
||||
}
|
||||
|
||||
private static Predicate<Profiles> isMatch(Predicate<String> activeProfile) {
|
||||
return profiles -> profiles.matches(activeProfile);
|
||||
private static Predicate<Profiles> isMatch(Predicate<String> activeProfiles) {
|
||||
return profiles -> profiles.matches(activeProfiles);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user