Skip to content

Commit 0d4211b

Browse files
authored
Merge pull request #8 from SentryMan/hmm
refactor init and use size adapter
2 parents ffadf8b + 06647dd commit 0d4211b

15 files changed

+158
-103
lines changed

validator/src/main/java/io/avaje/validation/adapter/AnnotationValidationAdapter.java renamed to validator/src/main/java/io/avaje/validation/AnnotationValidationAdapter.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
1-
package io.avaje.validation.adapter;
1+
package io.avaje.validation;
22

33
import java.lang.reflect.Type;
44
import java.util.Map;
5-
import java.util.Objects;
65

7-
import io.avaje.validation.Validator;
6+
import io.avaje.validation.adapter.ValidationAdapter;
87
import io.avaje.validation.core.MessageInterpolator;
98

109
public interface AnnotationValidationAdapter<T> extends ValidationAdapter<T> {
1110

1211
//void validate(T type, ValidationRequest req);
1312

14-
default AnnotationValidationAdapter<T> init(Map<String, String> annotationValueMap) {
13+
default AnnotationValidationAdapter<T> init(Map<String, Object> annotationValueMap) {
1514
return this;
1615
}
1716

validator/src/main/java/io/avaje/validation/ConstraintViolation.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,10 @@ public String propertyName() {
2929
public String message() {
3030
return message;
3131
}
32+
33+
@Override
34+
public String toString() {
35+
36+
return message;
37+
}
3238
}

validator/src/main/java/io/avaje/validation/Validator.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
package io.avaje.validation;
22

3-
import io.avaje.validation.adapter.AnnotationValidationAdapter;
3+
import java.lang.annotation.Annotation;
4+
import java.lang.reflect.Type;
5+
import java.util.Iterator;
6+
import java.util.Map;
7+
import java.util.ServiceLoader;
8+
49
import io.avaje.validation.adapter.CoreValidation;
510
import io.avaje.validation.adapter.ValidationAdapter;
611
import io.avaje.validation.adapter.ValidatorComponent;
712
import io.avaje.validation.core.DefaultBootstrap;
813
import io.avaje.validation.spi.Bootstrap;
914

10-
import java.lang.annotation.Annotation;
11-
import java.lang.reflect.Type;
12-
import java.util.Iterator;
13-
import java.util.ServiceLoader;
14-
1515
public interface Validator {
1616

1717
void validate(Object any) throws ConstraintViolationException;
@@ -29,7 +29,7 @@ static Builder builder() {
2929

3030
<T> ValidationAdapter<T> adapter(Type type);
3131

32-
<T> AnnotationValidationAdapter<T> annotationAdapter(Class<? extends Annotation> cls);
32+
<T> AnnotationValidationAdapter<T> annotationAdapter(Class<? extends Annotation> cls, Map<String, Object> annotationAttributes);
3333

3434
CoreValidation core();
3535

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
package io.avaje.validation.adapter;
22

3-
import java.util.Collection;
4-
53
public interface CoreValidation {
64

75
/** Return true to continue validation on this value if needed */
86
boolean required(Object value, ValidationRequest ctx, String propertyName);
9-
10-
boolean collection(ValidationRequest ctx, String propertyName, Collection<?> collection, int minSize, int maxSize);
117
}

validator/src/main/java/io/avaje/validation/adapter/ValidationAdapter.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package io.avaje.validation.adapter;
1717

18+
import io.avaje.validation.AnnotationValidationAdapter;
1819
import io.avaje.validation.Validator;
1920

2021
import java.lang.reflect.Type;
@@ -44,6 +45,20 @@ default boolean validateAll(Collection<T> value, ValidationRequest req, String p
4445
return true;
4546
}
4647

48+
default boolean validateAll(T[] value, ValidationRequest req, String propertName) {
49+
if (propertName != null) {
50+
req.pushPath(propertName);
51+
}
52+
int index = -1;
53+
for (T element : value) {
54+
validate(element, req, String.valueOf(++index));
55+
}
56+
if (propertName != null) {
57+
req.popPath();
58+
}
59+
return true;
60+
}
61+
4762
default AnnotationValidationAdapter<T> andThen(ValidationAdapter<? super T> after) {
4863
Objects.requireNonNull(after);
4964
return (value, req, propertyName) -> {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import java.util.Map;
2323
import java.util.concurrent.ConcurrentHashMap;
2424

25-
import io.avaje.validation.adapter.AnnotationValidationAdapter;
25+
import io.avaje.validation.AnnotationValidationAdapter;
2626
import io.avaje.validation.adapter.ValidationAdapter;
2727

2828
/** Builds and caches the ValidationAdapter adapters for DValidator. */

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

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
import io.avaje.validation.adapter.CoreValidation;
44
import io.avaje.validation.adapter.ValidationRequest;
55

6-
import java.util.Collection;
7-
86
final class DCoreValidation implements CoreValidation {
97

108
@Override
@@ -15,23 +13,4 @@ public boolean required(Object value, ValidationRequest ctx, String propertyName
1513
}
1614
return true;
1715
}
18-
19-
@Override
20-
public boolean collection(ValidationRequest ctx, String propertyName, Collection<?> collection, int minSize, int maxSize) {
21-
if (collection == null) {
22-
if (minSize != -1) {
23-
ctx.addViolation("CollectionNull", propertyName);
24-
}
25-
return false;
26-
}
27-
final int size = collection.size();
28-
if (size < minSize) {
29-
ctx.addViolation("CollectionMinSize", propertyName);
30-
}
31-
if (maxSize > 0 && size > maxSize) {
32-
ctx.addViolation("CollectionMaxSize", propertyName);
33-
}
34-
// also validate the collection elements
35-
return size > 0;
36-
}
3716
}

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

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,17 @@
88
import java.lang.annotation.Annotation;
99
import java.lang.reflect.Type;
1010
import java.util.ArrayList;
11-
import java.util.Collection;
1211
import java.util.List;
1312
import java.util.Map;
1413
import java.util.ServiceLoader;
1514
import java.util.concurrent.ConcurrentHashMap;
1615

17-
import io.avaje.validation.adapter.AnnotationValidationAdapter;
18-
import io.avaje.validation.adapter.AnnotationValidationAdapter.Factory;
19-
import io.avaje.validation.adapter.CoreValidation;
20-
import io.avaje.validation.adapter.ValidationAdapter;
16+
import io.avaje.validation.AnnotationValidationAdapter;
17+
import io.avaje.validation.AnnotationValidationAdapter.Factory;
2118
import io.avaje.validation.ValidationType;
2219
import io.avaje.validation.Validator;
20+
import io.avaje.validation.adapter.CoreValidation;
21+
import io.avaje.validation.adapter.ValidationAdapter;
2322
import io.avaje.validation.adapter.ValidatorComponent;
2423

2524
/** Default implementation of Validator. */
@@ -77,9 +76,9 @@ public <T> ValidationAdapter<T> adapter(Class<T> cls) {
7776

7877
@Override
7978
public <T> AnnotationValidationAdapter<T> annotationAdapter(
80-
Class<? extends Annotation> cls) {
79+
Class<? extends Annotation> cls, Map<String, Object> annotationAttributes) {
8180

82-
return builder.annotationAdapter(cls);
81+
return builder.<T>annotationAdapter(cls).init(annotationAttributes);
8382
}
8483

8584
@Override

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
/** Default bootstrap of Validator. */
66
public final class DefaultBootstrap {
7+
private DefaultBootstrap() {}
78

89
/** Create the Validator.Builder. */
910
public static Validator.Builder builder() {

0 commit comments

Comments
 (0)