package org.openstack.atlas.api.mgmt.validation.validators;
import org.openstack.atlas.docs.loadbalancers.api.management.v1.Ticket;
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 TicketValidator implements ResourceValidator<Ticket> {
private final Validator<Ticket> validator;
public TicketValidator() {
validator = build(new ValidatorBuilder<Ticket>(Ticket.class) {
{
// SHARED EXPECTATIONS
result(validationTarget().getId()).must().not().exist().withMessage("Ticket id field cannot be modified.");
// POST EXPECTATIONS
result(validationTarget().getTicketId()).must().exist().forContext(POST).withMessage("Must provide a ticketId for the ticket.");
result(validationTarget().getTicketId()).must().not().beEmptyOrNull().forContext(POST).withMessage("Ticket id must not be empty.");
result(validationTarget().getComment()).must().exist().forContext(POST).withMessage("Must provide a comment for the ticket.");
result(validationTarget().getComment()).must().not().beEmptyOrNull().forContext(POST).withMessage("Ticket comment must not be empty.");
}
});
}
@Override
public ValidatorResult validate(Ticket ticket, Object requestType) {
ValidatorResult result = validator.validate(ticket, requestType);
return ValidatorUtilities.removeEmptyMessages(result);
}
@Override
public Validator<Ticket> getValidator() {
return validator;
}
}