package pluginbase.config.annotation;
import pluginbase.config.field.Validator;
import pluginbase.config.field.Field;
import pluginbase.config.properties.Properties;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Used to define what {@link Validator} to use to validate the value of a class field before it
* is set via {@link Field#setValue(Object, Object)} which is utilized in {@link Properties} and Serializable-Config's
* fallback serializer.
*/
@Documented
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ValidateWith {
Class<? extends Validator> value();
}