1 /* XMLEventFactoryImpl.java -- 2 Copyright (C) 2005,2006 Free Software Foundation, Inc. 3 4 This file is part of GNU Classpath. 5 6 GNU Classpath is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 2, or (at your option) 9 any later version. 10 11 GNU Classpath is distributed in the hope that it will be useful, but 12 WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with GNU Classpath; see the file COPYING. If not, write to the 18 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19 02110-1301 USA. 20 21 Linking this library statically or dynamically with other modules is 22 making a combined work based on this library. Thus, the terms and 23 conditions of the GNU General Public License cover the whole 24 combination. 25 26 As a special exception, the copyright holders of this library give you 27 permission to link this library with independent modules to produce an 28 executable, regardless of the license terms of these independent 29 modules, and to copy and distribute the resulting executable under 30 terms of your choice, provided that you also meet, for each linked 31 independent module, the terms and conditions of the license of that 32 module. An independent module is a module which is not derived from 33 or based on this library. If you modify this library, you may extend 34 this exception to your version of the library, but you are not 35 obligated to do so. If you do not wish to do so, delete this 36 exception statement from your version. */ 37 38 package gnu.xml.stream; 39 40 import java.util.Collections; 41 import java.util.Iterator; 42 import java.util.LinkedList; 43 import javax.xml.XMLConstants; 44 import javax.xml.namespace.NamespaceContext; 45 import javax.xml.namespace.QName; 46 import javax.xml.stream.Location; 47 import javax.xml.stream.XMLEventFactory; 48 import javax.xml.stream.events.Attribute; 49 import javax.xml.stream.events.Characters; 50 import javax.xml.stream.events.Comment; 51 import javax.xml.stream.events.DTD; 52 import javax.xml.stream.events.EndDocument; 53 import javax.xml.stream.events.EndElement; 54 import javax.xml.stream.events.EntityDeclaration; 55 import javax.xml.stream.events.EntityReference; 56 import javax.xml.stream.events.Namespace; 57 import javax.xml.stream.events.ProcessingInstruction; 58 import javax.xml.stream.events.StartDocument; 59 import javax.xml.stream.events.StartElement; 60 61 /** 62 * Factory for XML events. 63 * 64 * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a> 65 */ 66 public class XMLEventFactoryImpl 67 extends XMLEventFactory 68 { 69 70 protected Location location; 71 setLocation(Location location)72 public void setLocation(Location location) 73 { 74 this.location = location; 75 } 76 createAttribute(String prefix, String namespaceURI, String localName, String value)77 public Attribute createAttribute(String prefix, String namespaceURI, 78 String localName, String value) 79 { 80 return new AttributeImpl(location, 81 new QName(namespaceURI, localName, prefix), 82 value, "CDATA", true); 83 } 84 createAttribute(String localName, String value)85 public Attribute createAttribute(String localName, String value) 86 { 87 return new AttributeImpl(location, 88 new QName(localName), 89 value, "CDATA", true); 90 } 91 createAttribute(QName name, String value)92 public Attribute createAttribute(QName name, String value) 93 { 94 return new AttributeImpl(location, name, value, 95 "CDATA", true); 96 } 97 createNamespace(String namespaceURI)98 public Namespace createNamespace(String namespaceURI) 99 { 100 return new NamespaceImpl(location, 101 XMLConstants.DEFAULT_NS_PREFIX, 102 namespaceURI, 103 true); 104 } 105 createNamespace(String prefix, String namespaceUri)106 public Namespace createNamespace(String prefix, String namespaceUri) 107 { 108 return new NamespaceImpl(location, prefix, namespaceUri, true); 109 } 110 createStartElement(QName name, Iterator attributes, Iterator namespaces)111 public StartElement createStartElement(QName name, 112 Iterator attributes, 113 Iterator namespaces) 114 { 115 return new StartElementImpl(location, name, 116 createLinkedList(attributes), 117 createLinkedList(namespaces), 118 null); 119 } 120 createStartElement(String prefix, String namespaceUri, String localName)121 public StartElement createStartElement(String prefix, 122 String namespaceUri, 123 String localName) 124 { 125 return new StartElementImpl(location, 126 new QName(namespaceUri, localName, prefix), 127 Collections.EMPTY_LIST, 128 Collections.EMPTY_LIST, 129 null); 130 } 131 createStartElement(String prefix, String namespaceUri, String localName, Iterator attributes, Iterator namespaces)132 public StartElement createStartElement(String prefix, 133 String namespaceUri, 134 String localName, 135 Iterator attributes, 136 Iterator namespaces) 137 { 138 return new StartElementImpl(location, 139 new QName(namespaceUri, localName, prefix), 140 createLinkedList(attributes), 141 createLinkedList(namespaces), 142 null); 143 } 144 createStartElement(String prefix, String namespaceUri, String localName, Iterator attributes, Iterator namespaces, NamespaceContext context)145 public StartElement createStartElement(String prefix, 146 String namespaceUri, 147 String localName, 148 Iterator attributes, 149 Iterator namespaces, 150 NamespaceContext context) 151 { 152 return new StartElementImpl(location, 153 new QName(namespaceUri, localName, prefix), 154 createLinkedList(attributes), 155 createLinkedList(namespaces), 156 context); 157 } 158 createEndElement(QName name, Iterator namespaces)159 public EndElement createEndElement(QName name, 160 Iterator namespaces) 161 { 162 return new EndElementImpl(location, name, 163 createLinkedList(namespaces)); 164 } 165 createEndElement(String prefix, String namespaceUri, String localName)166 public EndElement createEndElement(String prefix, 167 String namespaceUri, 168 String localName) 169 { 170 return new EndElementImpl(location, 171 new QName(namespaceUri, localName, prefix), 172 Collections.EMPTY_LIST); 173 } 174 createEndElement(String prefix, String namespaceUri, String localName, Iterator namespaces)175 public EndElement createEndElement(String prefix, 176 String namespaceUri, 177 String localName, 178 Iterator namespaces) 179 { 180 return new EndElementImpl(location, 181 new QName(namespaceUri, localName, prefix), 182 createLinkedList(namespaces)); 183 } 184 createCharacters(String content)185 public Characters createCharacters(String content) 186 { 187 return new CharactersImpl(location, content, false, false, false); 188 } 189 createCData(String content)190 public Characters createCData(String content) 191 { 192 return new CharactersImpl(location, content, false, true, false); 193 } 194 createSpace(String content)195 public Characters createSpace(String content) 196 { 197 return new CharactersImpl(location, content, true, false, false); 198 } 199 createIgnorableSpace(String content)200 public Characters createIgnorableSpace(String content) 201 { 202 return new CharactersImpl(location, content, true, false, true); 203 } 204 createStartDocument()205 public StartDocument createStartDocument() 206 { 207 return new StartDocumentImpl(location, null, "UTF-8", "1.0", 208 false, false, false); 209 } 210 createStartDocument(String encoding, String version, boolean standalone)211 public StartDocument createStartDocument(String encoding, 212 String version, 213 boolean standalone) 214 { 215 return new StartDocumentImpl(location, null, encoding, version, 216 standalone, true, true); 217 } 218 createStartDocument(String encoding, String version)219 public StartDocument createStartDocument(String encoding, 220 String version) 221 { 222 return new StartDocumentImpl(location, null, encoding, version, 223 false, false, true); 224 } 225 createStartDocument(String encoding)226 public StartDocument createStartDocument(String encoding) 227 { 228 return new StartDocumentImpl(location, null, encoding, "1.0", 229 false, false, true); 230 } 231 createEndDocument()232 public EndDocument createEndDocument() 233 { 234 return new EndDocumentImpl(location); 235 } 236 createEntityReference(String name, EntityDeclaration declaration)237 public EntityReference createEntityReference(String name, 238 EntityDeclaration declaration) 239 { 240 return new EntityReferenceImpl(location, declaration, name); 241 } 242 createComment(String text)243 public Comment createComment(String text) 244 { 245 return new CommentImpl(location, text); 246 } 247 createProcessingInstruction(String target, String data)248 public ProcessingInstruction createProcessingInstruction(String target, 249 String data) 250 { 251 return new ProcessingInstructionImpl(location, target, data); 252 } 253 createDTD(String dtd)254 public DTD createDTD(String dtd) 255 { 256 return new DTDImpl(location, dtd, null, 257 Collections.EMPTY_LIST, 258 Collections.EMPTY_LIST); 259 } 260 createLinkedList(Iterator i)261 LinkedList createLinkedList(Iterator i) 262 { 263 LinkedList ret = new LinkedList(); 264 while (i.hasNext()) 265 ret.add(i.next()); 266 return ret; 267 } 268 269 } 270