package ameba.db.ebean.internal; import io.ebean.plugin.BeanType; import io.ebeaninternal.api.SpiExpressionValidation; import java.util.Set; /** * <p>ListExpressionValidation class.</p> * * @author icode * */ public class ListExpressionValidation extends SpiExpressionValidation { private final Set<String> blacklist; private final Set<String> whitelist; private final BeanType<?> desc; private boolean lastValid = true; /** * <p>Constructor for ListExpressionValidation.</p> * * @param desc a {@link io.ebean.plugin.BeanType} object. * @param whitelist a {@link java.util.Set} object. * @param blacklist a {@link java.util.Set} object. */ public ListExpressionValidation(BeanType<?> desc, Set<String> whitelist, Set<String> blacklist) { super(desc); this.blacklist = blacklist; this.whitelist = whitelist; this.desc = desc; } /** * <p>lastValid.</p> * * @return a boolean. */ public boolean lastValid() { return lastValid; } /** * {@inheritDoc} * * Validate that the property expression (path) is valid. */ public void validate(String propertyName) { if (whitelist != null && whitelist.contains(propertyName)) { lastValid = true; return; } if (blacklist != null && blacklist.contains(propertyName)) { lastValid = false; getUnknownProperties().add(propertyName); return; } lastValid = desc.isValidExpression(propertyName); super.validate(propertyName); } }