diff options
Diffstat (limited to 'libjava/classpath/gnu/xml/stream')
6 files changed, 59 insertions, 13 deletions
diff --git a/libjava/classpath/gnu/xml/stream/FilteredStreamReader.java b/libjava/classpath/gnu/xml/stream/FilteredStreamReader.java index 1db02f6e30a..90ebb330d0b 100644 --- a/libjava/classpath/gnu/xml/stream/FilteredStreamReader.java +++ b/libjava/classpath/gnu/xml/stream/FilteredStreamReader.java @@ -40,10 +40,10 @@ package gnu.xml.stream; import javax.xml.stream.StreamFilter; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; -import javax.xml.stream.util.ReaderDelegate; +import javax.xml.stream.util.StreamReaderDelegate; class FilteredStreamReader - extends ReaderDelegate + extends StreamReaderDelegate { final XMLStreamReader reader; diff --git a/libjava/classpath/gnu/xml/stream/NamespaceImpl.java b/libjava/classpath/gnu/xml/stream/NamespaceImpl.java index eeb57be6cac..1a595ee83d4 100644 --- a/libjava/classpath/gnu/xml/stream/NamespaceImpl.java +++ b/libjava/classpath/gnu/xml/stream/NamespaceImpl.java @@ -39,6 +39,7 @@ package gnu.xml.stream; import java.io.IOException; import java.io.Writer; +import javax.xml.namespace.QName; import javax.xml.stream.Location; import javax.xml.stream.XMLStreamException; import javax.xml.stream.events.Namespace; @@ -55,12 +56,15 @@ public class NamespaceImpl protected final String prefix; protected final String uri; + protected final boolean specified; - protected NamespaceImpl(Location location, String prefix, String uri) + protected NamespaceImpl(Location location, String prefix, String uri, + boolean specified) { super(location); this.prefix = prefix; this.uri = uri; + this.specified = specified; } public int getEventType() @@ -78,6 +82,29 @@ public class NamespaceImpl return uri; } + public boolean isSpecified() + { + return specified; + } + + public QName getName() + { + if (isDefaultNamespaceDeclaration()) + return new QName("", "xmlns", null); + else + return new QName("", prefix, "xmlns"); + } + + public String getDTDType() + { + return "CDATA"; + } + + public String getValue() + { + return uri; + } + public boolean isDefaultNamespaceDeclaration() { return (prefix == null || "".equals(prefix)); diff --git a/libjava/classpath/gnu/xml/stream/XIncludeFilter.java b/libjava/classpath/gnu/xml/stream/XIncludeFilter.java index d5c4af12c5e..aed9d9a0f00 100644 --- a/libjava/classpath/gnu/xml/stream/XIncludeFilter.java +++ b/libjava/classpath/gnu/xml/stream/XIncludeFilter.java @@ -54,7 +54,7 @@ import javax.xml.parsers.ParserConfigurationException; import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; -import javax.xml.stream.util.ReaderDelegate; +import javax.xml.stream.util.StreamReaderDelegate; import org.w3c.dom.Attr; import org.w3c.dom.Document; @@ -81,7 +81,7 @@ import org.xml.sax.SAXException; * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a> */ class XIncludeFilter - extends ReaderDelegate + extends StreamReaderDelegate { static final String XINCLUDE_NS_URI = "http://www.w3.org/2001/XInclude"; diff --git a/libjava/classpath/gnu/xml/stream/XMLEventAllocatorImpl.java b/libjava/classpath/gnu/xml/stream/XMLEventAllocatorImpl.java index fb1e4c28c58..dd2b18c943f 100644 --- a/libjava/classpath/gnu/xml/stream/XMLEventAllocatorImpl.java +++ b/libjava/classpath/gnu/xml/stream/XMLEventAllocatorImpl.java @@ -110,7 +110,8 @@ public class XMLEventAllocatorImpl for (int i = 0; i < len; i++) namespaces.add(new NamespaceImpl(location, reader.getNamespacePrefix(i), - reader.getNamespaceURI(i))); + reader.getNamespaceURI(i), + false)); return new EndElementImpl(location, reader.getName(), namespaces); @@ -158,7 +159,8 @@ public class XMLEventAllocatorImpl for (int i = 0; i < len; i++) namespaces.add(new NamespaceImpl(location, reader.getNamespacePrefix(i), - reader.getNamespaceURI(i))); + reader.getNamespaceURI(i), + false)); len = reader.getAttributeCount(); List attributes = new LinkedList(); for (int i = 0; i < len; i++) diff --git a/libjava/classpath/gnu/xml/stream/XMLEventFactoryImpl.java b/libjava/classpath/gnu/xml/stream/XMLEventFactoryImpl.java index f694753c4b4..5ca1aab7ce8 100644 --- a/libjava/classpath/gnu/xml/stream/XMLEventFactoryImpl.java +++ b/libjava/classpath/gnu/xml/stream/XMLEventFactoryImpl.java @@ -98,12 +98,14 @@ public class XMLEventFactoryImpl public Namespace createNamespace(String namespaceURI) { return new NamespaceImpl(location, - XMLConstants.DEFAULT_NS_PREFIX, namespaceURI); + XMLConstants.DEFAULT_NS_PREFIX, + namespaceURI, + true); } public Namespace createNamespace(String prefix, String namespaceUri) { - return new NamespaceImpl(location, prefix, namespaceUri); + return new NamespaceImpl(location, prefix, namespaceUri, true); } public StartElement createStartElement(QName name, diff --git a/libjava/classpath/gnu/xml/stream/XMLStreamWriterImpl.java b/libjava/classpath/gnu/xml/stream/XMLStreamWriterImpl.java index 4be9992a73d..1549420c9df 100644 --- a/libjava/classpath/gnu/xml/stream/XMLStreamWriterImpl.java +++ b/libjava/classpath/gnu/xml/stream/XMLStreamWriterImpl.java @@ -242,7 +242,7 @@ public class XMLStreamWriterImpl { if (namespaceURI != null && !isURI(namespaceURI)) throw new IllegalArgumentException("illegal URI: " + namespaceURI); - if (prefix != null && !isNCName(prefix)) + if (prefix != null && !isPrefix(prefix)) throw new IllegalArgumentException("illegal NCName: " + prefix); if (!isNCName(localName)) throw new IllegalArgumentException("illegal NCName: " + localName); @@ -394,7 +394,7 @@ public class XMLStreamWriterImpl { if (namespaceURI != null && !isURI(namespaceURI)) throw new IllegalArgumentException("illegal URI: " + namespaceURI); - if (prefix != null && !isNCName(prefix)) + if (prefix != null && !isPrefix(prefix)) throw new IllegalArgumentException("illegal NCName: " + prefix); if (!isNCName(localName)) throw new IllegalArgumentException("illegal NCName: " + localName); @@ -490,13 +490,18 @@ public class XMLStreamWriterImpl public void writeNamespace(String prefix, String namespaceURI) throws XMLStreamException { + if (prefix == null || "".equals(prefix) || "xmlns".equals(prefix)) + { + writeDefaultNamespace(namespaceURI); + return; + } if (!inStartElement) throw new IllegalStateException(); try { if (!isURI(namespaceURI)) throw new IllegalArgumentException("illegal URI: " + namespaceURI); - if (!isNCName(prefix)) + if (!isPrefix(prefix)) throw new IllegalArgumentException("illegal NCName: " + prefix); } catch (IOException e) @@ -790,7 +795,7 @@ public class XMLStreamWriterImpl { if (!isURI(uri)) throw new IllegalArgumentException("illegal URI: " + uri); - if (!isNCName(prefix)) + if (!isPrefix(prefix)) throw new IllegalArgumentException("illegal NCName: " + prefix); } catch (IOException e) @@ -938,6 +943,15 @@ public class XMLStreamWriterImpl return true; } + private boolean isPrefix(String text) + throws IOException + { + if (XMLConstants.DEFAULT_NS_PREFIX.equals(text)) { + return true; + } + return isNCName(text); + } + private boolean isNCName(String text) throws IOException { @@ -1001,3 +1015,4 @@ public class XMLStreamWriterImpl } + |