package org.tessell.model.validation.rules; import java.util.List; import org.tessell.model.properties.Property; /** Validates that a property is not-null. */ public class Required extends AbstractRule<Object> { public Required(final String message) { super(message); } public Required() { super(null); // will get by setProperty } @Override public void setProperty(Property<Object> property) { super.setProperty(property); property.setRequired(true); if (message == null) { message = property.getName() + " is required"; } } @Override protected boolean isValid() { final Object value = property.get(); if (value instanceof String) { // hack to treat empty strings as not entered return (value != null && ((String) value).length() > 0); } else if (value instanceof List) { // hack to require lists to be non-empty return (value != null && ((List<?>) value).size() > 0); } else { return value != null; } } }