Skip to content

Move Classes to adapter package / String Core Adapter Factory Switch #12

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
May 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions validator/src/main/java/io/avaje/validation/Validator.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import java.util.Map;
import java.util.ServiceLoader;

import io.avaje.validation.adapter.AnnotationValidationAdapter;
import io.avaje.validation.adapter.CoreValidation;
import io.avaje.validation.adapter.ValidationAdapter;
import io.avaje.validation.adapter.ValidatorComponent;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package io.avaje.validation;
package io.avaje.validation.adapter;

import java.lang.reflect.Type;
import java.lang.annotation.Annotation;
import java.util.Map;

import io.avaje.validation.adapter.ValidationAdapter;
import io.avaje.validation.Validator;
import io.avaje.validation.core.MessageInterpolator;

public interface AnnotationValidationAdapter<T> extends ValidationAdapter<T> {
Expand All @@ -23,6 +23,6 @@ public interface Factory {
* <p>Returning null means that the adapter could be created by another factory.
*/
AnnotationValidationAdapter<?> create(
Type annotationType, Validator context, MessageInterpolator interpolator);
Class<? extends Annotation> annotationType, Validator context, MessageInterpolator interpolator);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
*/
package io.avaje.validation.adapter;

import io.avaje.validation.AnnotationValidationAdapter;
import io.avaje.validation.Validator;

import java.lang.reflect.Type;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import io.avaje.validation.AnnotationValidationAdapter;
import io.avaje.validation.adapter.AnnotationValidationAdapter;
import io.avaje.validation.adapter.ValidationAdapter;

/** Builds and caches the ValidationAdapter adapters for DValidator. */
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package io.avaje.validation.core;

import io.avaje.validation.adapter.ValidationAdapter;
import io.avaje.validation.ValidationType;
import io.avaje.validation.adapter.ValidationRequest;

import java.lang.reflect.Type;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,12 @@
import java.util.ServiceLoader;
import java.util.concurrent.ConcurrentHashMap;

import io.avaje.validation.AnnotationValidationAdapter;
import io.avaje.validation.AnnotationValidationAdapter.Factory;
import io.avaje.validation.ValidationType;
import io.avaje.validation.Validator;
import io.avaje.validation.adapter.AnnotationValidationAdapter;
import io.avaje.validation.adapter.CoreValidation;
import io.avaje.validation.adapter.ValidationAdapter;
import io.avaje.validation.adapter.ValidatorComponent;
import io.avaje.validation.adapter.AnnotationValidationAdapter.Factory;

/** Default implementation of Validator. */
final class DValidator implements Validator {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,27 +26,30 @@
import java.util.Map;
import java.util.function.Predicate;

import io.avaje.validation.AnnotationValidationAdapter;
import io.avaje.validation.adapter.AnnotationValidationAdapter;
import io.avaje.validation.adapter.ValidationRequest;
import jakarta.validation.constraints.AssertTrue;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Past;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Pattern.Flag;
import jakarta.validation.constraints.Size;

final class JakartaTypeAdapters {
private JakartaTypeAdapters() {}

@SuppressWarnings({"unchecked", "rawtypes"})
static final AnnotationValidationAdapter.Factory FACTORY =
(annotationType, validator, interpolator) -> {
if (annotationType == AssertTrue.class) return new AssertTrueAdapter(interpolator);
if (annotationType == NotBlank.class) return new NotBlankAdapter(interpolator);
if (annotationType == Past.class) return new PastAdapter(interpolator);
if (annotationType == Pattern.class) return new PatternAdapter(interpolator);
if (annotationType == Size.class) return new SizeAdapter(interpolator);
return null;
switch (annotationType.getSimpleName()) {
case "AssertTrue":
return new AssertTrueAdapter(interpolator);
case "NotBlank":
return new NotBlankAdapter(interpolator);
case "Past":
return new PastAdapter(interpolator);
case "Pattern":
return new PatternAdapter(interpolator);
case "Size":
return new SizeAdapter(interpolator);
default:
return null;
}
};

private static final class PatternAdapter implements AnnotationValidationAdapter<CharSequence> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.avaje.validation.core;

import io.avaje.validation.AnnotationValidationAdapter;
import io.avaje.validation.adapter.AnnotationValidationAdapter;
import io.avaje.validation.adapter.ValidationRequest;

public class NoopAnnotationValidator<T> implements AnnotationValidationAdapter<T> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
package io.avaje.validation;
package io.avaje.validation.core;

import io.avaje.validation.ConstraintViolationException;

public interface ValidationType<T> {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import java.util.Map;

import io.avaje.validation.AnnotationValidationAdapter;
import io.avaje.validation.Validator;
import io.avaje.validation.adapter.AnnotationValidationAdapter;
import io.avaje.validation.adapter.ValidationAdapter;
import io.avaje.validation.adapter.ValidationRequest;
import jakarta.validation.constraints.NotBlank;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import java.util.Map;

import io.avaje.validation.AnnotationValidationAdapter;
import io.avaje.validation.Validator;
import io.avaje.validation.adapter.AnnotationValidationAdapter;
import io.avaje.validation.adapter.ValidationAdapter;
import io.avaje.validation.adapter.ValidationRequest;
import jakarta.validation.constraints.NotBlank;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import java.util.Map;

import io.avaje.validation.Validator;
import io.avaje.validation.adapter.CoreValidation;
import io.avaje.validation.adapter.ValidationAdapter;
import io.avaje.validation.adapter.ValidationRequest;
import jakarta.validation.constraints.AssertTrue;
Expand All @@ -19,10 +20,13 @@ public final class CustomerValidationAdapter implements ValidationAdapter<Custom
private final ValidationAdapter<Object> activeDateAdapter;
private final ValidationAdapter<List<Contact>> contactsValidator;

private final CoreValidation core;

private final ValidationAdapter<Address> addressValidator;
private final ValidationAdapter<Contact> contactValidator;

public CustomerValidationAdapter(Validator validator) {
this.core = validator.core();
this.activeAdapter =
validator.<Boolean>annotationAdapter(AssertTrue.class, Map.of("message", "not true"));

Expand Down