Skip to content
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
5 changes: 5 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@
<version>5.4.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
</dependencies>

<build>
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/org/javawebstack/validator/Validator.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,14 @@ public class Validator {
registerRuleType("ipv6", IPv6AddressRule.class);
registerRuleType("int", IntegerRule.class);
registerRuleType("integer", IntegerRule.class);
registerRuleType("numeric", NumericRule.class);
registerRuleType("date", DateRule.class);
registerRuleType("array", ArrayRule.class);
registerRuleType("list", ArrayRule.class);
registerRuleType("alpha", AlphaRule.class);
registerRuleType("alpha_num", AlphaNumRule.class);
registerRuleType("alpha_dash", AlphaDashRule.class);
registerRuleType("email", EmailRule.class);
}

public static void registerRuleType(String name, Class<? extends ValidationRule> type){
Expand Down
20 changes: 20 additions & 0 deletions src/main/java/org/javawebstack/validator/rule/AlphaDashRule.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package org.javawebstack.validator.rule;

import org.javawebstack.abstractdata.AbstractElement;
import org.javawebstack.validator.ValidationContext;

import java.lang.reflect.Field;

public class AlphaDashRule implements ValidationRule {
@Override
public String validate(ValidationContext context, Field field, AbstractElement value) {
if (value == null)
return null;

String pattern = "[A-Za-z0-9-_]*";
if (!value.string().matches(pattern))
return "Value must only contain alpha-numeric characters as well as dashes and underscores.";

return null;
}
}
20 changes: 20 additions & 0 deletions src/main/java/org/javawebstack/validator/rule/AlphaNumRule.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package org.javawebstack.validator.rule;

import org.javawebstack.abstractdata.AbstractElement;
import org.javawebstack.validator.ValidationContext;

import java.lang.reflect.Field;

public class AlphaNumRule implements ValidationRule {
@Override
public String validate(ValidationContext context, Field field, AbstractElement value) {
if (value == null)
return null;

String pattern = "[A-Za-z0-9]*";
if (!value.string().matches(pattern))
return "Value must only contain alpha-numeric characters.";

return null;
}
}
20 changes: 20 additions & 0 deletions src/main/java/org/javawebstack/validator/rule/AlphaRule.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package org.javawebstack.validator.rule;

import org.javawebstack.abstractdata.AbstractElement;
import org.javawebstack.validator.ValidationContext;

import java.lang.reflect.Field;

public class AlphaRule implements ValidationRule {
@Override
public String validate(ValidationContext context, Field field, AbstractElement value) {
if (value == null)
return null;

String pattern = "[A-Za-z]*";
if (!value.string().matches(pattern))
return "Value must only contain alphabetic characters.";

return null;
}
}
25 changes: 25 additions & 0 deletions src/main/java/org/javawebstack/validator/rule/EmailRule.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package org.javawebstack.validator.rule;

import org.javawebstack.abstractdata.AbstractElement;
import org.javawebstack.validator.ValidationContext;

import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import java.lang.reflect.Field;

public class EmailRule implements ValidationRule {
@Override
public String validate(ValidationContext context, Field field, AbstractElement value) {
if (value == null)
return null;

try {
InternetAddress emailAddr = new InternetAddress(value.string());
emailAddr.validate();
} catch (AddressException ex) {
return "Value is not a valid email address";
}

return null;
}
}
29 changes: 29 additions & 0 deletions src/main/java/org/javawebstack/validator/rule/NumericRule.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package org.javawebstack.validator.rule;

import org.javawebstack.abstractdata.AbstractElement;
import org.javawebstack.validator.ValidationContext;

import java.lang.reflect.Field;

public class NumericRule implements ValidationRule {
@Override
public String validate(ValidationContext context, Field field, AbstractElement value) {
if (value == null)
return null;

float v;
if (value.isNumber())
v = value.number().floatValue();
else if (value.isString()) {
try {
v = Float.parseFloat(value.string());
} catch(NumberFormatException ex) {
return "Not a numeric value";
}
} else {
return "Not a numeric value";
}

return null;
}
}
31 changes: 31 additions & 0 deletions src/test/java/test/org/javawebstack/validator/EmailRuleTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package test.org.javawebstack.validator;

import org.javawebstack.abstractdata.AbstractMapper;
import org.javawebstack.validator.Rule;
import org.javawebstack.validator.ValidationContext;
import org.javawebstack.validator.Validator;
import org.junit.jupiter.api.Test;

import java.util.Random;

import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;

public class EmailRuleTest {

@Test
public void testSimpleRequiredRule(){
Validator validator = Validator.getValidator(TestObject1.class);
TestObject1 test = new TestObject1();
test.email = "Test";
assertFalse(validator.validate(new ValidationContext(), new AbstractMapper().toAbstract(test)).isValid());
test.email = "info@test.de";
assertTrue(validator.validate(new ValidationContext(), new AbstractMapper().toAbstract(test)).isValid());
}

private static class TestObject1 {
@Rule("email")
String email;
}

}