package org.openstack.atlas.api.mgmt.validation.validators; import org.openstack.atlas.docs.loadbalancers.api.management.v1.LoadBalancers; import org.openstack.atlas.api.mgmt.validation.contexts.ReassignHostContext; 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; public class LoadBalancersValidator implements ResourceValidator<LoadBalancers> { private final Validator<LoadBalancers> validator; public LoadBalancersValidator() { validator = build(new ValidatorBuilder<LoadBalancers>(LoadBalancers.class) { { // PUT EXPECTATIONS result(validationTarget().getLoadBalancers()).must().exist().forContext(ReassignHostContext.REASSIGN_HOST).withMessage("Must provide valid load balancers."); result(validationTarget().getLoadBalancers()).if_().exist().then().must().haveSizeOfAtLeast(1).withMessage("Must provide atleast one load balancer."); result(validationTarget().getLoadBalancers()).if_().exist().then().must().delegateTo(new LoadBalancerValidator().getValidator(), ReassignHostContext.REASSIGN_HOST); } }); } @Override public ValidatorResult validate(LoadBalancers lbs, Object httpRequestType) { ValidatorResult result = validator.validate(lbs, httpRequestType); return ValidatorUtilities.removeEmptyMessages(result); } @Override public Validator<LoadBalancers> getValidator() { return validator; } }