KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > caucho > xml > stream > events > StartElementImpl


1 /*
2 * Copyright (c) 1998-2006 Caucho Technology -- all rights reserved
3 *
4 * This file is part of Resin(R) Open Source
5 *
6 * Each copy or derived work must preserve the copyright notice and this
7 * notice unmodified.
8 *
9 * Resin Open Source is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * Resin Open Source is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
17 * of NON-INFRINGEMENT. See the GNU General Public License for more
18 * details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with Resin Open Source; if not, write to the
22 *
23 * Free Software Foundation, Inc.
24 * 59 Temple Place, Suite 330
25 * Boston, MA 02111-1307 USA
26 *
27 * @author Emil Ong
28 */

29
30 package com.caucho.xml.stream.events;
31
32 import javax.xml.namespace.NamespaceContext JavaDoc;
33 import javax.xml.namespace.QName JavaDoc;
34 import javax.xml.stream.XMLStreamException;
35 import javax.xml.stream.events.Attribute;
36 import javax.xml.stream.events.Namespace;
37 import javax.xml.stream.events.StartElement;
38 import java.io.IOException JavaDoc;
39 import java.io.Writer JavaDoc;
40 import java.util.HashMap JavaDoc;
41 import java.util.Iterator JavaDoc;
42
43 public class StartElementImpl extends XMLEventImpl implements StartElement {
44   private final QName JavaDoc _name;
45   private final HashMap JavaDoc<QName JavaDoc, Attribute> _attributes;
46   private final HashMap JavaDoc<String JavaDoc, Namespace> _namespaces;
47   private final NamespaceContext JavaDoc _namespaceContext;
48
49   public StartElementImpl(QName JavaDoc name, HashMap JavaDoc<QName JavaDoc, Attribute> attributes,
50                           HashMap JavaDoc<String JavaDoc, Namespace> namespaces,
51                           NamespaceContext JavaDoc namespaceContext)
52   {
53     _name = name;
54     _attributes = attributes;
55     _namespaces = namespaces;
56     _namespaceContext = namespaceContext;
57   }
58
59   public Attribute getAttributeByName(QName JavaDoc name)
60   {
61     return _attributes.get(name);
62   }
63
64   public Iterator JavaDoc getAttributes()
65   {
66     return _attributes.values().iterator();
67   }
68
69   public QName JavaDoc getName()
70   {
71     return _name;
72   }
73
74   public NamespaceContext JavaDoc getNamespaceContext()
75   {
76     return _namespaceContext;
77   }
78
79   public Iterator JavaDoc getNamespaces()
80   {
81     return _namespaces.values().iterator();
82   }
83
84   public String JavaDoc getNamespaceURI(String JavaDoc prefix)
85   {
86     return _namespaces.get(prefix).getNamespaceURI();
87   }
88
89   public int getEventType()
90   {
91     return START_ELEMENT;
92   }
93
94   public void writeAsEncodedUnicode(Writer JavaDoc writer)
95     throws XMLStreamException
96   {
97     try {
98       writer.write("<" + _name + ">");
99
100       for (Attribute attribute : _attributes.values())
101         attribute.writeAsEncodedUnicode(writer);
102     }
103     catch (IOException JavaDoc e) {
104       throw new XMLStreamException(e);
105     }
106   }
107
108   public String JavaDoc toString()
109   {
110     return "StartElement[" + _name + "]";
111   }
112 }
113
114
Popular Tags