package org.openstack.atlas.api.validation.validators; import org.openstack.atlas.docs.loadbalancers.api.v1.AccessList; import org.openstack.atlas.api.validation.context.NetworkItemContext; 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 AccessListValidator implements ResourceValidator<AccessList> { private final Validator<AccessList> validator; public AccessListValidator() { validator = build(new ValidatorBuilder<AccessList>(AccessList.class) { { // SHARED EXPECTATIONS result(validationTarget().getNetworkItems()).must().not().beEmptyOrNull().withMessage("Must provide at least one network item to the access list."); result(validationTarget().getNetworkItems()).if_().exist().then().must().cannotExceedSize(100).withMessage("Must not provide more than one hundred network items for the access list."); // FULL EXPECTATIONS result(validationTarget().getNetworkItems()).must().delegateTo(new NetworkItemValidator().getValidator(), NetworkItemContext.FULL); } }); } @Override public ValidatorResult validate(AccessList accessList, Object httpRequestType) { ValidatorResult result = validator.validate(accessList, httpRequestType); return ValidatorUtilities.removeEmptyMessages(result); } @Override public Validator<AccessList> getValidator() { return validator; } }