View Javadoc

1   /*   Copyright 2004 BEA Systems, Inc.
2    *
3    *   Licensed under the Apache License, Version 2.0 (the "License");
4    *   you may not use this file except in compliance with the License.
5    *   You may obtain a copy of the License at
6    *
7    *       http://www.apache.org/licenses/LICENSE-2.0
8    *
9    *   Unless required by applicable law or agreed to in writing, software
10   *   distributed under the License is distributed on an "AS IS" BASIS,
11   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12   *   See the License for the specific language governing permissions and
13   *   limitations under the License.
14   */
15  
16  package com.bea.xml.stream;
17  
18  import java.util.Iterator;
19  
20  import javax.xml.namespace.QName;
21  import javax.xml.namespace.NamespaceContext;
22  import javax.xml.stream.Location;
23  import javax.xml.stream.XMLEventFactory;
24  
25  import javax.xml.stream.events.StartElement;
26  import javax.xml.stream.events.ProcessingInstruction;
27  import javax.xml.stream.events.Comment;
28  import javax.xml.stream.events.EndElement;
29  import javax.xml.stream.events.Namespace;
30  import javax.xml.stream.events.Characters;
31  import javax.xml.stream.events.StartDocument;
32  import javax.xml.stream.events.EndDocument;
33  import javax.xml.stream.events.Namespace;
34  import javax.xml.stream.events.Attribute;
35  import javax.xml.stream.events.EntityReference;
36  import javax.xml.stream.events.EntityDeclaration;
37  import javax.xml.stream.events.DTD;
38  
39  import com.bea.xml.stream.events.StartElementEvent;
40  import com.bea.xml.stream.events.EndElementEvent;
41  import com.bea.xml.stream.events.CharactersEvent;
42  import com.bea.xml.stream.events.StartDocumentEvent;
43  import com.bea.xml.stream.events.EndDocumentEvent;
44  import com.bea.xml.stream.events.ProcessingInstructionEvent;
45  import com.bea.xml.stream.events.CommentEvent;
46  import com.bea.xml.stream.events.EntityReferenceEvent;
47  import com.bea.xml.stream.events.DTDEvent;
48  
49  
50  /***
51   * <p> The default factory for creating events.
52   */
53  
54  public class EventFactory extends XMLEventFactory {
55    private Location location;
56  
57    public void setLocation(Location l) {
58      location = l;
59    }
60    public Attribute createAttribute(QName name,
61                                     String value){ 
62      return new AttributeBase(name,value);
63    }
64  
65    public Attribute createAttribute(String localName, 
66                                     String value){ 
67      return new AttributeBase("",localName,value);
68    }
69    public Attribute createAttribute(String prefix,
70                                     String namespaceURI,
71                                     String localName,
72                                     String value) {
73      return new AttributeBase(prefix,namespaceURI,localName,value,"CDATA");
74    }
75    public Namespace createNamespace(String namespaceURI){ 
76      return new NamespaceBase(namespaceURI);
77    }
78    public Namespace createNamespace(String prefix, String namespaceUri){
79      if (prefix == null)
80        throw new NullPointerException("The prefix of a namespace may "+
81                                       "not be set to null");
82      return new NamespaceBase(prefix,namespaceUri);
83    }
84    public StartElement createStartElement(QName name,
85                                           Iterator attributes,
86                                           Iterator namespaces){ 
87      StartElementEvent e=  
88        new StartElementEvent(name);
89      while(attributes != null && attributes.hasNext()) 
90        e.addAttribute((Attribute) attributes.next());
91      while(namespaces != null && namespaces.hasNext()) 
92        e.addNamespace((Namespace) namespaces.next());
93      return e;
94  
95    }
96  
97    public StartElement createStartElement(String prefix,
98                                           String namespaceUri,
99                                           String localName){ 
100     return new StartElementEvent(new QName(namespaceUri,localName,prefix));
101   }
102   public static String checkPrefix(String prefix) {
103     if (prefix == null) return "";
104     return prefix;
105   }
106   public StartElement createStartElement(String prefix,
107                                          String namespaceUri,
108                                          String localName,
109                                          Iterator attributes,
110                                          Iterator namespaces){ 
111     prefix=checkPrefix(prefix);
112     StartElementEvent e=  
113       new StartElementEvent(new QName(namespaceUri,localName,prefix));
114     while(attributes != null && attributes.hasNext()) 
115       e.addAttribute((Attribute) attributes.next());
116     while(namespaces != null && namespaces.hasNext()) 
117       e.addNamespace((Namespace) namespaces.next());
118     return e;
119   }
120   public StartElement createStartElement(String prefix,
121                                          String namespaceUri,
122                                          String localName,
123                                          Iterator attributes,
124                                          Iterator namespaces,
125                                          NamespaceContext context){ 
126     prefix=checkPrefix(prefix);
127     StartElementEvent e=  
128       new StartElementEvent(new QName(namespaceUri,localName,prefix));
129     while(attributes != null && attributes.hasNext()) 
130       e.addAttribute((Attribute)attributes.next());
131     while(namespaces != null && namespaces.hasNext()) 
132       e.addNamespace((Namespace)namespaces.next());
133     e.setNamespaceContext(context);
134     return e;
135   }
136 
137   public EndElement createEndElement(QName name,
138                                      Iterator namespaces){ 
139     EndElementEvent e =
140       new EndElementEvent(name);
141     while(namespaces != null && namespaces.hasNext())
142       e.addNamespace((Namespace) namespaces.next());
143     return e;
144 
145   }
146 
147   public EndElement createEndElement(String prefix, 
148                                      String namespaceUri,
149                                      String localName){ 
150     prefix=checkPrefix(prefix);
151     return new EndElementEvent(new QName(namespaceUri,localName,prefix));
152   }
153 
154   public EndElement createEndElement(String prefix, 
155                                      String namespaceUri,
156                                      String localName,
157                                      Iterator namespaces){ 
158     prefix=checkPrefix(prefix);
159     EndElementEvent e =
160       new EndElementEvent(new QName(namespaceUri,localName,prefix));
161     while(namespaces.hasNext())
162       e.addNamespace((Namespace) namespaces.next());
163     return e;
164   }
165 
166 
167 
168   public Characters createCharacters(String content){ 
169     return new CharactersEvent(content);
170   }
171   public Characters createCData(String content) {
172     return new CharactersEvent(content,true);
173   }
174   public StartDocument createStartDocument(){ 
175     return new StartDocumentEvent();
176   }
177   public StartDocument createStartDocument(String encoding,
178                                                   String version,
179                                                   boolean standalone){ 
180     StartDocumentEvent e = new StartDocumentEvent();
181     e.setEncoding(encoding);
182     e.setVersion(version);
183     e.setStandalone(standalone);
184     return e;
185   }
186   public StartDocument createStartDocument(String encoding,
187                                                   String version){ 
188     StartDocumentEvent e = new StartDocumentEvent();
189     e.setEncoding(encoding);
190     e.setVersion(version);
191     return e;
192   }
193 
194   public StartDocument createStartDocument(String encoding){ 
195     StartDocumentEvent e = new StartDocumentEvent();
196     e.setEncoding(encoding);
197     return e;
198   }
199 
200   public EndDocument createEndDocument(){ 
201     return new EndDocumentEvent();
202   }
203 
204   /***********
205   public AttributeIterator createAttributeIterator(Iterator iterator){ 
206     return new AttributeIteratorImpl(iterator);
207   }
208 
209   public NamespaceIterator createNamespaceIterator(Iterator iterator){ 
210     return new NamespaceIteratorImpl(iterator);
211   }
212   **********/
213 
214 
215   public EntityReference createEntityReference(String name,
216                                                EntityDeclaration declaration) {
217     return new EntityReferenceEvent(name,declaration);
218   }
219 
220   public Characters createSpace(String content) {
221     CharactersEvent c = new CharactersEvent(content);
222     c.setSpace(true);
223     return c;
224   }
225 
226   public Characters createIgnorableSpace(String content) {
227     CharactersEvent c = new CharactersEvent(content);
228     c.setSpace(true);
229     c.setIgnorable(true);
230     return c;
231   }
232 
233   public Comment createComment(String text) {
234     return new CommentEvent(text);
235   }
236 
237   public ProcessingInstruction createProcessingInstruction(String target, String data) {
238     return new ProcessingInstructionEvent(target,data);
239   }
240 
241   public DTD createDTD(String dtd) {
242     return new DTDEvent(dtd);
243   }
244 }
245 
246 
247 
248 
249