Merge pull request #10 from JavaWebStack/dev · JavaWebStack/validator@ebe2ae2
@@ -2,8 +2,8 @@
2233import org.javawebstack.abstractdata.AbstractArray;
44import org.javawebstack.abstractdata.AbstractElement;
5-import org.javawebstack.abstractdata.AbstractMapper;
65import org.javawebstack.abstractdata.AbstractNull;
6+import org.javawebstack.abstractdata.mapper.Mapper;
77import org.javawebstack.abstractdata.mapper.MapperTypeSpec;
88import org.javawebstack.validator.rule.*;
99@@ -33,6 +33,7 @@ public class Validator {
3333registerRuleType("ipv6", IPv6AddressRule.Validator.class, IPv6AddressRule.class);
3434registerRuleType("int", IntegerRule.Validator.class, IntegerRule.class);
3535registerRuleType("integer", IntegerRule.Validator.class, IntegerRule.class);
36+registerRuleType("double", DoubleRule.Validator.class, DoubleRule.class);
3637registerRuleType("numeric", NumericRule.Validator.class, NumericRule.class);
3738registerRuleType("num", NumericRule.Validator.class, NumericRule.class);
3839registerRuleType("date", DateRule.Validator.class, DateRule.class);
@@ -44,8 +45,12 @@ public class Validator {
4445registerRuleType("email", EmailRule.Validator.class, EmailRule.class);
4546registerRuleType("regex", RegexRule.Validator.class, RegexRule.class);
4647registerRuleType("uuid", UUIDRule.Validator.class, UUIDRule.class);
48+registerRuleType("charset", CharsetRule.Validator.class, CharsetRule.class);
49+registerRuleType("word_count", WordCountRule.Validator.class, WordCountRule.class);
4750 }
485152+private final Map<String[], ValidationConfig> rules = new HashMap<>();
53+4954public static void registerRuleType(String name, Class<? extends ValidationRule> type, Class<? extends Annotation> annotationClass) {
5055if (!ruleAnnotationClasses.containsKey(type) && annotationClass != null)
5156ruleAnnotationClasses.put(type, annotationClass);
@@ -118,20 +123,18 @@ public static Validator getValidator(Class<?> type) {
118123return validator;
119124 }
120125121-public static <T> T map(ValidationContext context, Class<T> type, AbstractElement element, AbstractMapper mapper) {
126+public static <T> T map(ValidationContext context, Class<T> type, AbstractElement element, Mapper mapper) {
122127Validator validator = getValidator(type);
123128ValidationResult result = validator.validate(context, element);
124129if (!result.isValid())
125130throw new ValidationException(result);
126-return mapper.fromAbstract(element, type);
131+return mapper.map(element, type);
127132 }
128133129134public static <T> T map(ValidationContext context, Class<T> type, AbstractElement element) {
130-return map(context, type, element, new AbstractMapper());
135+return map(context, type, element, new Mapper());
131136 }
132137133-private final Map<String[], ValidationConfig> rules = new HashMap<>();
134-135138public Validator rule(String[] key, ValidationRule... rules) {
136139return rule(key, Arrays.asList(rules));
137140 }
@@ -321,7 +324,7 @@ private static Map<String[], ValidationConfig> getClassRules(Field field, Class<
321324return rules;
322325 }
323326if (type.equals(Double.class) || type.equals(Float.class)) {
324-rules.put(new String[0], new ValidationConfig(field, Collections.singletonList(new NumericRule.Validator())));
327+rules.put(new String[0], new ValidationConfig(field, Collections.singletonList(new DoubleRule.Validator(Double.MIN_VALUE, Double.MAX_VALUE))));
325328return rules;
326329 }
327330if (type.equals(UUID.class)) {