/*_########################################################################## _## _## 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 Inet6AddressStringValidator extends FieldValidatorSupport { private static final Pattern INET6_ADDRESS_PATTERN = Pattern.compile("[0-9a-fA-F.:]+"); 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 (!inetAddrStr.contains(":")) { return false; } if (!INET6_ADDRESS_PATTERN.matcher(inetAddrStr).matches()) { return false; } try { InetAddress.getByName(inetAddrStr); } catch (Exception e) { return false; } return true; } }