package org.openstack.atlas.api.validation.validators; import org.openstack.atlas.docs.loadbalancers.api.v1.PersistenceType; import org.openstack.atlas.docs.loadbalancers.api.v1.SessionPersistence; import org.openstack.atlas.api.validation.verifiers.MustBeInArray; import org.openstack.atlas.api.validation.Validator; import org.openstack.atlas.api.validation.ValidatorBuilder; import org.openstack.atlas.api.validation.results.ValidatorResult; import org.openstack.atlas.api.validation.verifiers.MustBeInArray; import static org.openstack.atlas.api.validation.ValidatorBuilder.build; public class SessionPersistenceValidator implements ResourceValidator<SessionPersistence> { private final Validator<SessionPersistence> validator; public SessionPersistenceValidator() { validator = build(new ValidatorBuilder<SessionPersistence>(SessionPersistence.class) { { // SHARED EXPECTATIONS result(validationTarget().getPersistenceType()).must().exist().withMessage("Must provide a persistence type."); result(validationTarget().getPersistenceType()).if_().exist().then().must().adhereTo(new MustBeInArray(PersistenceType.values())).withMessage("Persistence type is invalid. Please specify a valid persistence type."); } }); } @Override public ValidatorResult validate(SessionPersistence persistence, Object httpRequestType) { ValidatorResult result = validator.validate(persistence, httpRequestType); return ValidatorUtilities.removeEmptyMessages(result); } @Override public Validator<SessionPersistence> getValidator() { return validator; } }