package org.openstack.atlas.api.mgmt.validation.validators;
import org.openstack.atlas.docs.loadbalancers.api.management.v1.LoadBalancer;
import org.openstack.atlas.docs.loadbalancers.api.management.v1.LoadBalancerLimitGroup;
import org.openstack.atlas.api.validation.validators.ResourceValidator;
import org.openstack.atlas.api.validation.validators.ValidatorUtilities;
import org.openstack.atlas.api.validation.Validator;
import org.openstack.atlas.api.validation.ValidatorBuilder;
import org.openstack.atlas.api.validation.results.ValidatorResult;
import static org.openstack.atlas.api.validation.ValidatorBuilder.build;
import static org.openstack.atlas.api.validation.context.HttpRequestType.POST;
public class LoadBalancerLimitGroupValidator implements ResourceValidator<LoadBalancerLimitGroup> {
private final Validator<LoadBalancerLimitGroup> validator;
public LoadBalancerLimitGroupValidator() {
validator = build(new ValidatorBuilder<LoadBalancerLimitGroup>(LoadBalancerLimitGroup.class) {
{
// POST EXPECTATIONS
result(validationTarget().getLimit()).must().exist().forContext(POST).withMessage("Must provide a limit for the load balancer limit group.");
result(validationTarget().getName()).must().exist().forContext(POST).withMessage("Must provide a name for the load balancer limit group.");
result(validationTarget().isIsDefault()).must().exist().forContext(POST).withMessage("Must provide the default value for the load balancer limit group.");
//Shared EXPECTATIONS
result(validationTarget().getId()).must().not().exist().withMessage("load balancer limit id not allowed for this request.");
result(validationTarget().getLimit()).if_().exist().then().must().not().beEmptyOrNull().withMessage("Must provide a limit for load balancer limit group update.");
result(validationTarget().getName()).if_().exist().then().must().not().beEmptyOrNull().withMessage("Must provide a name for load balancer limit group update.");
result(validationTarget().isIsDefault()).if_().exist().then().must().not().beEmptyOrNull().withMessage("Must provide the default value for load balancer limit group update.");
//PUT EXPECTATIONS
}
});
}
@Override
public ValidatorResult validate(LoadBalancerLimitGroup lb, Object httpRequestType) {
ValidatorResult result = validator.validate(lb, httpRequestType);
return ValidatorUtilities.removeEmptyMessages(result);
}
@Override
public Validator<LoadBalancerLimitGroup> getValidator() {
return validator;
}
}