File tree Expand file tree Collapse file tree 8 files changed +155
-0
lines changed
main/java/org/javawebstack/validator
test/java/test/org/javawebstack/validator Expand file tree Collapse file tree 8 files changed +155
-0
lines changed Original file line number Diff line number Diff line change 3232 <version >5.4.2</version >
3333 <scope >test</scope >
3434 </dependency >
35+ <dependency >
36+ <groupId >com.sun.mail</groupId >
37+ <artifactId >javax.mail</artifactId >
38+ <version >1.6.2</version >
39+ </dependency >
3540 </dependencies >
3641
3742 <build >
Original file line number Diff line number Diff line change @@ -32,9 +32,14 @@ public class Validator {
3232 registerRuleType ("ipv6" , IPv6AddressRule .class );
3333 registerRuleType ("int" , IntegerRule .class );
3434 registerRuleType ("integer" , IntegerRule .class );
35+ registerRuleType ("numeric" , NumericRule .class );
3536 registerRuleType ("date" , DateRule .class );
3637 registerRuleType ("array" , ArrayRule .class );
3738 registerRuleType ("list" , ArrayRule .class );
39+ registerRuleType ("alpha" , AlphaRule .class );
40+ registerRuleType ("alpha_num" , AlphaNumRule .class );
41+ registerRuleType ("alpha_dash" , AlphaDashRule .class );
42+ registerRuleType ("email" , EmailRule .class );
3843 }
3944
4045 public static void registerRuleType (String name , Class <? extends ValidationRule > type ) {
Original file line number Diff line number Diff line change 1+ package org .javawebstack .validator .rule ;
2+
3+ import org .javawebstack .abstractdata .AbstractElement ;
4+ import org .javawebstack .validator .ValidationContext ;
5+
6+ import java .lang .reflect .Field ;
7+
8+ public class AlphaDashRule implements ValidationRule {
9+ @ Override
10+ public String validate (ValidationContext context , Field field , AbstractElement value ) {
11+ if (value == null )
12+ return null ;
13+
14+ String pattern = "[A-Za-z0-9-_]*" ;
15+ if (!value .string ().matches (pattern ))
16+ return "Value must only contain alpha-numeric characters as well as dashes and underscores." ;
17+
18+ return null ;
19+ }
20+ }
Original file line number Diff line number Diff line change 1+ package org .javawebstack .validator .rule ;
2+
3+ import org .javawebstack .abstractdata .AbstractElement ;
4+ import org .javawebstack .validator .ValidationContext ;
5+
6+ import java .lang .reflect .Field ;
7+
8+ public class AlphaNumRule implements ValidationRule {
9+ @ Override
10+ public String validate (ValidationContext context , Field field , AbstractElement value ) {
11+ if (value == null )
12+ return null ;
13+
14+ String pattern = "[A-Za-z0-9]*" ;
15+ if (!value .string ().matches (pattern ))
16+ return "Value must only contain alpha-numeric characters." ;
17+
18+ return null ;
19+ }
20+ }
Original file line number Diff line number Diff line change 1+ package org .javawebstack .validator .rule ;
2+
3+ import org .javawebstack .abstractdata .AbstractElement ;
4+ import org .javawebstack .validator .ValidationContext ;
5+
6+ import java .lang .reflect .Field ;
7+
8+ public class AlphaRule implements ValidationRule {
9+ @ Override
10+ public String validate (ValidationContext context , Field field , AbstractElement value ) {
11+ if (value == null )
12+ return null ;
13+
14+ String pattern = "[A-Za-z]*" ;
15+ if (!value .string ().matches (pattern ))
16+ return "Value must only contain alphabetic characters." ;
17+
18+ return null ;
19+ }
20+ }
Original file line number Diff line number Diff line change 1+ package org .javawebstack .validator .rule ;
2+
3+ import org .javawebstack .abstractdata .AbstractElement ;
4+ import org .javawebstack .validator .ValidationContext ;
5+
6+ import javax .mail .internet .AddressException ;
7+ import javax .mail .internet .InternetAddress ;
8+ import java .lang .reflect .Field ;
9+
10+ public class EmailRule implements ValidationRule {
11+ @ Override
12+ public String validate (ValidationContext context , Field field , AbstractElement value ) {
13+ if (value == null )
14+ return null ;
15+
16+ try {
17+ InternetAddress emailAddr = new InternetAddress (value .string ());
18+ emailAddr .validate ();
19+ } catch (AddressException ex ) {
20+ return "Value is not a valid email address" ;
21+ }
22+
23+ return null ;
24+ }
25+ }
Original file line number Diff line number Diff line change 1+ package org .javawebstack .validator .rule ;
2+
3+ import org .javawebstack .abstractdata .AbstractElement ;
4+ import org .javawebstack .validator .ValidationContext ;
5+
6+ import java .lang .reflect .Field ;
7+
8+ public class NumericRule implements ValidationRule {
9+ @ Override
10+ public String validate (ValidationContext context , Field field , AbstractElement value ) {
11+ if (value == null )
12+ return null ;
13+
14+ float v ;
15+ if (value .isNumber ())
16+ v = value .number ().floatValue ();
17+ else if (value .isString ()) {
18+ try {
19+ v = Float .parseFloat (value .string ());
20+ } catch (NumberFormatException ex ) {
21+ return "Not a numeric value" ;
22+ }
23+ } else {
24+ return "Not a numeric value" ;
25+ }
26+
27+ return null ;
28+ }
29+ }
Original file line number Diff line number Diff line change 1+ package test .org .javawebstack .validator ;
2+
3+ import org .javawebstack .abstractdata .AbstractMapper ;
4+ import org .javawebstack .validator .Rule ;
5+ import org .javawebstack .validator .ValidationContext ;
6+ import org .javawebstack .validator .Validator ;
7+ import org .junit .jupiter .api .Test ;
8+
9+ import java .util .Random ;
10+
11+ import static org .junit .jupiter .api .Assertions .assertFalse ;
12+ import static org .junit .jupiter .api .Assertions .assertTrue ;
13+
14+ public class EmailRuleTest {
15+
16+ @ Test
17+ public void testSimpleRequiredRule (){
18+ Validator validator = Validator .getValidator (TestObject1 .class );
19+ TestObject1 test = new TestObject1 ();
20+ test .email = "Test" ;
21+ assertFalse (validator .validate (new ValidationContext (), new AbstractMapper ().toAbstract (test )).isValid ());
22+ test .email = "info@test.de" ;
23+ assertTrue (validator .validate (new ValidationContext (), new AbstractMapper ().toAbstract (test )).isValid ());
24+ }
25+
26+ private static class TestObject1 {
27+ @ Rule ("email" )
28+ String email ;
29+ }
30+
31+ }
You can’t perform that action at this time.
0 commit comments