package org.jfrog.hudson.util;
import com.google.common.base.Strings;
import hudson.Util;
import hudson.util.FormValidation;
import org.apache.commons.lang.StringUtils;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Utility class for form validations.
*
* @author Yossi Shaul
*/
public abstract class FormValidations {
private static final Pattern VALID_EMAIL_PATTERN = Pattern.compile(
"^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*((\\.[A-Za-z]{2,}){1}$)",
Pattern.CASE_INSENSITIVE);
/**
* Validates a space separated list of emails.
*
* @param emails Space separated list of emails
* @return {@link hudson.util.FormValidation.ok()} if valid or empty, error otherwise
*/
public static FormValidation validateEmails(String emails) {
if (!Strings.isNullOrEmpty(emails)) {
String[] recipients = StringUtils.split(emails, " ");
for (String email : recipients) {
FormValidation validation = validateInternetAddress(email);
if (validation != FormValidation.ok()) {
return validation;
}
}
}
return FormValidation.ok();
}
/**
* Validates an internet address (url, email address, etc.).
*
* @param address The address to validate
* @return {@link hudson.util.FormValidation.ok()} if valid or empty, error otherwise
*/
public static FormValidation validateInternetAddress(String address) {
if (Strings.isNullOrEmpty(address)) {
return FormValidation.ok();
}
Matcher matcher = VALID_EMAIL_PATTERN.matcher(address);
if (matcher.matches()) {
return FormValidation.ok();
} else {
return FormValidation.error("Email address is invalid");
}
}
/**
* Validate the Combination filter field in Multi configuration jobs
*/
public static FormValidation validateArtifactoryCombinationFilter(String value)
throws IOException, InterruptedException {
String url = Util.fixEmptyAndTrim(value);
if (url == null)
return FormValidation.error("Mandatory field - You don`t have any deploy matches");
return FormValidation.ok();
}
}