Skip to content

Commit eb026c1

Browse files
committed
Class level constraints
1 parent 61c5966 commit eb026c1

File tree

5 files changed

+21
-2
lines changed

5 files changed

+21
-2
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ static ElementAnnotationContainer create(Element element) {
5050

5151
final var annotations =
5252
element.getAnnotationMirrors().stream()
53+
.filter(m -> !hasValid && !ValidPrism.isInstance(m))
5354
.collect(
5455
toMap(
5556
a -> GenericType.parse(a.getAnnotationType().toString()),
@@ -95,4 +96,8 @@ public void addImports(Set<String> importTypes) {
9596
typeUse1.keySet().forEach(t -> t.addImports(importTypes));
9697
typeUse2.keySet().forEach(t -> t.addImports(importTypes));
9798
}
99+
100+
boolean isEmpty() {
101+
return annotations.isEmpty() && typeUse1.isEmpty() && typeUse2.isEmpty();
102+
}
98103
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,4 +175,8 @@ public void writeConstructor(Append writer) {
175175
public boolean isClassLvl() {
176176
return classLevel;
177177
}
178+
179+
public boolean hasAnnotations() {
180+
return !elementAnnotations.isEmpty();
181+
}
178182
}

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,10 @@ void read(TypeElement type) {
5858
}
5959
}
6060

61-
localFields.add(new FieldReader(type, genericTypeParams));
61+
final var classAdapter = new FieldReader(type, genericTypeParams);
62+
if (classAdapter.hasAnnotations()) {
63+
localFields.add(classAdapter);
64+
}
6265

6366
for (final FieldReader localField : localFields) {
6467
allFields.add(localField);

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.avaje.validation.generator;
22

3+
import javax.lang.model.element.AnnotationMirror;
34
import javax.lang.model.element.Element;
45

56
public interface ValidPrism {
@@ -10,4 +11,11 @@ static boolean isPresent(Element e) {
1011
|| JavaxValidPrism.isPresent(e)
1112
|| HttpValidPrism.isPresent(e);
1213
}
14+
15+
static boolean isInstance(AnnotationMirror e) {
16+
return AvajeValidPrism.getInstance(e) != null
17+
|| JakartaValidPrism.getInstance(e) != null
18+
|| JavaxValidPrism.getInstance(e) != null
19+
|| HttpValidPrism.getInstance(e) != null;
20+
}
1321
}

validator-generator/src/test/java/io/avaje/validation/generator/ValidatorProcessorTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import javax.tools.ToolProvider;
2323

2424
import org.junit.jupiter.api.AfterEach;
25-
import org.junit.jupiter.api.Disabled;
2625
import org.junit.jupiter.api.Test;
2726

2827
class ValidatorProcessorTest {

0 commit comments

Comments
 (0)