< prev index next >

src/java.xml/share/classes/com/sun/xml/internal/stream/events/StartElementEvent.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2005, 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, 2016, 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
*** 21,59 **** * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ ! package com.sun.xml.internal.stream.events ; ! import java.util.List; ! import java.util.Map; ! import java.util.HashMap; ! import java.util.Iterator; import java.util.ArrayList; import java.util.Collection; ! ! import javax.xml.namespace.QName; ! import javax.xml.stream.events.StartElement; ! import javax.xml.stream.events.Attribute; import javax.xml.namespace.NamespaceContext; ! import java.io.Writer; ! import com.sun.xml.internal.stream.util.ReadOnlyIterator; import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.events.Namespace; ! /** Implementation of StartElementEvent. * * @author Neeraj Bajaj Sun Microsystems,Inc. * @author K.Venugopal Sun Microsystems,Inc. */ - public class StartElementEvent extends DummyEvent ! implements StartElement { ! private Map fAttributes; ! private List fNamespaces; private NamespaceContext fNamespaceContext = null; private QName fQName; public StartElementEvent(String prefix, String uri, String localpart) { this(new QName(uri, localpart, prefix)); --- 21,57 ---- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ ! package com.sun.xml.internal.stream.events; ! import com.sun.xml.internal.stream.util.ReadOnlyIterator; import java.util.ArrayList; import java.util.Collection; ! import java.util.HashMap; ! import java.util.Iterator; ! import java.util.List; ! import java.util.Map; import javax.xml.namespace.NamespaceContext; ! import javax.xml.namespace.QName; import javax.xml.stream.XMLStreamConstants; + import javax.xml.stream.events.Attribute; import javax.xml.stream.events.Namespace; + import javax.xml.stream.events.StartElement; ! /** ! * Implementation of StartElementEvent. * * @author Neeraj Bajaj Sun Microsystems,Inc. * @author K.Venugopal Sun Microsystems,Inc. */ public class StartElementEvent extends DummyEvent ! implements StartElement { ! private Map<QName, Attribute> fAttributes; ! private List<Namespace> fNamespaces; private NamespaceContext fNamespaceContext = null; private QName fQName; public StartElementEvent(String prefix, String uri, String localpart) { this(new QName(uri, localpart, prefix));
*** 68,231 **** this(startelement.getName()); addAttributes(startelement.getAttributes()); addNamespaceAttributes(startelement.getNamespaces()); } ! protected void init() { setEventType(XMLStreamConstants.START_ELEMENT); ! fAttributes = new HashMap(); ! fNamespaces = new ArrayList(); } public QName getName() { return fQName; } public void setName(QName qname) { this.fQName = qname; } ! public Iterator getAttributes() { ! if(fAttributes != null){ ! Collection coll = fAttributes.values(); ! return new ReadOnlyIterator(coll.iterator()); } ! return new ReadOnlyIterator(); } ! public Iterator getNamespaces() { ! if(fNamespaces != null){ ! return new ReadOnlyIterator(fNamespaces.iterator()); } ! return new ReadOnlyIterator(); } public Attribute getAttributeByName(QName qname) { ! if(qname == null) return null; ! return (Attribute)fAttributes.get(qname); } ! public String getNamespace(){ return fQName.getNamespaceURI(); } public String getNamespaceURI(String prefix) { //check that URI was supplied when creating this startElement event and prefix matches ! if( getNamespace() != null && fQName.getPrefix().equals(prefix)) return getNamespace(); //else check the namespace context ! if(fNamespaceContext != null) return fNamespaceContext.getNamespaceURI(prefix); return null; } /** ! * <p>Return a <code>String</code> representation of this * <code>StartElement</code> formatted as XML.</p> * * @return <code>String</code> representation of this * <code>StartElement</code> formatted as XML. */ public String toString() { ! StringBuffer startElement = new StringBuffer(); // open element startElement.append("<"); startElement.append(nameAsString()); // add any attributes if (fAttributes != null) { ! Iterator it = this.getAttributes(); ! Attribute attr = null; while (it.hasNext()) { ! attr = (Attribute) it.next(); startElement.append(" "); startElement.append(attr.toString()); } } // add any namespaces if (fNamespaces != null) { ! Iterator it = fNamespaces.iterator(); ! Namespace attr = null; while (it.hasNext()) { ! attr = (Namespace) it.next(); startElement.append(" "); ! startElement.append(attr.toString()); } } // close start tag startElement.append(">"); // return StartElement as a String return startElement.toString(); } ! /** Return this event as String * @return String Event returned as string. */ public String nameAsString() { ! if("".equals(fQName.getNamespaceURI())) return fQName.getLocalPart(); ! if(fQName.getPrefix() != null) ! return "['" + fQName.getNamespaceURI() + "']:" + fQName.getPrefix() + ":" + fQName.getLocalPart(); ! else return "['" + fQName.getNamespaceURI() + "']:" + fQName.getLocalPart(); } ! ! /** Gets a read-only namespace context. If no context is ! * available this method will return an empty namespace context. ! * The NamespaceContext contains information about all namespaces ! * in scope for this StartElement. * * @return the current namespace context */ public NamespaceContext getNamespaceContext() { return fNamespaceContext; } public void setNamespaceContext(NamespaceContext nc) { fNamespaceContext = nc; } protected void writeAsEncodedUnicodeEx(java.io.Writer writer) ! throws java.io.IOException ! { writer.write(toString()); } ! void addAttribute(Attribute attr){ ! if(attr.isNamespace()){ ! fNamespaces.add(attr); ! }else{ ! fAttributes.put(attr.getName(),attr); } } ! void addAttributes(Iterator attrs){ ! if(attrs == null) return; ! while(attrs.hasNext()){ ! Attribute attr = (Attribute)attrs.next(); ! fAttributes.put(attr.getName(),attr); } } ! void addNamespaceAttribute(Namespace attr){ ! if(attr == null) return; fNamespaces.add(attr); } ! void addNamespaceAttributes(Iterator attrs){ ! if(attrs == null) return; ! while(attrs.hasNext()){ ! Namespace attr = (Namespace)attrs.next(); fNamespaces.add(attr); } } } --- 66,248 ---- this(startelement.getName()); addAttributes(startelement.getAttributes()); addNamespaceAttributes(startelement.getNamespaces()); } ! protected final void init() { setEventType(XMLStreamConstants.START_ELEMENT); ! fAttributes = new HashMap<>(); ! fNamespaces = new ArrayList<>(); } + @Override public QName getName() { return fQName; } public void setName(QName qname) { this.fQName = qname; } ! @Override ! public Iterator<Attribute> getAttributes() { ! if (fAttributes != null) { ! Collection<Attribute> coll = fAttributes.values(); ! return new ReadOnlyIterator<>(coll.iterator()); } ! return new ReadOnlyIterator<>(); } ! @Override ! public Iterator<Namespace> getNamespaces() { ! if (fNamespaces != null) { ! return new ReadOnlyIterator<>(fNamespaces.iterator()); } ! return new ReadOnlyIterator<>(); } + @Override public Attribute getAttributeByName(QName qname) { ! if (qname == null) { return null; ! } ! return fAttributes.get(qname); } ! public String getNamespace() { return fQName.getNamespaceURI(); } + @Override public String getNamespaceURI(String prefix) { //check that URI was supplied when creating this startElement event and prefix matches ! if (getNamespace() != null && fQName.getPrefix().equals(prefix)) { ! return getNamespace(); ! } //else check the namespace context ! if (fNamespaceContext != null) { return fNamespaceContext.getNamespaceURI(prefix); + } return null; } /** ! * <p> ! * Return a <code>String</code> representation of this * <code>StartElement</code> formatted as XML.</p> * * @return <code>String</code> representation of this * <code>StartElement</code> formatted as XML. */ + @Override public String toString() { ! StringBuilder startElement = new StringBuilder(); // open element startElement.append("<"); startElement.append(nameAsString()); // add any attributes if (fAttributes != null) { ! Iterator<Attribute> it = this.getAttributes(); ! Attribute attr; while (it.hasNext()) { ! attr = it.next(); startElement.append(" "); startElement.append(attr.toString()); } } // add any namespaces if (fNamespaces != null) { ! Iterator<Namespace> it = fNamespaces.iterator(); ! Namespace ns; while (it.hasNext()) { ! ns = it.next(); startElement.append(" "); ! startElement.append(ns.toString()); } } // close start tag startElement.append(">"); // return StartElement as a String return startElement.toString(); } ! /** ! * Return this event as String ! * * @return String Event returned as string. */ public String nameAsString() { ! if ("".equals(fQName.getNamespaceURI())) { return fQName.getLocalPart(); ! } ! if (fQName.getPrefix() != null) { ! return "['" + fQName.getNamespaceURI() + "']:" + fQName.getPrefix() ! + ":" + fQName.getLocalPart(); ! } else { return "['" + fQName.getNamespaceURI() + "']:" + fQName.getLocalPart(); } + } ! /** ! * Gets a read-only namespace context. If no context is available this ! * method will return an empty namespace context. The NamespaceContext ! * contains information about all namespaces in scope for this StartElement. * * @return the current namespace context */ + @Override public NamespaceContext getNamespaceContext() { return fNamespaceContext; } public void setNamespaceContext(NamespaceContext nc) { fNamespaceContext = nc; } + @Override protected void writeAsEncodedUnicodeEx(java.io.Writer writer) ! throws java.io.IOException { writer.write(toString()); } ! void addAttribute(Attribute attr) { ! if (attr.isNamespace()) { ! fNamespaces.add((Namespace) attr); ! } else { ! fAttributes.put(attr.getName(), attr); } } ! final void addAttributes(Iterator<? extends Attribute> attrs) { ! if (attrs == null) { return; ! } ! while (attrs.hasNext()) { ! Attribute attr = attrs.next(); ! fAttributes.put(attr.getName(), attr); } } ! void addNamespaceAttribute(Namespace attr) { ! if (attr == null) { return; + } fNamespaces.add(attr); } ! final void addNamespaceAttributes(Iterator<? extends Namespace> attrs) { ! if (attrs == null) { return; ! } ! while (attrs.hasNext()) { ! Namespace attr = attrs.next(); fNamespaces.add(attr); } } }
< prev index next >