1:
37:
38: package ;
39:
40: import ;
41:
42: import ;
43: import ;
44: import ;
45: import ;
46: import ;
47: import ;
48: import ;
49: import ;
50:
51:
56: public abstract class XMLEventImpl
57: implements XMLEvent
58: {
59:
60: protected final Location location;
61:
62: protected XMLEventImpl(Location location)
63: {
64: this.location = location;
65: }
66:
67: public abstract int getEventType();
68:
69: public Location getLocation()
70: {
71: return location;
72: }
73:
74: public boolean isStartElement()
75: {
76: return getEventType() == START_ELEMENT;
77: }
78:
79: public boolean isAttribute()
80: {
81: return getEventType() == ATTRIBUTE;
82: }
83:
84: public boolean isNamespace()
85: {
86: return getEventType() == NAMESPACE;
87: }
88:
89: public boolean isEndElement()
90: {
91: return getEventType() == END_ELEMENT;
92: }
93:
94: public boolean isEntityReference()
95: {
96: return getEventType() == ENTITY_REFERENCE;
97: }
98:
99: public boolean isProcessingInstruction()
100: {
101: return getEventType() == PROCESSING_INSTRUCTION;
102: }
103:
104: public boolean isCharacters()
105: {
106: int et = getEventType();
107: return et == CHARACTERS || et == CDATA;
108: }
109:
110: public boolean isStartDocument()
111: {
112: return getEventType() == START_DOCUMENT;
113: }
114:
115: public boolean isEndDocument()
116: {
117: return getEventType() == END_DOCUMENT;
118: }
119:
120: public StartElement asStartElement()
121: {
122: return (StartElement) this;
123: }
124:
125: public EndElement asEndElement()
126: {
127: return (EndElement) this;
128: }
129:
130: public Characters asCharacters()
131: {
132: return (Characters) this;
133: }
134:
135: public QName getSchemaType()
136: {
137: return null;
138: }
139:
140: public abstract void writeAsEncodedUnicode(Writer writer)
141: throws XMLStreamException;
142:
143: protected String encode(String text, boolean inAttr)
144: {
145: int len = text.length();
146: CPStringBuilder buf = null;
147: for (int i = 0; i < len; i++)
148: {
149: char c = text.charAt(i);
150: if (c == '<')
151: {
152: if (buf == null)
153: {
154: buf = new CPStringBuilder(text.substring(0, i));
155: }
156: buf.append("<");
157: }
158: else if (c == '>')
159: {
160: if (buf == null)
161: {
162: buf = new CPStringBuilder(text.substring(0, i));
163: }
164: buf.append(">");
165: }
166: else if (c == '&')
167: {
168: if (buf == null)
169: {
170: buf = new CPStringBuilder(text.substring(0, i));
171: }
172: buf.append("&");
173: }
174: else if (c == '\'' && inAttr)
175: {
176: if (buf == null)
177: {
178: buf = new CPStringBuilder(text.substring(0, i));
179: }
180: buf.append("'");
181: }
182: else if (c == '"' && inAttr)
183: {
184: if (buf == null)
185: {
186: buf = new CPStringBuilder(text.substring(0, i));
187: }
188: buf.append(""");
189: }
190: else if (buf != null)
191: {
192: buf.append(c);
193: }
194: }
195: return (buf == null) ? text : buf.toString();
196: }
197:
198: }