Skip to content

Commit 2676363

Browse files
authored
Merge pull request #53 from avaje/feature/tidy
Tidy map.computeIfAbsent(), whitespace, format, javadoc
2 parents 0af1086 + 51fc6d6 commit 2676363

22 files changed

+70
-142
lines changed

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,9 @@ void setFullName(String fullName) {
4848
String fullName() {
4949
if (fullName == null) {
5050
final List<String> types = new ArrayList<>(allTypes);
51-
52-
for (final var adapter : annotationAdapters)
51+
for (final var adapter : annotationAdapters) {
5352
adapter.getQualifiedName().toString().transform(types::add);
54-
53+
}
5554
String topPackage = TopPackage.of(types);
5655
if (!topPackage.endsWith(".valid")) {
5756
topPackage += ".valid";

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

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,21 +42,17 @@ void read() {
4242
/** Read the existing JsonAdapters from the MetaData annotation of the generated component. */
4343
private void readMetaData(TypeElement moduleType) {
4444
for (final AnnotationMirror annotationMirror : moduleType.getAnnotationMirrors()) {
45-
4645
final MetaDataPrism metaData = MetaDataPrism.getInstance(annotationMirror);
4746
final FactoryPrism metaDataFactory = FactoryPrism.getInstance(annotationMirror);
48-
final AnnotationFactoryPrism metaDataAnnotationFactory =
49-
AnnotationFactoryPrism.getInstance(annotationMirror);
47+
final AnnotationFactoryPrism metaDataAnnotationFactory = AnnotationFactoryPrism.getInstance(annotationMirror);
5048

5149
if (metaData != null) {
52-
5350
metaData.value().stream().map(TypeMirror::toString).forEach(componentMetaData::add);
5451

5552
} else if (metaDataFactory != null) {
56-
5753
metaDataFactory.value().stream().map(TypeMirror::toString).forEach(componentMetaData::add);
58-
} else if (metaDataAnnotationFactory != null) {
5954

55+
} else if (metaDataAnnotationFactory != null) {
6056
metaDataAnnotationFactory.value().stream()
6157
.map(ProcessingContext::asElement)
6258
.forEach(componentMetaData::addAnnotationAdapter);

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
final class Constants {
44

5-
static final String META_INF_COMPONENT =
6-
"META-INF/services/io.avaje.validation.Validator$GeneratedComponent";
5+
static final String META_INF_COMPONENT = "META-INF/services/io.avaje.validation.Validator$GeneratedComponent";
76
public static final String VALID_SPI = "io.avaje.validation.spi.*";
87
public static final String VALIDATOR = "io.avaje.validation.Validator";
98
}

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

Lines changed: 7 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ final class FieldReader {
4040
this.element = element;
4141
if (element instanceof final ExecutableElement executableElement) {
4242
this.rawType = Util.trimAnnotations(executableElement.getReturnType().toString());
43-
4443
} else {
4544
this.rawType = Util.trimAnnotations(element.asType().toString());
4645
}
@@ -152,17 +151,14 @@ private void writeGetValue(Append writer, String suffix) {
152151
}
153152

154153
void writeValidate(Append writer) {
155-
156154
writer.append(" var _$%s = ", fieldName);
157155
writeGetValue(writer, ";");
158156
writer.eol();
159157
if (optionalValidation) {
160-
161158
writer.append(" if(_$%s != null) {", fieldName);
162159
}
163160
writer.append(" %s.validate(_$%s", adapterFieldName, fieldName);
164161
writer.append(", request, \"%s\");", fieldName);
165-
166162
if (optionalValidation) {
167163
writer.append(" }");
168164
}
@@ -179,70 +175,46 @@ public GenericType type() {
179175
}
180176

181177
public void writeConstructor(Append writer) {
182-
183178
writer.append(" this.%s = ", adapterFieldName).eol();
184179

185180
boolean first = true;
186181
for (final var a : annotations.entrySet()) {
187-
188182
if (first) {
189-
writer.append(
190-
" ctx.<%s>adapter(%s.class, %s)",
191-
PrimitiveUtil.wrap(genericType.shortType()), a.getKey().shortName(), a.getValue());
183+
writer.append(" ctx.<%s>adapter(%s.class, %s)", PrimitiveUtil.wrap(genericType.shortType()), a.getKey().shortName(), a.getValue());
192184
first = false;
193185
continue;
194186
}
195-
writer
196-
.eol()
197-
.append(
198-
" .andThen(ctx.adapter(%s.class,%s))",
199-
a.getKey().shortName(), a.getValue());
187+
writer.eol().append(" .andThen(ctx.adapter(%s.class,%s))", a.getKey().shortName(), a.getValue());
200188
}
201189
final var topType = genericType.topType();
202190
if (isBasicType(topType)) {
203-
204191
writer.append(";").eol();
205192
return;
206193
}
207194

208-
if ("java.util.List".equals(genericType.topType())
209-
|| "java.util.Set".equals(genericType.topType())) {
195+
if ("java.util.List".equals(genericType.topType()) || "java.util.Set".equals(genericType.topType())) {
210196
if (isBasicType(genericType.firstParamType())) {
211-
212197
writer.append(";").eol();
213198
return;
214199
}
200+
writer.eol().append(" .list(ctx, %s.class)", Util.shortName(genericType.firstParamType()));
215201

216-
writer
217-
.eol()
218-
.append(" .list(ctx, %s.class)", Util.shortName(genericType.firstParamType()));
219202
} else if ("java.util.Map".equals(genericType.topType())) {
220203
if (isBasicType(genericType.secondParamType())) {
221-
222204
writer.append(";").eol();
223205
return;
224206
}
207+
writer.eol().append(" .map(ctx, %s.class)", Util.shortName(genericType.secondParamType()));
225208

226-
writer
227-
.eol()
228-
.append(" .map(ctx, %s.class)", Util.shortName(genericType.secondParamType()));
229209
} else if (genericType.topType().contains("[]")) {
230210
if (isBasicType(topType)) {
231-
232211
writer.append(";").eol();
233212
return;
234213
}
214+
writer.eol().append(" .array(ctx, %s.class)", Util.shortName(genericType.topType().replace("[]", "")));
235215

236-
writer
237-
.eol()
238-
.append(
239-
" .array(ctx, %s.class)",
240-
Util.shortName(genericType.topType().replace("[]", "")));
241216
} else {
242-
writer
243-
.eol()
244-
.append(
245-
" .andThen(ctx.adapter(%s.class))", Util.shortName(genericType.topType()));
217+
writer.eol().append(" .andThen(ctx.adapter(%s.class))", Util.shortName(genericType.topType()));
246218
}
247219
writer.append(";").eol();
248220
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ GenericType parse() {
2222
final char ch = raw.charAt(i);
2323
processChar(ch);
2424
}
25-
2625
return stack.peek();
2726
}
2827

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

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,7 @@ private void readModule() {
6565
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment round) {
6666
readModule();
6767

68-
registerCustomAdapters(
69-
round.getElementsAnnotatedWith(element(AnnotationValidatorPrism.PRISM_TYPE)));
70-
68+
registerCustomAdapters(round.getElementsAnnotatedWith(element(AnnotationValidatorPrism.PRISM_TYPE)));
7169
writeAdapters(round.getElementsAnnotatedWith(element(ValidPojoPrism.PRISM_TYPE)));
7270

7371
Optional.ofNullable(element(ValidPrism.PRISM_TYPE))
@@ -87,11 +85,8 @@ public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment
8785
}
8886

8987
private void registerCustomAdapters(Set<? extends Element> elements) {
90-
9188
for (final var typeElement : ElementFilter.typesIn(elements)) {
92-
9389
AnnotationValidatorPrism.getInstanceOn(typeElement).value();
94-
9590
metaData.addAnnotationAdapter(typeElement);
9691
}
9792
}

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

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,7 @@ private void writeConstructor() {
6161
writer.append(" /**").eol();
6262
writer.append(" * Construct using Object for generic type parameters.").eol();
6363
writer.append(" */").eol();
64-
writer
65-
.append(" public %sValidationAdapter(ValidationContext ctx) {", adapterShortName)
66-
.eol();
64+
writer.append(" public %sValidationAdapter(ValidationContext ctx) {", adapterShortName).eol();
6765
writer.append(" this(ctx");
6866
for (int i = 0; i < genericParamsCount; i++) {
6967
writer.append(", Object.class");
@@ -83,9 +81,7 @@ private void writeClassEnd() {
8381

8482
private void writeClassStart() {
8583
writer.append("@Generated").eol();
86-
writer.append(
87-
"public final class %sValidationAdapter implements ValidationAdapter<%s> ",
88-
adapterShortName, beanReader.shortName());
84+
writer.append("public final class %sValidationAdapter implements ValidationAdapter<%s> ", adapterShortName, beanReader.shortName());
8985
writer.append("{").eol().eol();
9086
}
9187

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

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,12 @@ void read(TypeElement type) {
5656
}
5757

5858
for (final FieldReader localField : localFields) {
59-
6059
allFields.add(localField);
6160
allFieldMap.put(localField.fieldName(), localField);
6261
}
6362
}
6463

6564
private void readField(Element element, List<FieldReader> localFields) {
66-
6765
if (includeField(element)) {
6866
localFields.add(new FieldReader(element, genericTypeParams));
6967
}
@@ -86,7 +84,6 @@ private boolean includeField(Element element) {
8684
}
8785

8886
private void readMethod(Element element, TypeElement type, List<FieldReader> localFields) {
89-
9087
final ExecutableElement methodElement = (ExecutableElement) element;
9188
if (methodElement.getModifiers().contains(Modifier.PUBLIC)) {
9289
final List<? extends VariableElement> parameters = methodElement.getParameters();
@@ -119,12 +116,7 @@ private void matchFieldToGetter(FieldReader field) {
119116
&& !field.isPublicField()) {
120117
nonAccessibleField = true;
121118
if (hasJsonAnnotation) {
122-
logError(
123-
"Non accessible field "
124-
+ baseType
125-
+ " "
126-
+ field.fieldName()
127-
+ " with no matching getter?");
119+
logError("Non accessible field " + baseType + " " + field.fieldName() + " with no matching getter?");
128120
} else {
129121
logDebug("Non accessible field " + baseType + " " + field.fieldName());
130122
}

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,21 @@ public class ConstraintViolation {
1010
private final String propertyName;
1111
private final String message;
1212

13+
/**
14+
* Create the ConstraintViolation with the given path, property and message.
15+
*/
1316
public ConstraintViolation(String path, String propertyName, String message) {
1417
this.path = path;
1518
this.propertyName = propertyName;
1619
this.message = message;
1720
}
1821

19-
/** Return the path that this violation occurred for */
22+
/** Return the path for this constraint violation */
2023
public String path() {
2124
return path;
2225
}
2326

27+
/** Return the property name for this constraint violation */
2428
public String propertyName() {
2529
return propertyName;
2630
}
@@ -32,7 +36,6 @@ public String message() {
3236

3337
@Override
3438
public String toString() {
35-
3639
return message;
3740
}
3841
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,19 @@
22

33
import java.util.Set;
44

5+
/**
6+
* Exception holding a set of constraint violations.
7+
*/
58
public final class ConstraintViolationException extends RuntimeException {
69

710
private final Set<ConstraintViolation> violations;
811

12+
/** Create with the given constraint violations */
913
public ConstraintViolationException(Set<ConstraintViolation> violations) {
1014
this.violations = violations;
1115
}
1216

17+
/** Return the constraint violations. */
1318
public Set<ConstraintViolation> violations() {
1419
return violations;
1520
}

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,13 @@ interface Builder {
5252

5353
/**
5454
* Add ResourceBundle for error message interpolation
55-
*
56-
* @param bundleName the name of the bundleFiles
5755
*/
5856
Builder addResourceBundles(ResourceBundle... bundle);
5957

6058
/** Set Default Locale for this validator, if not set, will use Locale.getDefault() */
6159
Builder setDefaultLocale(Locale defaultLocale);
6260

63-
/** Adds an additional Locales for this validator */
61+
/** Adds additional Locales for this validator */
6462
Builder addLocales(Locale... locales);
6563

6664
/** Add a AdapterBuilder which provides a ValidationAdapter to use for the given type. */

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ default boolean validate(T value, ValidationRequest req) {
1414
return validate(value, req, null);
1515
}
1616

17+
@SuppressWarnings("unchecked")
1718
default ValidationAdapter<T> list(ValidationContext ctx, Class<?> clazz) {
1819
final var after = ctx.<Object>adapter(clazz);
1920
return (value, req, propertyName) -> {
@@ -24,6 +25,7 @@ default ValidationAdapter<T> list(ValidationContext ctx, Class<?> clazz) {
2425
};
2526
}
2627

28+
@SuppressWarnings("unchecked")
2729
default ValidationAdapter<T> map(ValidationContext ctx, Class<?> clazz) {
2830
final var after = ctx.<Object>adapter(clazz);
2931
return (value, req, propertyName) -> {

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44
import java.lang.reflect.Type;
55
import java.util.Map;
66

7-
import io.avaje.validation.adapter.ValidationContext.Message;
8-
7+
/**
8+
* Context available when validation adapters are being created.
9+
*/
910
public interface ValidationContext {
1011

1112
/**
Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,31 @@
11
package io.avaje.validation.adapter;
22

3+
/**
4+
* A validation request.
5+
*/
36
public interface ValidationRequest {
47

5-
void addViolation(ValidationContext.Message msg, String propertyName);
8+
/**
9+
* Add a constraint violation for the given property.
10+
*
11+
* @param message The message
12+
* @param propertyName The property that failed the constraint
13+
*/
14+
void addViolation(ValidationContext.Message message, String propertyName);
615

16+
/**
17+
* Push the nested path.
18+
*/
719
void pushPath(String path);
820

21+
/**
22+
* Pop the nested path.
23+
*/
924
void popPath();
1025

26+
/**
27+
* Throw ConstraintViolationException if there are violations for this request.
28+
*/
1129
void throwWithViolations();
1230

1331
}

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@ final class BasicMessageInterpolator implements MessageInterpolator {
66

77
@Override
88
public String interpolate(String template, Map<String, Object> attributes) {
9-
109
String result = template;
11-
1210
for (final Map.Entry<String, Object> entry : attributes.entrySet()) {
1311
// needs work here to improve functionality, support local specific value formatting eg
1412
// Duration Max

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,13 @@ <T> ValidationAdapter<T> build(Type type, Object cacheKey) {
5757
return result;
5858
}
5959
}
60-
throw new IllegalArgumentException(
61-
"No ValidationAdapter for " + type + ". Perhaps needs @ValidPojo or @ValidPojo.Import?");
60+
throw new IllegalArgumentException("No ValidationAdapter for " + type + ". Perhaps needs @ValidPojo or @ValidPojo.Import?");
6261
}
6362

6463
/** Build given type and annotations. */
6564
// TODO understand that lookup chain stuff
6665
@SuppressWarnings("unchecked")
6766
<T> ValidationAdapter<T> buildAnnotation(Class<? extends Annotation> cls, Map<String, Object> attributes) {
68-
6967
// Ask each factory to create the validation adapter.
7068
for (final ValidationContext.AnnotationFactory factory : annotationFactories) {
7169
final var result = (ValidationAdapter<T>) factory.create(cls, context, attributes);

0 commit comments

Comments
 (0)