package org.openstack.atlas.api.mgmt.validation.validators; import org.openstack.atlas.docs.loadbalancers.api.management.v1.Suspension; 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.context.HttpRequestType.POST; import static org.openstack.atlas.api.validation.ValidatorBuilder.build; public class LoadBalancerSuspensionValidator implements ResourceValidator<Suspension> { private final Validator<Suspension> validator; public LoadBalancerSuspensionValidator() { validator = build(new ValidatorBuilder<Suspension>(Suspension.class) { { // POST EXPECTATIONS result(validationTarget().getReason()).must().exist().forContext(POST).withMessage("Must provide a reason for suspension."); result(validationTarget().getTicket()).must().exist().forContext(POST).withMessage("Must provide a ticket."); result(validationTarget().getTicket()).must().delegateTo(new TicketValidator().getValidator(), POST).forContext(POST); result(validationTarget().getUser()).must().exist().forContext(POST).withMessage("Must provide the user name."); } }); } @Override public ValidatorResult validate(Suspension backup, Object httpRequestType) { ValidatorResult result = validator.validate(backup, httpRequestType); return ValidatorUtilities.removeEmptyMessages(result); } @Override public Validator<Suspension> getValidator() { return validator; } }