Skip to content

Commit d3418c3

Browse files
authored
Merge pull request #24 from SentryMan/17
Pattern Match
2 parents a405316 + c2c6d5a commit d3418c3

File tree

3 files changed

+54
-79
lines changed

3 files changed

+54
-79
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ build/
88
*.project
99
*.class
1010
.DS_Store
11+
*.factorypath

pom.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
<properties>
2525
<surefire.useModulePath>false</surefire.useModulePath>
2626
<nexus.staging.autoReleaseAfterClose>true</nexus.staging.autoReleaseAfterClose>
27+
<java.version>17</java.version>
28+
<java.release>17</java.release>
2729
</properties>
2830

2931
<modules>

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

Lines changed: 51 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -27,30 +27,21 @@ final class BasicAdapters {
2727
private BasicAdapters() {}
2828

2929
static final ValidationContext.AnnotationFactory FACTORY =
30-
(annotationType, context, attributes) -> {
31-
switch (annotationType.getSimpleName()) {
32-
case "NotNull":
33-
return new NotNullAdapter(context.message("NotNull", attributes));
34-
case "AssertTrue":
35-
return new AssertTrueAdapter(context.message("AssertTrue", attributes));
36-
case "AssertFalse":
37-
return new AssertFalseAdapter(context.message("AssertFalse", attributes));
38-
case "NotBlank":
39-
return new NotBlankAdapter(context.message("NotBlank", attributes));
40-
case "Past":
41-
case "PastOrPresent":
42-
return new PastAdapter(context.message("Past", attributes));
43-
case "Future":
44-
case "FutureOrPresent":
45-
return new FutureAdapter(context.message("Future", attributes));
46-
case "Pattern":
47-
return new PatternAdapter(context.message("Pattern", attributes), attributes);
48-
case "Size":
49-
return new SizeAdapter(context.message("Size", attributes), attributes);
50-
default:
51-
return null;
52-
}
53-
};
30+
(annotationType, context, attributes) ->
31+
switch (annotationType.getSimpleName()) {
32+
case "NotNull" -> new NotNullAdapter(context.message("NotNull", attributes));
33+
case "AssertTrue" -> new AssertTrueAdapter(context.message("AssertTrue", attributes));
34+
case "AssertFalse" -> new AssertFalseAdapter(
35+
context.message("AssertFalse", attributes));
36+
case "NotBlank" -> new NotBlankAdapter(context.message("NotBlank", attributes));
37+
case "Past", "PastOrPresent" -> new PastAdapter(context.message("Past", attributes));
38+
case "Future", "FutureOrPresent" -> new FutureAdapter(
39+
context.message("Future", attributes));
40+
case "Pattern" -> new PatternAdapter(
41+
context.message("Pattern", attributes), attributes);
42+
case "Size" -> new SizeAdapter(context.message("Size", attributes), attributes);
43+
default -> null;
44+
};
5445

5546
private static final class PatternAdapter implements ValidationAdapter<CharSequence> {
5647

@@ -99,27 +90,24 @@ public boolean validate(Object value, ValidationRequest req, String propertyName
9990
return false;
10091
}
10192

102-
if (value instanceof CharSequence) {
103-
final var sequence = (CharSequence) value;
93+
if (value instanceof final CharSequence sequence) {
10494
final var len = sequence.length();
10595
if (len > max || len < min) {
10696
req.addViolation(message, propertyName);
10797
return false;
10898
}
10999
}
110100

111-
if (value instanceof Collection<?>) {
112-
final var col = (Collection<?>) value;
101+
if (value instanceof final Collection<?> col) {
113102
final var len = col.size();
114103
if (len > max || len < min) {
115104
req.addViolation(message, propertyName);
116105
return len > 0;
117106
}
118107
}
119108

120-
if (value instanceof Map<?, ?>) {
121-
final var col = (Map<?, ?>) value;
122-
final var len = col.size();
109+
if (value instanceof final Map<?, ?> map) {
110+
final var len = map.size();
123111
if (len > max || len < min) {
124112
req.addViolation(message, propertyName);
125113
return len > 0;
@@ -154,35 +142,26 @@ public boolean validate(Object obj, ValidationRequest req, String propertyName)
154142
req.addViolation(message, propertyName);
155143
return false;
156144
}
157-
if (obj instanceof Date) {
158-
final Date date = (Date) obj;
145+
if (obj instanceof final Date date) {
159146
if (date.before(Date.from(Instant.now()))) {
160147
req.addViolation(message, propertyName);
161148
return false;
162149
}
163-
} else if (obj instanceof TemporalAccessor) {
164-
165-
final TemporalAccessor temporalAccessor = (TemporalAccessor) obj;
166-
if (temporalAccessor instanceof Instant
167-
&& Instant.from(temporalAccessor).isBefore(Instant.now())
168-
|| temporalAccessor instanceof LocalDate
169-
&& LocalDate.from(temporalAccessor).isBefore(LocalDate.now())
170-
|| temporalAccessor instanceof LocalDateTime
171-
&& LocalDateTime.from(temporalAccessor).isBefore(LocalDateTime.now())
172-
|| temporalAccessor instanceof LocalTime
173-
&& LocalTime.from(temporalAccessor).isBefore(LocalTime.now())
174-
|| temporalAccessor instanceof ZonedDateTime
175-
&& ZonedDateTime.from(temporalAccessor).isBefore(ZonedDateTime.now())
176-
|| temporalAccessor instanceof OffsetDateTime
177-
&& OffsetDateTime.from(temporalAccessor).isBefore(OffsetDateTime.now())
178-
|| temporalAccessor instanceof OffsetTime
179-
&& OffsetTime.from(temporalAccessor).isBefore(OffsetTime.now())
180-
|| temporalAccessor instanceof Year && Year.from(temporalAccessor).isBefore(Year.now())
181-
|| temporalAccessor instanceof YearMonth
182-
&& YearMonth.from(temporalAccessor).isBefore(YearMonth.now())) {
183-
req.addViolation(message, propertyName);
184-
return false;
185-
}
150+
} else if (obj instanceof final TemporalAccessor temporalAccessor
151+
&& (temporalAccessor instanceof final Instant ins && ins.isBefore(Instant.now())
152+
|| temporalAccessor instanceof final LocalDate ld && ld.isBefore(LocalDate.now())
153+
|| temporalAccessor instanceof final LocalDateTime ldt
154+
&& ldt.isBefore(LocalDateTime.now())
155+
|| temporalAccessor instanceof final LocalTime lt && lt.isBefore(LocalTime.now())
156+
|| temporalAccessor instanceof final ZonedDateTime zdt
157+
&& zdt.isBefore(ZonedDateTime.now())
158+
|| temporalAccessor instanceof final OffsetDateTime odt
159+
&& odt.isBefore(OffsetDateTime.now())
160+
|| temporalAccessor instanceof final OffsetTime ot && ot.isBefore(OffsetTime.now())
161+
|| temporalAccessor instanceof final Year y && y.isBefore(Year.now())
162+
|| temporalAccessor instanceof final YearMonth ym && ym.isBefore(YearMonth.now()))) {
163+
req.addViolation(message, propertyName);
164+
return false;
186165
}
187166
return true;
188167
}
@@ -203,33 +182,26 @@ public boolean validate(Object obj, ValidationRequest req, String propertyName)
203182
req.addViolation(message, propertyName);
204183
return false;
205184
}
206-
if (obj instanceof Date) {
207-
final Date date = (Date) obj;
185+
if (obj instanceof final Date date) {
208186
if (date.after(Date.from(Instant.now()))) {
209187
req.addViolation(message, propertyName);
210188
return false;
211189
}
212-
} else if (obj instanceof TemporalAccessor) {
213-
214-
final TemporalAccessor temporalAccessor = (TemporalAccessor) obj;
215-
if (temporalAccessor instanceof LocalDate
216-
&& LocalDate.from(temporalAccessor).isAfter(LocalDate.now())
217-
|| temporalAccessor instanceof LocalDateTime
218-
&& LocalDateTime.from(temporalAccessor).isAfter(LocalDateTime.now())
219-
|| temporalAccessor instanceof LocalTime
220-
&& LocalTime.from(temporalAccessor).isAfter(LocalTime.now())
221-
|| temporalAccessor instanceof ZonedDateTime
222-
&& ZonedDateTime.from(temporalAccessor).isAfter(ZonedDateTime.now())
223-
|| temporalAccessor instanceof OffsetDateTime
224-
&& OffsetDateTime.from(temporalAccessor).isAfter(OffsetDateTime.now())
225-
|| temporalAccessor instanceof OffsetTime
226-
&& OffsetTime.from(temporalAccessor).isAfter(OffsetTime.now())
227-
|| temporalAccessor instanceof Year && Year.from(temporalAccessor).isAfter(Year.now())
228-
|| temporalAccessor instanceof YearMonth
229-
&& YearMonth.from(temporalAccessor).isAfter(YearMonth.now())) {
230-
req.addViolation(message, propertyName);
231-
return false;
232-
}
190+
} else if (obj instanceof final TemporalAccessor temporalAccessor
191+
&& (temporalAccessor instanceof final Instant ins && ins.isAfter(Instant.now())
192+
|| temporalAccessor instanceof final LocalDate ld && ld.isAfter(LocalDate.now())
193+
|| temporalAccessor instanceof final LocalDateTime ldt
194+
&& ldt.isAfter(LocalDateTime.now())
195+
|| temporalAccessor instanceof final LocalTime lt && lt.isAfter(LocalTime.now())
196+
|| temporalAccessor instanceof final ZonedDateTime zdt
197+
&& zdt.isAfter(ZonedDateTime.now())
198+
|| temporalAccessor instanceof final OffsetDateTime odt
199+
&& odt.isAfter(OffsetDateTime.now())
200+
|| temporalAccessor instanceof final OffsetTime ot && ot.isAfter(OffsetTime.now())
201+
|| temporalAccessor instanceof final Year y && y.isAfter(Year.now())
202+
|| temporalAccessor instanceof final YearMonth ym && ym.isAfter(YearMonth.now()))) {
203+
req.addViolation(message, propertyName);
204+
return false;
233205
}
234206
return true;
235207
}

0 commit comments

Comments
 (0)