Support '.' in endpoint names
Update the `EndpointId` constraints to allow '.' in names. Closes gh-14773
This commit is contained in:
parent
99a45bdef8
commit
d8b9685635
|
@ -22,16 +22,16 @@ import java.util.regex.Pattern;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An identifier for an actuator endpoint. Endpoint IDs may contain only letters and
|
* An identifier for an actuator endpoint. Endpoint IDs may contain only letters, numbers
|
||||||
* numbers and must begin with a lower-case letter. Case is ignored when comparing
|
* and {@code '.'}. They must begin with a lower-case letter. Case is ignored when
|
||||||
* endpoint IDs.
|
* comparing endpoint IDs.
|
||||||
*
|
*
|
||||||
* @author Phillip Webb
|
* @author Phillip Webb
|
||||||
* @since 2.0.6
|
* @since 2.0.6
|
||||||
*/
|
*/
|
||||||
public final class EndpointId {
|
public final class EndpointId {
|
||||||
|
|
||||||
private static final Pattern ALPHA_NUMERIC = Pattern.compile("[a-zA-Z0-9]+");
|
private static final Pattern VALID_CHARS = Pattern.compile("[a-zA-Z0-9\\.]+");
|
||||||
|
|
||||||
private final String value;
|
private final String value;
|
||||||
|
|
||||||
|
@ -39,8 +39,8 @@ public final class EndpointId {
|
||||||
|
|
||||||
private EndpointId(String value) {
|
private EndpointId(String value) {
|
||||||
Assert.hasText(value, "Value must not be empty");
|
Assert.hasText(value, "Value must not be empty");
|
||||||
Assert.isTrue(ALPHA_NUMERIC.matcher(value).matches(),
|
Assert.isTrue(VALID_CHARS.matcher(value).matches(),
|
||||||
"Value must be alpha-numeric");
|
"Value must be alpha-numeric or '.'");
|
||||||
Assert.isTrue(!Character.isDigit(value.charAt(0)),
|
Assert.isTrue(!Character.isDigit(value.charAt(0)),
|
||||||
"Value must not start with a number");
|
"Value must not start with a number");
|
||||||
Assert.isTrue(!Character.isUpperCase(value.charAt(0)),
|
Assert.isTrue(!Character.isUpperCase(value.charAt(0)),
|
||||||
|
|
|
@ -74,6 +74,14 @@ public class EndpointIdTests {
|
||||||
EndpointId.of("Foo");
|
EndpointId.of("Foo");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void ofWhenContainsDotIsValid() {
|
||||||
|
// Ideally we wouldn't support this but there are existing endpoints using the
|
||||||
|
// pattern. See gh-14773
|
||||||
|
EndpointId endpointId = EndpointId.of("foo.bar");
|
||||||
|
assertThat(endpointId.toString()).isEqualTo("foo.bar");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void equalsAndHashCode() {
|
public void equalsAndHashCode() {
|
||||||
EndpointId one = EndpointId.of("foobar");
|
EndpointId one = EndpointId.of("foobar");
|
||||||
|
|
Loading…
Reference in New Issue