< prev index next >

src/java.xml/share/classes/com/sun/org/apache/xalan/internal/xsltc/trax/SAX2StAXEventWriter.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 2005, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 36,165 **** import javax.xml.stream.XMLEventWriter; import javax.xml.stream.XMLStreamException; import javax.xml.stream.events.*; import org.xml.sax.Attributes; import org.xml.sax.SAXException; - import org.xml.sax.ext.Locator2; /** * @author Sunitha Reddy */ public class SAX2StAXEventWriter extends SAX2StAXBaseWriter { - private XMLEventWriter writer; - private XMLEventFactory eventFactory; - private List<Collection<Namespace>> namespaceStack = new ArrayList<>(); - private boolean needToCallStartDocument = false; - public SAX2StAXEventWriter() { - eventFactory = XMLEventFactory.newInstance(); - } - public SAX2StAXEventWriter(XMLEventWriter writer) { - this.writer = writer; eventFactory = XMLEventFactory.newInstance(); - } public SAX2StAXEventWriter(XMLEventWriter writer, XMLEventFactory factory) { this.writer = writer; if (factory != null) { - this.eventFactory = factory; - } else { - eventFactory = XMLEventFactory.newInstance(); - } - } public XMLEventWriter getEventWriter() { - return writer; - } - public void setEventWriter(XMLEventWriter writer) { - this.writer = writer; - } - public XMLEventFactory getEventFactory() { - return eventFactory; - } - public void setEventFactory(XMLEventFactory factory) { - this.eventFactory = factory; - } public void startDocument() throws SAXException { - super.startDocument(); - namespaceStack.clear(); - eventFactory.setLocation(getCurrentLocation()); // Encoding and version info will be available only after startElement // is called for first time. So, defer START_DOCUMENT event of StAX till // that point of time. needToCallStartDocument = true; } ! private void writeStartDocument() throws SAXException { try { ! if (docLocator == null) ! writer.add(eventFactory.createStartDocument()); ! else { ! try{ ! writer.add(eventFactory.createStartDocument(((Locator2)docLocator).getEncoding(),((Locator2)docLocator).getXMLVersion())); ! } catch(ClassCastException e){ ! writer.add(eventFactory.createStartDocument()); ! } ! } } catch (XMLStreamException e) { throw new SAXException(e); } needToCallStartDocument = false; } public void endDocument() throws SAXException { - eventFactory.setLocation(getCurrentLocation()); try { - writer.add(eventFactory.createEndDocument()); - } catch (XMLStreamException e) { - throw new SAXException(e); - } super.endDocument(); // clear the namespaces --- 36,123 ---- import javax.xml.stream.XMLEventWriter; import javax.xml.stream.XMLStreamException; import javax.xml.stream.events.*; import org.xml.sax.Attributes; import org.xml.sax.SAXException; /** * @author Sunitha Reddy */ public class SAX2StAXEventWriter extends SAX2StAXBaseWriter { private XMLEventWriter writer; private XMLEventFactory eventFactory; private List<Collection<Namespace>> namespaceStack = new ArrayList<>(); private boolean needToCallStartDocument = false; public SAX2StAXEventWriter() { eventFactory = XMLEventFactory.newInstance(); } public SAX2StAXEventWriter(XMLEventWriter writer) { this.writer = writer; eventFactory = XMLEventFactory.newInstance(); } public SAX2StAXEventWriter(XMLEventWriter writer, XMLEventFactory factory) { this.writer = writer; if (factory != null) { this.eventFactory = factory; } else { eventFactory = XMLEventFactory.newInstance(); } } public XMLEventWriter getEventWriter() { return writer; } public void setEventWriter(XMLEventWriter writer) { this.writer = writer; } public XMLEventFactory getEventFactory() { return eventFactory; } public void setEventFactory(XMLEventFactory factory) { this.eventFactory = factory; } public void startDocument() throws SAXException { super.startDocument(); namespaceStack.clear(); eventFactory.setLocation(getCurrentLocation()); // Encoding and version info will be available only after startElement // is called for first time. So, defer START_DOCUMENT event of StAX till // that point of time. needToCallStartDocument = true; } ! void writeStartDocument() throws SAXException { ! super.writeStartDocument(); try { ! writer.add(eventFactory.createStartDocument(encoding, xmlVersion)); } catch (XMLStreamException e) { throw new SAXException(e); } needToCallStartDocument = false; } public void endDocument() throws SAXException { eventFactory.setLocation(getCurrentLocation()); try { writer.add(eventFactory.createEndDocument()); } catch (XMLStreamException e) { throw new SAXException(e); } super.endDocument(); // clear the namespaces
*** 167,177 **** } @SuppressWarnings({"rawtypes", "unchecked"}) public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { - if (needToCallStartDocument) { writeStartDocument(); } // set document location --- 125,134 ----
*** 182,206 **** createStartEvents(attributes, events); namespaceStack.add(events[0]); try { - String[] qname = {null, null}; parseQName(qName, qname); writer.add(eventFactory.createStartElement(qname[0], uri, qname[1], events[1].iterator(), events[0].iterator())); - } catch (XMLStreamException e) { - throw new SAXException(e); - } finally { - super.startElement(uri, localName, qName, attributes); - } } public void endElement(String uri, String localName, String qName) --- 139,157 ----
*** 217,236 **** // get namespaces Collection<Namespace> nsList = namespaceStack.remove(namespaceStack.size() - 1); Iterator<Namespace> nsIter = nsList.iterator(); try { - writer.add(eventFactory.createEndElement(qname[0], uri, qname[1], nsIter)); - } catch (XMLStreamException e) { - throw new SAXException(e); - } - } public void comment(char[] ch, int start, int length) throws SAXException { if (needToCallStartDocument) { // Drat. We were trying to postpone this until the first element so that we could get --- 168,182 ----
*** 241,291 **** super.comment(ch, start, length); eventFactory.setLocation(getCurrentLocation()); try { - writer.add(eventFactory.createComment(new String(ch, start, length))); - } catch (XMLStreamException e) { - throw new SAXException(e); - } - } public void characters(char[] ch, int start, int length) throws SAXException { super.characters(ch, start, length); try { - if (!isCDATA) { - eventFactory.setLocation(getCurrentLocation()); writer.add(eventFactory.createCharacters(new String(ch, start, length))); - } } catch (XMLStreamException e) { - throw new SAXException(e); - } - } public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException { super.ignorableWhitespace(ch, start, length); characters(ch, start, length); - } public void processingInstruction(String target, String data) throws SAXException { --- 187,225 ----
*** 296,331 **** writeStartDocument(); } super.processingInstruction(target, data); try { - writer.add(eventFactory.createProcessingInstruction(target, data)); - } catch (XMLStreamException e) { - throw new SAXException(e); - } - } public void endCDATA() throws SAXException { eventFactory.setLocation(getCurrentLocation()); try { - writer.add(eventFactory.createCData(CDATABuffer.toString())); - } catch (XMLStreamException e) { - throw new SAXException(e); - } super.endCDATA(); - } @SuppressWarnings({"rawtypes", "unchecked"}) protected void createStartEvents(Attributes attributes, Collection<Attribute>[] events) { --- 230,255 ----
*** 371,417 **** Namespace ns = createNamespace(attrLocal, attrValue); nsMap.put(attrLocal, ns); } } else { - Attribute attribute; if (attrPrefix.length() > 0) { - attribute = eventFactory.createAttribute(attrPrefix, attrURI, attrLocal, attrValue); - } else { - attribute = eventFactory.createAttribute(attrLocal, attrValue); - } if (attrs == null) { attrs = new ArrayList<>(); } attrs.add(attribute); - } } events[0] = (nsMap == null ? Collections.EMPTY_LIST : nsMap.values()); events[1] = (attrs == null ? Collections.EMPTY_LIST : attrs); - } protected Namespace createNamespace(String prefix, String uri) { - if (prefix == null || prefix.length() == 0) { - return eventFactory.createNamespace(uri); - } else { - return eventFactory.createNamespace(prefix, uri); - } - } - } --- 295,327 ----
< prev index next >