X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=org.simantics.xml.sax.base%2Fsrc%2Forg%2Fsimantics%2Fxml%2Fsax%2Fbase%2FXMLParser.java;h=992b98ab672f3cd2c39d0314368b158389dc0188;hb=dd3b2c7ecd5f4b60734f2602b16637aa8be2a263;hp=43a07c560c3e5b86f2eacc1b8540cb25c2f27ea1;hpb=47791aa9453c9d90786bc8ca7de102fb3ee90f3b;p=simantics%2Finterop.git diff --git a/org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/XMLParser.java b/org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/XMLParser.java index 43a07c5..992b98a 100644 --- a/org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/XMLParser.java +++ b/org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/XMLParser.java @@ -28,17 +28,18 @@ import org.xml.sax.helpers.DefaultHandler; public class XMLParser extends DefaultHandler implements Serializable { + public static String PLUGIN_ID = "org.simantics.xml.sax.base"; + private static final long serialVersionUID = 7360740940824360338L; private static final boolean debug = false; private static String XML_SCHEMA_REF = "xmlns"; private ILogger logger; + private WriteGraph graph; private Resource root; private String schemaURI; - private Deque current = new ArrayDeque(); + private Deque current = new ArrayDeque(); private Map parsers = new HashMap(); - private WriteGraph graph; private Map, XMLElementParser> namedParsers = new HashMap, XMLElementParser>(); - private Map subParsers = new HashMap(); public XMLParser() { @@ -73,10 +74,10 @@ public class XMLParser extends DefaultHandler implements Serializable { subParsers.put(parser.getSchemaURI(), parser); } - private List idReferenceElements = new ArrayList(); - private void loadElement(Deque parents, Element element) throws SAXException{ + private List idReferenceElements = new ArrayList(); + private void loadElement(Deque parents, ParserElement element) throws SAXException{ XMLElementParser parser = null; - Element parent = null; + ParserElement parent = null; if (parents.size() > 0) { parent = parents.peek(); // check for assigned subparser @@ -139,15 +140,15 @@ public class XMLParser extends DefaultHandler implements Serializable { } } - private Map idMap = new HashMap(); + private Map idMap = new HashMap(); - private void handleElement(Deque parents, Element element) throws SAXException{ + private void handleElement(Deque parents, ParserElement element) throws SAXException{ XMLElementParser parser = element.getElementParser(); if (parser != null) { try { parser.configure(graph, parents, element); if (parents.size() > 0) { - Element parent = parents.peek(); + ParserElement parent = parents.peek(); if (parent.getElementParser() != null) { if (!parent.getElementParser().connectChild(graph, parent, element)) if (!parser.connectParent(graph, parent, element)) { @@ -163,7 +164,7 @@ public class XMLParser extends DefaultHandler implements Serializable { } String id = parser.getID(); if (id != null) { - Element existing = idMap.put(id, element); + ParserElement existing = idMap.put(id, element); if (existing != null) { // report error + use id priorities to select the kept element. boolean useExt = existing.elementParser.idPriority() > element.elementParser.idPriority(); @@ -178,7 +179,7 @@ public class XMLParser extends DefaultHandler implements Serializable { throw new SAXException(e); } } else { - Element parent = parents.peek(); + ParserElement parent = parents.peek(); if (parent != null) { parser = parent.getElementParser(); if (parser != null && parser instanceof UnrecognizedElementParser) { @@ -192,7 +193,7 @@ public class XMLParser extends DefaultHandler implements Serializable { } } - private void handleCharacters(Element element, String string) throws SAXException{ + private void handleCharacters(ParserElement element, String string) throws SAXException{ XMLElementParser parser = element.getElementParser(); if (parser != null) { try { @@ -204,11 +205,11 @@ public class XMLParser extends DefaultHandler implements Serializable { } } - private static String PLUGIN_ID = "org.simantics.xml.sax.base"; + public void done() throws SAXException{ try { - for (Element e : idReferenceElements) { + for (ParserElement e : idReferenceElements) { IDReferenceParser parser = (IDReferenceParser)parsers.get(e.qName); if (!parser.connectReferences(graph, e, idMap)) { String err ="Could not resolve ID references for " + e.getQName() + " " + e.getUri(); @@ -229,7 +230,7 @@ public class XMLParser extends DefaultHandler implements Serializable { @Override public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException { - Element e = new Element(uri,localName,name,attributes); + ParserElement e = new ParserElement(uri,localName,name,attributes); loadElement(current,e); current.push(e); @@ -240,7 +241,7 @@ public class XMLParser extends DefaultHandler implements Serializable { @Override public void endElement(String uri, String localName, String name) throws SAXException { - Element e = null; + ParserElement e = null; if (!current.isEmpty()) { e = current.pop(); }