Skip to content

Commit ff2d0d1

Browse files
committed
using commons-validator for email address validation
1 parent e1d1c39 commit ff2d0d1

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed

core/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,11 @@
9191
<version>4.12</version>
9292
<scope>test</scope>
9393
</dependency>
94+
<dependency>
95+
<groupId>commons-validator</groupId>
96+
<artifactId>commons-validator</artifactId>
97+
<version>1.5.0</version>
98+
</dependency>
9499
<dependency>
95100
<groupId>org.mockito</groupId>
96101
<artifactId>mockito-core</artifactId>

core/src/main/java/org/everit/json/schema/internal/DefaultFormatValidator.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.util.Objects;
99
import java.util.Optional;
1010

11+
import org.apache.commons.validator.routines.EmailValidator;
1112
import org.everit.json.schema.Format;
1213
import org.everit.json.schema.FormatValidator;
1314

@@ -50,6 +51,13 @@ private Optional<String> checkDateTime(final String subject) {
5051
}
5152
}
5253

54+
private Optional<String> checkEmail(final String subject) {
55+
if (EmailValidator.getInstance(false, true).isValid(subject)) {
56+
return Optional.empty();
57+
}
58+
return Optional.of(String.format("[%s] is not a valid email address", subject));
59+
}
60+
5361
private Optional<String> checkHostname(final String subject) {
5462
try {
5563
InternetDomainName.from(subject);
@@ -90,6 +98,8 @@ public Optional<String> validate(final String subject, final Format format) {
9098
return checkURI(subject);
9199
case DATE_TIME:
92100
return checkDateTime(subject);
101+
case EMAIL:
102+
return checkEmail(subject);
93103
default:
94104
throw new IllegalArgumentException("unsupported format: " + format);
95105
}

core/src/test/java/org/everit/json/schema/internal/DefaultFormatValidatorTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.Optional;
44

5+
import org.apache.commons.validator.routines.EmailValidator;
56
import org.everit.json.schema.Format;
67
import org.junit.Assert;
78
import org.junit.Test;
@@ -46,6 +47,18 @@ public void dateTimeZSuccess() {
4647
assertSuccess("2015-02-30T11:00:00Z", Format.DATE_TIME);
4748
}
4849

50+
@Test
51+
public void emailFailure() {
52+
assertFailure("[email protected]", Format.EMAIL, "[[email protected]] is not a valid email address");
53+
}
54+
55+
@Test
56+
public void emailSuccess() {
57+
assertSuccess("[email protected]", Format.EMAIL);
58+
Assert.assertTrue(EmailValidator.getInstance().isValid("[email protected]"));
59+
Assert.assertFalse(EmailValidator.getInstance().isValid("[email protected]"));
60+
}
61+
4962
@Test
5063
public void hostnameLengthFailure() {
5164
StringBuilder sb = new StringBuilder();

0 commit comments

Comments
 (0)