Skip to content

Commit d9c2f12

Browse files
authored
fix: x-pattern-message ignored for list items in Spring generator (OpenAPITools#23910)
* fix: x-pattern-message ignored for list items in Spring generator (OpenAPITools#21167) * Fixed build failure
1 parent 0e43b9c commit d9c2f12

2 files changed

Lines changed: 21 additions & 1 deletion

File tree

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1253,7 +1253,12 @@ private String getStringBeanValidation(Schema<?> items) {
12531253
.replace("\\", "\\\\")
12541254
.replace("\"", "\\\""));
12551255

1256-
validations = String.format(Locale.ROOT, "@Pattern(regexp = \"%s\")", pattern);
1256+
String patternMessage = (items.getExtensions() != null)
1257+
? (String) items.getExtensions().get("x-pattern-message")
1258+
: null;
1259+
validations = String.format(Locale.ROOT, "@Pattern(regexp = \"%s\"%s)",
1260+
pattern,
1261+
(patternMessage != null ? ", message=\"" + patternMessage + "\"" : ""));
12571262
}
12581263

12591264
if (ModelUtils.isEmailSchema(items)) {

modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -998,6 +998,21 @@ public void AnnotationsContainerTest() {
998998
Assert.assertEquals(defaultValue, "List<@Max(10)Integer>");
999999
}
10001000

1001+
@Test
1002+
public void annotationsContainerPatternMessageTest() {
1003+
codegen.setUseBeanValidation(true);
1004+
1005+
Schema<?> itemSchema = new Schema<>()
1006+
.type("string")
1007+
.pattern("^[a-z]$");
1008+
itemSchema.addExtension("x-pattern-message", "Custom message for list");
1009+
1010+
Schema<?> schema = new ArraySchema().items(itemSchema);
1011+
String defaultValue = codegen.getTypeDeclaration(schema);
1012+
Assert.assertEquals(defaultValue,
1013+
"List<@Pattern(regexp = \"^[a-z]$\", message=\"Custom message for list\")String>");
1014+
}
1015+
10011016
@Test
10021017
public void disableDiscriminatorJsonIgnorePropertiesFlagTest() {
10031018
codegen.additionalProperties().put(DISABLE_DISCRIMINATOR_JSON_IGNORE_PROPERTIES, true);

0 commit comments

Comments
 (0)