package tc.oc.pgm.xml.property; import com.google.common.collect.Range; import org.jdom2.Element; import tc.oc.commons.core.util.Ranges; import tc.oc.pgm.xml.parser.PrimitiveParser; import tc.oc.pgm.xml.InvalidXMLException; public class ComparableProperty<T extends Comparable, Self extends ComparableProperty<T, Self>> extends PropertyBuilder<T, Self> { public ComparableProperty(Element parent, String name, PrimitiveParser<T> parser) { super(parent, name, parser); } public Self range(Range<T> range) { validate((value, node) -> { if(!range.contains(value)) { throw new InvalidXMLException("Value must be " + Ranges.describe(range), node); } }); return self(); } }