\r
public class XMLParser extends DefaultHandler implements Serializable {\r
\r
+ public static String PLUGIN_ID = "org.simantics.xml.sax.base";\r
+ public static String XML_NAMESPACE_REF = "xmlns";\r
+ \r
private static final long serialVersionUID = 7360740940824360338L;\r
private static final boolean debug = false;\r
- private static String XML_SCHEMA_REF = "xmlns";\r
+ \r
private ILogger logger;\r
+ private WriteGraph graph;\r
private Resource root;\r
private String schemaURI;\r
- private Deque<Element> current = new ArrayDeque<Element>();\r
+ private Deque<ParserElement> current = new ArrayDeque<ParserElement>();\r
private Map<String, XMLElementParser> parsers = new HashMap<String, XMLElementParser>();\r
- private WriteGraph graph;\r
private Map<Class<? extends XMLElementParser>, XMLElementParser> namedParsers = new HashMap<Class<? extends XMLElementParser>, XMLElementParser>();\r
- \r
private Map<String, XMLParser> subParsers = new HashMap<String, XMLParser>();\r
\r
public XMLParser() {\r
subParsers.put(parser.getSchemaURI(), parser);\r
}\r
\r
- private List<Element> idReferenceElements = new ArrayList<Element>();\r
- private void loadElement(Deque<Element> parents, Element element) throws SAXException{\r
+ private List<ParserElement> idReferenceElements = new ArrayList<ParserElement>();\r
+ private void loadElement(Deque<ParserElement> parents, ParserElement element) throws SAXException{\r
XMLElementParser parser = null;\r
- Element parent = null;\r
+ ParserElement parent = null;\r
if (parents.size() > 0) {\r
parent = parents.peek();\r
// check for assigned subparser\r
}\r
} else {\r
// check for schema reference attempt to locate subparser for it.\r
- Attribute schemaRef = element.getAttribute(XML_SCHEMA_REF);\r
+ Attribute schemaRef = element.getAttribute(XML_NAMESPACE_REF);\r
if (schemaRef != null && subParsers.containsKey(schemaRef.value)) {\r
XMLParser subParser = subParsers.get(schemaRef.value);\r
subParser.loadElement(parents, element);\r
}\r
}\r
\r
- private Map<String, Element> idMap = new HashMap<String, Element>();\r
+ private Map<String, ParserElement> idMap = new HashMap<String, ParserElement>();\r
\r
- private void handleElement(Deque<Element> parents, Element element) throws SAXException{\r
+ private void handleElement(Deque<ParserElement> parents, ParserElement element) throws SAXException{\r
XMLElementParser parser = element.getElementParser();\r
if (parser != null) {\r
try {\r
parser.configure(graph, parents, element);\r
if (parents.size() > 0) {\r
- Element parent = parents.peek();\r
+ ParserElement parent = parents.peek();\r
if (parent.getElementParser() != null) {\r
if (!parent.getElementParser().connectChild(graph, parent, element))\r
if (!parser.connectParent(graph, parent, element)) {\r
}\r
String id = parser.getID();\r
if (id != null) {\r
- Element existing = idMap.put(id, element);\r
+ ParserElement existing = idMap.put(id, element);\r
if (existing != null) {\r
// report error + use id priorities to select the kept element.\r
boolean useExt = existing.elementParser.idPriority() > element.elementParser.idPriority();\r
throw new SAXException(e);\r
}\r
} else {\r
- Element parent = parents.peek();\r
+ ParserElement parent = parents.peek();\r
if (parent != null) { \r
parser = parent.getElementParser();\r
if (parser != null && parser instanceof UnrecognizedElementParser) {\r
}\r
}\r
\r
- private void handleCharacters(Element element, String string) throws SAXException{\r
+ private void handleCharacters(ParserElement element, String string) throws SAXException{\r
XMLElementParser parser = element.getElementParser();\r
if (parser != null) {\r
try {\r
}\r
}\r
\r
- private static String PLUGIN_ID = "org.simantics.xml.sax.base";\r
+ \r
\r
public void done() throws SAXException{\r
try {\r
- for (Element e : idReferenceElements) {\r
+ for (ParserElement e : idReferenceElements) {\r
IDReferenceParser parser = (IDReferenceParser)parsers.get(e.qName);\r
if (!parser.connectReferences(graph, e, idMap)) {\r
String err ="Could not resolve ID references for " + e.getQName() + " " + e.getUri();\r
\r
@Override\r
public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException {\r
- Element e = new Element(uri,localName,name,attributes);\r
+ ParserElement e = new ParserElement(uri,localName,name,attributes);\r
\r
loadElement(current,e);\r
current.push(e);\r
@Override\r
public void endElement(String uri, String localName, String name)\r
throws SAXException {\r
- Element e = null;\r
+ ParserElement e = null;\r
if (!current.isEmpty()) {\r
e = current.pop();\r
}\r