1.1 --- a/java/alt2xml-bin/src/cz/frantovo/alt2xml/SAXTovarna.java Thu Jun 05 23:45:24 2014 +0200
1.2 +++ b/java/alt2xml-bin/src/cz/frantovo/alt2xml/SAXTovarna.java Sat Jun 07 10:38:31 2014 +0200
1.3 @@ -18,6 +18,9 @@
1.4 package cz.frantovo.alt2xml;
1.5
1.6 import cz.frantovo.alt2xml.vstup.SuperReader;
1.7 +import java.util.Deque;
1.8 +import java.util.LinkedList;
1.9 +import java.util.ServiceLoader;
1.10 import javax.xml.parsers.ParserConfigurationException;
1.11 import javax.xml.parsers.SAXParser;
1.12 import javax.xml.parsers.SAXParserFactory;
1.13 @@ -31,11 +34,31 @@
1.14 *
1.15 * @author fiki
1.16 */
1.17 -public class SAXTovarna extends SAXParserFactory {
1.18 +public class SAXTovarna extends SAXParserFactory implements ReaderFinder {
1.19 +
1.20 + private final Deque<Alt2XmlReaderFactory> readerFactories = new LinkedList();
1.21 +
1.22 + public SAXTovarna() {
1.23 + super();
1.24 + for (Alt2XmlReaderFactory f : ServiceLoader.load(Alt2XmlReaderFactory.class)) {
1.25 + readerFactories.add(f);
1.26 + }
1.27 +
1.28 + }
1.29 +
1.30 + @Override
1.31 + public XMLReader findReader(String systemId) throws SAXException {
1.32 + for (Alt2XmlReaderFactory f : readerFactories) {
1.33 + if (f.canRead(systemId)) {
1.34 + return f.getReader();
1.35 + }
1.36 + }
1.37 + throw new SAXException("Iterated over " + readerFactories.size() + " and was unable to find XMLReader for SystemId: " + systemId);
1.38 + }
1.39
1.40 @Override
1.41 public SAXParser newSAXParser() throws ParserConfigurationException, SAXException {
1.42 - return new AltSAXParser(new SuperReader());
1.43 + return new AltSAXParser(new SuperReader(this));
1.44 }
1.45
1.46 @Override
1.47 @@ -87,4 +110,4 @@
1.48 return xmlReader.getProperty(name);
1.49 }
1.50 }
1.51 -}
1.52 \ No newline at end of file
1.53 +}