Skip to content

Commit d5a7068

Browse files
committed
Reserve layer names for future use
Update layered jar support so that the name `ext` and any name starting `springboot` are reserved. See gh-19767
1 parent 3af4930 commit d5a7068

File tree

2 files changed

+12
-0
lines changed
  • spring-boot-project/spring-boot-tools/spring-boot-loader-tools/src

2 files changed

+12
-0
lines changed

spring-boot-project/spring-boot-tools/spring-boot-loader-tools/src/main/java/org/springframework/boot/loader/tools/Layer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ public class Layer {
4141
public Layer(String name) {
4242
Assert.hasText(name, "Name must not be empty");
4343
Assert.isTrue(PATTERN.matcher(name).matches(), "Malformed layer name '" + name + "'");
44+
Assert.isTrue(!name.equalsIgnoreCase("ext") && !name.toLowerCase().startsWith("springboot"),
45+
"Layer name '" + name + "' is reserved");
4446
this.name = name;
4547
}
4648

spring-boot-project/spring-boot-tools/spring-boot-loader-tools/src/test/java/org/springframework/boot/loader/tools/LayerTests.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,14 @@ void toStringReturnsName() {
5959
assertThat(new Layer("test")).hasToString("test");
6060
}
6161

62+
@Test
63+
void createWhenUsingReservedNameThrowsException() {
64+
assertThatIllegalArgumentException().isThrownBy(() -> new Layer("ext"))
65+
.withMessage("Layer name 'ext' is reserved");
66+
assertThatIllegalArgumentException().isThrownBy(() -> new Layer("ExT"))
67+
.withMessage("Layer name 'ExT' is reserved");
68+
assertThatIllegalArgumentException().isThrownBy(() -> new Layer("springbootloader"))
69+
.withMessage("Layer name 'springbootloader' is reserved");
70+
}
71+
6272
}

0 commit comments

Comments
 (0)