1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.jetspeed.rewriter.html.neko;
18
19 import org.apache.jetspeed.rewriter.MutableAttributes;
20 import org.apache.xerces.xni.Augmentations;
21 import org.apache.xerces.xni.QName;
22 import org.apache.xerces.xni.XMLAttributes;
23
24 /***
25 * <p>
26 * XMLAttributesWrapper
27 * </p>
28 * <p>
29 *
30 * </p>
31 * @author <a href="mailto:weaver@apache.org">Scott T. Weaver</a>
32 * @version $Id: XMLAttributesWrapper.java 516448 2007-03-09 16:25:47Z ate $
33 *
34 */
35 public class XMLAttributesWrapper implements MutableAttributes
36 {
37 protected XMLAttributes attrs;
38
39 /***
40 *
41 */
42 public XMLAttributesWrapper(XMLAttributes attrs)
43 {
44 super();
45 this.attrs = attrs;
46 }
47
48 /***
49 * <p>
50 * addAttribute
51 * </p>
52 *
53 * @param arg0
54 * @param arg1
55 * @param arg2
56 * @return
57 */
58 public int addAttribute( QName arg0, String arg1, String arg2 )
59 {
60 int i = getIndex( arg0.rawname );
61 if ( i >= 0 )
62 attrs.removeAttributeAt( i );
63
64 return attrs.addAttribute( arg0, arg1, arg2 );
65 }
66 /***
67 * <p>
68 * equals
69 * </p>
70 *
71 * @see java.lang.Object#equals(java.lang.Object)
72 * @param obj
73 * @return
74 */
75 public boolean equals( Object obj )
76 {
77 return attrs.equals(obj);
78 }
79 /***
80 * <p>
81 * getAugmentations
82 * </p>
83 *
84 * @param arg0
85 * @return
86 */
87 public Augmentations getAugmentations( int arg0 )
88 {
89 return attrs.getAugmentations(arg0);
90 }
91 /***
92 * <p>
93 * getAugmentations
94 * </p>
95 *
96 * @param arg0
97 * @return
98 */
99 public Augmentations getAugmentations( String qName )
100 {
101 return attrs.getAugmentations(asNekoAttributeName(qName)) ;
102 }
103 /***
104 * <p>
105 * getAugmentations
106 * </p>
107 *
108 * @param arg0
109 * @param arg1
110 * @return
111 */
112 public Augmentations getAugmentations( String uri, String localPart )
113 {
114 return attrs.getAugmentations(uri,asNekoAttributeName(localPart));
115 }
116 /***
117 * <p>
118 * getIndex
119 * </p>
120 *
121 * @param arg0
122 * @return
123 */
124 public int getIndex( String qName )
125 {
126 return attrs.getIndex(asNekoAttributeName(qName));
127 }
128 /***
129 * <p>
130 * getIndex
131 * </p>
132 *
133 * @param arg0
134 * @param arg1
135 * @return
136 */
137 public int getIndex( String uri, String localName )
138 {
139 return attrs.getIndex(uri,asNekoAttributeName(localName));
140 }
141 /***
142 * <p>
143 * getLength
144 * </p>
145 *
146 * @return
147 */
148 public int getLength()
149 {
150 return attrs.getLength();
151 }
152 /***
153 * <p>
154 * getLocalName
155 * </p>
156 *
157 * @param arg0
158 * @return
159 */
160 public String getLocalName( int arg0 )
161 {
162 return attrs.getLocalName(arg0);
163 }
164 /***
165 * <p>
166 * getName
167 * </p>
168 *
169 * @param arg0
170 * @param arg1
171 */
172 public void getName( int arg0, QName arg1 )
173 {
174 attrs.getName(arg0, arg1);
175 }
176 /***
177 * <p>
178 * getNonNormalizedValue
179 * </p>
180 *
181 * @param arg0
182 * @return
183 */
184 public String getNonNormalizedValue( int arg0 )
185 {
186 return attrs.getNonNormalizedValue(arg0);
187 }
188 /***
189 * <p>
190 * getPrefix
191 * </p>
192 *
193 * @param arg0
194 * @return
195 */
196 public String getPrefix( int arg0 )
197 {
198 return attrs.getPrefix(arg0);
199 }
200 /***
201 * <p>
202 * getQName
203 * </p>
204 *
205 * @param arg0
206 * @return
207 */
208 public String getQName( int arg0 )
209 {
210 return attrs.getQName(arg0);
211 }
212 /***
213 * <p>
214 * getType
215 * </p>
216 *
217 * @param arg0
218 * @return
219 */
220 public String getType( int arg0 )
221 {
222 return attrs.getType(arg0);
223 }
224 /***
225 * <p>
226 * getType
227 * </p>
228 *
229 * @param arg0
230 * @return
231 */
232 public String getType( String qName )
233 {
234 return attrs.getType(asNekoAttributeName(qName));
235 }
236 /***
237 * <p>
238 * getType
239 * </p>
240 *
241 * @param arg0
242 * @param arg1
243 * @return
244 */
245 public String getType( String uri, String localName )
246 {
247 return attrs.getType(uri, asNekoAttributeName(localName));
248 }
249 /***
250 * <p>
251 * getURI
252 * </p>
253 *
254 * @param arg0
255 * @return
256 */
257 public String getURI( int arg0 )
258 {
259 return attrs.getURI(arg0);
260 }
261 /***
262 * <p>
263 * getValue
264 * </p>
265 *
266 * @param arg0
267 * @return
268 */
269 public String getValue( int arg0 )
270 {
271 return attrs.getValue(arg0);
272 }
273 /***
274 * <p>
275 * getValue
276 * </p>
277 *
278 * @param arg0
279 * @return
280 */
281 public String getValue( String qName )
282 {
283 return attrs.getValue(asNekoAttributeName(qName));
284 }
285 /***
286 * <p>
287 * getValue
288 * </p>
289 *
290 * @param arg0
291 * @param arg1
292 * @return
293 */
294 public String getValue( String uri, String localName )
295 {
296 return attrs.getValue(uri, asNekoAttributeName(localName));
297 }
298 /***
299 * <p>
300 * hashCode
301 * </p>
302 *
303 * @see java.lang.Object#hashCode()
304 * @return
305 */
306 public int hashCode()
307 {
308 return attrs.hashCode();
309 }
310 /***
311 * <p>
312 * isSpecified
313 * </p>
314 *
315 * @param arg0
316 * @return
317 */
318 public boolean isSpecified( int arg0 )
319 {
320 return attrs.isSpecified(arg0);
321 }
322 /***
323 * <p>
324 * removeAllAttributes
325 * </p>
326 *
327 *
328 */
329 public void removeAllAttributes()
330 {
331 attrs.removeAllAttributes();
332 }
333 /***
334 * <p>
335 * removeAttributeAt
336 * </p>
337 *
338 * @param arg0
339 */
340 public void removeAttributeAt( int arg0 )
341 {
342 attrs.removeAttributeAt(arg0);
343 }
344 /***
345 * <p>
346 * setAugmentations
347 * </p>
348 *
349 * @param arg0
350 * @param arg1
351 */
352 public void setAugmentations( int arg0, Augmentations arg1 )
353 {
354 attrs.setAugmentations(arg0, arg1);
355 }
356 /***
357 * <p>
358 * setName
359 * </p>
360 *
361 * @param arg0
362 * @param arg1
363 */
364 public void setName( int arg0, QName arg1 )
365 {
366 attrs.setName(arg0, arg1);
367 }
368 /***
369 * <p>
370 * setNonNormalizedValue
371 * </p>
372 *
373 * @param arg0
374 * @param arg1
375 */
376 public void setNonNormalizedValue( int arg0, String arg1 )
377 {
378 attrs.setNonNormalizedValue(arg0, arg1);
379 }
380 /***
381 * <p>
382 * setSpecified
383 * </p>
384 *
385 * @param arg0
386 * @param arg1
387 */
388 public void setSpecified( int arg0, boolean arg1 )
389 {
390 attrs.setSpecified(arg0, arg1);
391 }
392 /***
393 * <p>
394 * setType
395 * </p>
396 *
397 * @param arg0
398 * @param arg1
399 */
400 public void setType( int arg0, String arg1 )
401 {
402 attrs.setType(arg0, arg1);
403 }
404 /***
405 * <p>
406 * setValue
407 * </p>
408 *
409 * @param arg0
410 * @param arg1
411 */
412 public void setValue( int arg0, String arg1 )
413 {
414 attrs.setValue(arg0, arg1);
415 }
416 /***
417 * <p>
418 * toString
419 * </p>
420 *
421 * @see java.lang.Object#toString()
422 * @return
423 */
424 public String toString()
425 {
426 return attrs.toString();
427 }
428 /***
429 * <p>
430 * addAttribute
431 * </p>
432 *
433 * @see org.apache.jetspeed.rewriter.MutableAttributes#addAttribute(java.lang.String, java.lang.Object)
434 * @param name
435 * @param value
436 */
437 public void addAttribute( String name, Object value )
438 {
439 QName qName = null ;
440 int i = name.indexOf(':');
441 if (i < 0)
442 {
443 name = name.toLowerCase();
444 qName = new QName(null,name,name,null);
445 }
446 else
447 {
448 String prefix = name.substring(0,i);
449 String localPart = name.substring(i+1).toLowerCase();
450 name = name.toLowerCase();
451 qName = new QName(prefix,localPart,name,null);
452 }
453 addAttribute(qName,"CDATA",value.toString());
454 }
455
456
457
458
459 protected String asNekoAttributeName(String n)
460 {
461
462 return n != null ? n.toLowerCase() : null ;
463 }
464 }