Skip to content

Commit af21877

Browse files
authored
Merge pull request #39 from avaje/feature/msg-NoBlank-Size
Update for [avaje] NotBlank and Size (default message from annotations)
2 parents b2af292 + 2032765 commit af21877

File tree

10 files changed

+72
-152
lines changed

10 files changed

+72
-152
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package example.jakarta;
2+
3+
import jakarta.validation.Valid;
4+
import jakarta.validation.constraints.*;
5+
6+
@Valid
7+
public class AllSortsBean {
8+
9+
@NotNull
10+
public String myNotNull = "valid";
11+
12+
@NotBlank
13+
public String myNotBlank = "valid";
14+
15+
@NotEmpty
16+
public String myNotEmpty = "valid";
17+
18+
@Email
19+
public String myEmail = "[email protected]";
20+
21+
@AssertTrue
22+
public boolean myAssertTrue = true;
23+
24+
@AssertFalse
25+
public boolean myAssertFalse = false;
26+
27+
@Null
28+
public String myNull = null;
29+
30+
}

validator/src/test/java/io/avaje/validation/core/AllSortsDefaultMessageTest.java renamed to blackbox-test/src/test/java/example/jakarta/AllSortsDefaultMessageTest.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,29 @@
1-
package io.avaje.validation.core;
1+
package example.jakarta;
22

33
import io.avaje.validation.ConstraintViolation;
4+
import io.avaje.validation.ConstraintViolationException;
5+
import io.avaje.validation.Validator;
46
import org.junit.jupiter.api.Test;
57

8+
import java.util.ArrayList;
69
import java.util.Locale;
710

811
import static org.assertj.core.api.Assertions.assertThat;
912

10-
class AllSortsDefaultMessageTest extends BaseAllSortsTest {
13+
class AllSortsDefaultMessageTest {
14+
15+
final Validator validator = Validator.builder().build();
16+
17+
protected ConstraintViolation one(AllSortsBean pojo, Locale locale) {
18+
try {
19+
validator.validate(pojo, locale);
20+
throw new IllegalStateException("don't get here");
21+
} catch (ConstraintViolationException e) {
22+
var violations = new ArrayList<>(e.violations());
23+
assertThat(violations).hasSize(1);
24+
return violations.get(0);
25+
}
26+
}
1127

1228
@Test
1329
void notNull_EN() {

validator-generator/src/main/java/io/avaje/validation/generator/AnnotationUtil.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,22 @@ interface Handler {
1919
handlers.put("jakarta.validation.constraints.Pattern", pattern);
2020

2121
final var jakartaHandler = new JakartaHandler();
22+
handlers.put("io.avaje.validation.constraints.AssertFalse", jakartaHandler);
23+
handlers.put("jakarta.validation.constraints.AssertFalse", jakartaHandler);
24+
handlers.put("io.avaje.validation.constraints.AssertTrue", jakartaHandler);
25+
handlers.put("jakarta.validation.constraints.AssertTrue", jakartaHandler);
26+
handlers.put("io.avaje.validation.constraints.Null", jakartaHandler);
27+
handlers.put("jakarta.validation.constraints.Null", jakartaHandler);
28+
handlers.put("io.avaje.validation.constraints.NotNull", jakartaHandler);
29+
handlers.put("jakarta.validation.constraints.NotNull", jakartaHandler);
30+
handlers.put("io.avaje.validation.constraints.NotBlank", jakartaHandler);
2231
handlers.put("jakarta.validation.constraints.NotBlank", jakartaHandler);
32+
handlers.put("io.avaje.validation.constraints.NotEmpty", jakartaHandler);
33+
handlers.put("jakarta.validation.constraints.NotEmpty", jakartaHandler);
34+
handlers.put("io.avaje.validation.constraints.Size", jakartaHandler);
2335
handlers.put("jakarta.validation.constraints.Size", jakartaHandler);
36+
handlers.put("io.avaje.validation.constraints.Email", jakartaHandler);
37+
handlers.put("jakarta.validation.constraints.Email", jakartaHandler);
2438

2539
final var jakartaDecimal = new JakartaDecimal();
2640
handlers.put("io.avaje.validation.constraints.DecimalMax", jakartaDecimal);

validator/src/main/java/io/avaje/validation/core/adapters/BasicAdapters.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,18 @@ private BasicAdapters() {}
1919
public static final ValidationContext.AnnotationFactory FACTORY = (annotationType, context, attributes) ->
2020
switch (annotationType.getSimpleName()) {
2121
case "Email" -> new EmailAdapter(context.message("Email", attributes), attributes);
22-
case "Null" -> new NullAdapter(context.message2("{avaje.Null.message}", attributes));
23-
case "NotNull", "NonNull" -> new NotNullAdapter(context.message2("{avaje.NotNull.message}", attributes));
24-
case "AssertTrue" -> new AssertBooleanAdapter(context.message2("{avaje.AssertTrue.message}", attributes), false);
25-
case "AssertFalse" -> new AssertBooleanAdapter(context.message2("{avaje.AssertFalse.message}", attributes), true);
26-
case "NotBlank" -> new NotBlankAdapter(context.message2("{avaje.NotBlank.message}", attributes));
27-
case "NotEmpty" -> new NotEmptyAdapter(context.message2("{avaje.NotEmpty.message}", attributes));
22+
case "Null" -> new NullAdapter(context.message2(attributes));
23+
case "NotNull", "NonNull" -> new NotNullAdapter(context.message2(attributes));
24+
case "AssertTrue" -> new AssertBooleanAdapter(context.message2(attributes), false);
25+
case "AssertFalse" -> new AssertBooleanAdapter(context.message2(attributes), true);
26+
case "NotBlank" -> new NotBlankAdapter(context.message2(attributes));
27+
case "NotEmpty" -> new NotEmptyAdapter(context.message2(attributes));
2828
case "Past" -> new FuturePastAdapter(context.message("Past", attributes), true, false);
2929
case "PastOrPresent" -> new FuturePastAdapter(context.message("PastOrPresent", attributes), true, true);
3030
case "Future" -> new FuturePastAdapter(context.message("Future", attributes), false, false);
3131
case "FutureOrPresent" -> new FuturePastAdapter(context.message("FutureOrPresent", attributes), false, true);
3232
case "Pattern" -> new PatternAdapter(context.message2("{avaje.Pattern.message}", attributes), attributes);
33-
case "Size" -> new SizeAdapter(context.message2("{avaje.Size.message}", attributes), attributes);
33+
case "Size" -> new SizeAdapter(context.message2(attributes), attributes);
3434
default -> null;
3535
};
3636

validator/src/test/java/io/avaje/validation/core/AllSortsBean.java

Lines changed: 0 additions & 30 deletions
This file was deleted.

validator/src/test/java/io/avaje/validation/core/AllSortsBeanValidationAdapter.java

Lines changed: 0 additions & 52 deletions
This file was deleted.

validator/src/test/java/io/avaje/validation/core/BaseAllSortsTest.java

Lines changed: 0 additions & 29 deletions
This file was deleted.

validator/src/test/java/io/avaje/validation/core/ContactValidationAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public final class ContactValidationAdapter implements ValidationAdapter<Contact
1818

1919
public ContactValidationAdapter(ValidationContext ctx) {
2020
this.firstNameAdapter = ctx.adapter(NotBlank.class, Map.of("message", "empty"));
21-
this.lastNameAdapter = ctx.<String>adapter(NotNull.class, Collections.emptyMap())
21+
this.lastNameAdapter = ctx.<String>adapter(NotNull.class, Map.of("message","{avaje.NotNull.message}"))
2222
.andThen(ctx.adapter(Size.class, Map.of("max", 5, "min", 0)));
2323
this.addressValidator = ctx.adapter(Address.class);
2424
}

validator/src/test/java/io/avaje/validation/core/CustomerValidationAdapter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public CustomerValidationAdapter(ValidationContext ctx) {
3030

3131
this.nameAdapter =
3232
ctx
33-
.<String>adapter(NotNull.class, Map.of("message", "null"))
33+
.<String>adapter(NotNull.class, Map.of("message","{avaje.NotNull.message}"))
3434
.andThen(ctx.adapter(NotBlank.class, Map.of("message", "empty")));
3535

3636
this.activeDateAdapter =
@@ -44,7 +44,7 @@ public CustomerValidationAdapter(ValidationContext ctx) {
4444
this.shippingAddressValidator = ctx.adapter(Address.class);
4545

4646
// Option A: billingAddressValidator combines NotNull + addressValidator
47-
this.billingAddressValidator = ctx.<Address>adapter(NotNull.class, Collections.emptyMap())
47+
this.billingAddressValidator = ctx.<Address>adapter(NotNull.class, Map.of("message","{avaje.NotNull.message}"))
4848
.andThen(ctx.adapter(Address.class));
4949

5050
// Option B: billingAddressValidator only does NotNull ...

validator/src/test/java/io/avaje/validation/core/SizeLocaleTest.java

Lines changed: 0 additions & 29 deletions
This file was deleted.

0 commit comments

Comments
 (0)