/*_##########################################################################
_##
_## Copyright (C) 2013 Kaito Yamada
_##
_##########################################################################
*/
package com.github.kaitoy.sneo.giane.validator;
import java.net.InetAddress;
import java.util.regex.Pattern;
import com.opensymphony.xwork2.validator.ValidationException;
import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport;
public class Inet4AddressStringValidator extends FieldValidatorSupport {
private static final Pattern INET4_ADDRESS_PATTERN = Pattern.compile("[0-9]{1,3}(\\.[0-9]{1,3}){3}");
public void validate(Object object) throws ValidationException {
String validatingFieldName = getFieldName();
String inetAddrStr = (String)getFieldValue(validatingFieldName, object);
if (!isValid(inetAddrStr)) {
addFieldError(validatingFieldName, object);
}
}
public static boolean isValid(String inetAddrStr) {
if (!INET4_ADDRESS_PATTERN.matcher(inetAddrStr).matches()) {
return false;
}
try {
InetAddress.getByName(inetAddrStr);
} catch (Exception e) {
return false;
}
return true;
}
}