package com.clouck.validator; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import com.amazonaws.AmazonServiceException; import com.clouck.service.AwsService; import com.clouck.webapp.form.AccountForm; public class ValidAccessKeyValidator implements ConstraintValidator<ValidAccessKey, AccountForm> { private static final Logger log = LoggerFactory.getLogger(ValidAccessKeyValidator.class); @Autowired private AwsService awsService; @Override public void initialize(ValidAccessKey constraintAnnotation) { } @Override public boolean isValid(AccountForm value, ConstraintValidatorContext context) { // its not this valids job to validate empty if (value == null || StringUtils.isEmpty(value.getAccessKeyId()) || StringUtils.isEmpty(value.getSecretAccessKey())) { return true; } String accessKeyId = value.getAccessKeyId(); String secretAccessKey = value.getSecretAccessKey(); try { String accountNumber = awsService.findUserId(accessKeyId, secretAccessKey); } catch (AmazonServiceException ex) { if (ex.getStatusCode() == 403 && ex.getErrorCode().equals("InvalidClientTokenId")) { return false; } } return true; } }