package tc.oc.pgm.xml.parser; import javax.annotation.Nullable; import com.google.common.reflect.TypeToken; import tc.oc.pgm.xml.InvalidXMLException; import tc.oc.pgm.xml.Node; public abstract class TransfiniteParser<T> extends PrimitiveParser<T> { protected TransfiniteParser(@Nullable TypeToken<T> type) { super(type); } protected TransfiniteParser() {} protected abstract T infinity(boolean sign); protected abstract T parseFinite(Node node, String text) throws FormatException, InvalidXMLException; @Override public T parseInternal(Node node, String text) throws FormatException, InvalidXMLException { if("oo".equals(text)) { return infinity(true); } else if("-oo".equals(text)) { return infinity(false); } else { return parseFinite(node, text); } } }