30 lines
939 B
Java
30 lines
939 B
Java
package tc.oc.pgm.map;
|
|
|
|
import javax.inject.Inject;
|
|
import javax.inject.Provider;
|
|
|
|
import org.jdom2.Document;
|
|
import org.jdom2.Element;
|
|
import tc.oc.pgm.xml.InvalidXMLException;
|
|
import tc.oc.pgm.xml.parser.ElementParser;
|
|
|
|
/**
|
|
* Provides {@link T} by parsing the root {@link Element}
|
|
* of the {@link Document}, using an {@link ElementParser<T>}.
|
|
*/
|
|
public class RootElementParsingProvider<T> implements ParsingProvider<T> {
|
|
|
|
private final Provider<ElementParser<T>> parserProvider;
|
|
private final Provider<Document> documentProvider;
|
|
|
|
@Inject private RootElementParsingProvider(Provider<ElementParser<T>> parserProvider, Provider<Document> documentProvider) {
|
|
this.parserProvider = parserProvider;
|
|
this.documentProvider = documentProvider;
|
|
}
|
|
|
|
@Override
|
|
public T parse() throws InvalidXMLException {
|
|
return parserProvider.get().parseElement(documentProvider.get().getRootElement());
|
|
}
|
|
}
|