Skip to content

Commit ad52bce

Browse files
authored
warn on no constraints (#334)
1 parent bc15f42 commit ad52bce

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ List<FieldReader> allFields() {
6565
return allFields;
6666
}
6767

68+
boolean hasConstraint() {
69+
return !allFields.isEmpty();
70+
}
71+
6872
@Override
6973
public boolean nonAccessibleField() {
7074
return nonAccessibleField;

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

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import static io.avaje.validation.generator.APContext.asTypeElement;
44
import static io.avaje.validation.generator.APContext.logError;
5+
import static io.avaje.validation.generator.APContext.logWarn;
56
import static io.avaje.validation.generator.APContext.typeElement;
67
import static io.avaje.validation.generator.ProcessingContext.createMetaInfWriterFor;
78
import static java.util.stream.Collectors.joining;
@@ -344,19 +345,24 @@ private void writeAdapter(TypeElement typeElement, BeanReader beanReader) {
344345
// payloads should be validated - ignore this one
345346
return;
346347
}
347-
processedAnything = true;
348348
beanReader.read();
349349
if (beanReader.nonAccessibleField()) {
350350
if (beanReader.hasValidationAnnotation()) {
351-
logError("Error ValidationAdapter due to nonAccessibleField for %s ", beanReader);
351+
logError(typeElement, "Error ValidationAdapter due to nonAccessibleField for %s ", beanReader);
352352
}
353353
return;
354354
}
355+
355356
try {
356357
final SimpleAdapterWriter beanWriter = new SimpleAdapterWriter(beanReader);
357-
if (beanReader instanceof ClassReader) {
358+
if (beanReader instanceof ClassReader cr) {
359+
if (!cr.hasConstraint()) {
360+
logNoConstraint(beanReader, cr);
361+
return;
362+
}
358363
writeMeta(typeElement, beanReader, beanWriter);
359364
}
365+
processedAnything = true;
360366
beanWriter.write();
361367
allReaders.add(beanReader);
362368
sourceTypes.add(typeElement.getSimpleName().toString());
@@ -365,6 +371,11 @@ private void writeAdapter(TypeElement typeElement, BeanReader beanReader) {
365371
}
366372
}
367373

374+
private void logNoConstraint(BeanReader beanReader, ClassReader cr) {
375+
if (!ControllerPrism.isPresent(cr.beanType()) || !PathPrism.isPresent(cr.beanType()))
376+
logWarn(cr.beanType(), "No Constraints Defined", beanReader);
377+
}
378+
368379
private void writeMeta(
369380
TypeElement typeElement, BeanReader beanReader, final SimpleAdapterWriter beanWriter) {
370381
if (beanReader.isPkgPrivate()) {

validator-generator/src/main/java/io/avaje/validation/generator/package-info.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@GeneratePrism(io.avaje.http.api.Controller.class)
2+
@GeneratePrism(io.avaje.http.api.Path.class)
13
@GeneratePrism(io.avaje.validation.adapter.ConstraintAdapter.class)
24
@GeneratePrism(io.avaje.validation.ImportValidPojo.class)
35
@GeneratePrism(io.avaje.validation.ValidSubTypes.class)

0 commit comments

Comments
 (0)