Skip to content

Commit 0bbb5ee

Browse files
SentryManrbygrave
andauthored
Fix Duplicate Lombok adapter generation (#260)
* fix primitive noop * fix compilation error * avoid duplicate generation with lombok * Make NoOpValidator not public and final --------- Co-authored-by: Rob Bygrave <robin.bygrave@gmail.com>
1 parent a27dffe commit 0bbb5ee

File tree

4 files changed

+66
-5
lines changed

4 files changed

+66
-5
lines changed

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,11 @@ int genericTypeParamsCount() {
129129

130130
private boolean includeField(Element element) {
131131
return !element.getModifiers().contains(Modifier.TRANSIENT)
132-
&& (!element.getAnnotationMirrors().isEmpty() || element.asType().toString().contains("@"));
132+
&& (element.getAnnotationMirrors().stream()
133+
//filter lombok's suppress warnings and generated annotations
134+
.filter(m -> !m.toString().contains("@java"))
135+
.anyMatch(m -> !m.toString().contains("lombok"))
136+
|| element.asType().toString().contains("@"));
133137
}
134138

135139
private void readMethod(Element element, TypeElement type, List<FieldReader> localFields) {

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@
2525

2626
/** Builds and caches the ValidationAdapter adapters for DValidator. */
2727
final class CoreAdapterBuilder {
28-
@SuppressWarnings("rawtypes")
29-
public static final ValidationAdapter NOOP = (type, req, propertyName) -> true;
3028

3129
private static final Set<Class<?>> DEFAULT_GROUP = Set.of(Default.class);
3230
private final DValidator context;
@@ -106,7 +104,7 @@ <T> ValidationAdapter<T> buildAnnotation(
106104
}
107105
}
108106
// unknown annotations have noop
109-
return NOOP;
107+
return NoOpValidator.INSTANCE;
110108
}
111109

112110
record Request(

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ public <T> ValidationAdapter<T> adapter(Type type) {
164164
@Override
165165
@SuppressWarnings("unchecked")
166166
public <T> ValidationAdapter<T> noop() {
167-
return CoreAdapterBuilder.NOOP;
167+
return NoOpValidator.INSTANCE;
168168
}
169169

170170
@Override
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package io.avaje.validation.core;
2+
3+
import io.avaje.validation.adapter.ValidationAdapter;
4+
import io.avaje.validation.adapter.ValidationRequest;
5+
6+
final class NoOpValidator implements ValidationAdapter, ValidationAdapter.Primitive {
7+
8+
static final NoOpValidator INSTANCE = new NoOpValidator();
9+
10+
@Override
11+
public boolean validate(Object value, ValidationRequest req, String propertyName) {
12+
return true;
13+
}
14+
15+
@Override
16+
public Primitive primitive() {
17+
return this;
18+
}
19+
20+
@Override
21+
public boolean validate(boolean value, ValidationRequest req, String propertyName) {
22+
return true;
23+
}
24+
25+
@Override
26+
public boolean validate(byte value, ValidationRequest req, String propertyName) {
27+
return true;
28+
}
29+
30+
@Override
31+
public boolean validate(char value, ValidationRequest req, String propertyName) {
32+
return true;
33+
}
34+
35+
@Override
36+
public boolean validate(double value, ValidationRequest req, String propertyName) {
37+
return true;
38+
}
39+
40+
@Override
41+
public boolean validate(float value, ValidationRequest req, String propertyName) {
42+
return true;
43+
}
44+
45+
@Override
46+
public boolean validate(int value, ValidationRequest req, String propertyName) {
47+
return true;
48+
}
49+
50+
@Override
51+
public boolean validate(long value, ValidationRequest req, String propertyName) {
52+
return true;
53+
}
54+
55+
@Override
56+
public boolean validate(short value, ValidationRequest req, String propertyName) {
57+
return true;
58+
}
59+
}

0 commit comments

Comments
 (0)