package tc.oc.parse.xml;
import javax.inject.Inject;
import com.google.common.reflect.TypeToken;
import org.w3c.dom.Node;
import tc.oc.parse.ParseException;
import tc.oc.parse.Parser;
/**
* A {@link NodeParser<T>} that applies {@link Parser<T>} to the result of {@link Node#getTextContent()}
*/
public class PrimitiveNodeParser<T> implements NodeParser<T> {
private final Parser<T> parser;
@Inject PrimitiveNodeParser(Parser<T> parser) {
this.parser = parser;
}
@Override
public TypeToken<T> paramToken() {
return parser.paramToken();
}
@Override
public T parse(Node node) throws ParseException {
return parser.parse(node.getTextContent());
}
}