paramMap;*/
+ private static final EmailValidator emailValidator = EmailValidator.getInstance();
+
+ private static boolean isMailAddressInDomain(String emailAddress, String domain) {
+ String[] addressParts = emailAddress.split("@");
+ return addressParts[addressParts.length - 1].equals(domain);
+ }
public static JSONObject buildParameter(String domain, Boolean externalEmail,
JSONObject jsonObject) {
builder = new StringBuilder();
-
normalizeSpace = jsonObject.getString(Key.VALUE.getValue()).trim();
-
params = Arrays.asList(normalizeSpace.split(" "));
- String domainRegEx = Regex.Domain.DOMAIN_PATTERN
- .replace(Regex.Domain.DOMAIN_NAME, domain);
-
if (!params.isEmpty()) {
for (String s : params) {
-
- if (Pattern.matches(Regex.EMAIL_PATTERN, s)) {
+ if (emailValidator.isValid(s)) {
if (!externalEmail) {
-
- if (Pattern.matches(domainRegEx, s)
- && Pattern.matches(Regex.EMAIL_PATTERN, s)) {
+ if (isMailAddressInDomain(s, domain)) {
builder.append(s).append(" ");
} else {
jsonObject.put(Key.IS_VALID.getValue(), false);
@@ -45,169 +42,102 @@ public static JSONObject buildParameter(String domain, Boolean externalEmail,
return jsonObject;
}
} else {
-
builder.append(s).append(" ");
}
} else if (!s.isEmpty()) {
- if (!externalEmail) {
-
- if (Pattern.matches(domainRegEx, (s + "@" + domain))) {
-
- builder.append(s).append("@").append(domain).append(" ");
-
- } else {
- jsonObject.put(Key.IS_VALID.getValue(), false);
- jsonObject.put(Key.ERROR.getValue(),
- "Invalid email for parameter [" + jsonObject.getString("name")
- + "] expected domain : @" + domain + " specified: " + s);
- return jsonObject;
- }
+ if (emailValidator.isValid(s + "@" + domain)) {
+ builder.append(s).append("@").append(domain).append(" ");
} else {
-
- if (Pattern.matches(Regex.EMAIL_PATTERN, (s + "@" + domain))) {
-
- builder.append(s).append("@").append(domain).append(" ");
-
+ jsonObject.put(Key.IS_VALID.getValue(), false);
+ if(!externalEmail) {
+ jsonObject.put(Key.ERROR.getValue(),
+ "Invalid email for parameter [" + jsonObject.getString("name")
+ + "] expected domain : @" + domain + " specified: " + s);
} else {
- jsonObject.put(Key.IS_VALID.getValue(), false);
jsonObject.put(Key.ERROR.getValue(),
- "Invalid email for parameter [" + jsonObject.getString("name")
- + "] Value entered does not match "
- + "email pattern; specified: " + s);
- return jsonObject;
+ "Invalid email for parameter [" + jsonObject.getString("name")
+ + "] Value entered does not match "
+ + "email pattern; specified: " + s);
}
+ return jsonObject;
}
- } else if (s.isEmpty()) {
-
- jsonObject.put(Key.IS_VALID.getValue(), false);
- jsonObject.put(Key.ERROR.getValue(),
- "Invalid email for parameter [ " + jsonObject.getString("name")
- + " ] Expected domain : @" + domain + " Specified: [ Email is Empty! ]");
- return jsonObject;
} else {
jsonObject.put(Key.IS_VALID.getValue(), false);
jsonObject.put(Key.ERROR.getValue(),
- "Value entered does not match email pattern; Expected domain : @" + domain
- + " Specified: " + s);
+ "Invalid email for parameter [ " + jsonObject.getString("name")
+ + " ] Expected domain : @" + domain
+ + " Specified: [ Email is Empty! ]");
return jsonObject;
}
-
}
-
jsonObject.replace(Key.VALUE.getValue(), String.valueOf(builder).trim());
- jsonObject.put(Key.IS_VALID.getValue(), true);
-
- return jsonObject;
- } else {
- jsonObject.put(Key.IS_VALID.getValue(), true);
- return jsonObject;
}
-
+ jsonObject.put(Key.IS_VALID.getValue(), true);
+ return jsonObject;
}
public static String definitionParameter(String defaultValue, String domain) {
builder = new StringBuilder();
-
normalizeSpace = defaultValue.trim();
-
params = Arrays.asList(normalizeSpace.split(" "));
if (!params.isEmpty()) {
for (String value : params) {
-
- if (Pattern.matches(Regex.EMAIL_PATTERN, value)) {
+ if (emailValidator.isValid(value)) {
builder.append(value).append(" ");
} else if (!value.isEmpty()) {
-
builder.append(value).append("@").append(domain).append(" ");
} else {
return defaultValue;
}
-
}
-
return String.valueOf(builder).trim();
} else {
-
return defaultValue;
-
}
-
}
public static FormValidation formParameter(String domain, String value, Boolean externalEmail) {
-
builder = new StringBuilder();
-
normalizeSpace = value.trim();
-
params = Arrays.asList(normalizeSpace.split(" "));
- String domainRegEx = Regex.Domain.DOMAIN_PATTERN
- .replace(Regex.Domain.DOMAIN_NAME, domain);
-
if (!params.isEmpty()) {
for (String s : params) {
-
- if (Pattern.matches(Regex.EMAIL_PATTERN, s)) {
-
+ if (emailValidator.isValid(s)) {
if (!externalEmail) {
-
- if (Pattern.matches(domainRegEx, s)
- && Pattern.matches(Regex.EMAIL_PATTERN, s)) {
+ if (isMailAddressInDomain(s, domain)) {
builder.append(s).append(" ");
} else {
- return FormValidation
- .error("Value entered does not match domain : " + s);
+ return FormValidation.error("Value entered does not match domain : " + s);
}
} else {
-
builder.append(s).append(" ");
}
} else if (!s.isEmpty()) {
- if (!externalEmail) {
-
- if (Pattern.matches(domainRegEx, (s + "@" + domain))) {
-
- builder.append(s).append("@").append(domain).append(" ");
-
- } else {
- return FormValidation
- .error("Value entered does not match domain : " + s);
- }
+ if (emailValidator.isValid(s + "@" + domain)) {
+ builder.append(s).append("@").append(domain).append(" ");
} else {
-
- if (Pattern.matches(Regex.EMAIL_PATTERN, (s + "@" + domain))) {
-
- builder.append(s).append("@").append(domain).append(" ");
-
+ if (!externalEmail) {
+ return FormValidation.error("Value entered does not match domain : " + s);
} else {
- return FormValidation
- .error("Value entered does not match email address pattern : " + s);
+ return FormValidation.error(
+ "Value entered does not match email address pattern : " + s);
}
}
-
- } else if (s.isEmpty()) {
- return FormValidation.warning("Email address is empty.");
} else {
- return FormValidation.error("Value entered does not match email pattern : " + s);
+ return FormValidation.warning("Email address is empty.");
}
-
}
-
return FormValidation.respond(FormValidation.Kind.OK,
"✅ Valid Email : "
+ builder + "
");
-
} else {
-
return FormValidation.respond(FormValidation.Kind.OK,
"✅ Valid Email : " + value
+ "
");
-
}
-
}
public enum Key {
@@ -217,7 +147,7 @@ public enum Key {
private final String value;
- private Key(String value) {
+ Key(String value) {
this.value = value;
}
diff --git a/src/test/java/io/jenkins/plugins/validation/emailparameter/EmailValidationTest.java b/src/test/java/io/jenkins/plugins/validation/emailparameter/EmailValidationTest.java
index bf4bfdf..a753546 100644
--- a/src/test/java/io/jenkins/plugins/validation/emailparameter/EmailValidationTest.java
+++ b/src/test/java/io/jenkins/plugins/validation/emailparameter/EmailValidationTest.java
@@ -1,14 +1,13 @@
package io.jenkins.plugins.validation.emailparameter;
-import io.jenkins.plugins.constant.Regex;
import io.jenkins.plugins.util.MockData;
import io.jenkins.plugins.util.ValidationUtils;
import lombok.extern.slf4j.Slf4j;
import org.junit.Before;
import org.junit.Test;
+import org.apache.commons.validator.routines.EmailValidator;
import java.util.Arrays;
-import java.util.regex.Pattern;
import static org.assertj.core.api.Assertions.assertThat;
@@ -43,7 +42,7 @@ public void emailValidationTest() {
private boolean accept(String param) {
- return Pattern.matches(Regex.EMAIL_PATTERN, param);
+ return EmailValidator.getInstance().isValid(param);
}