View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    * 
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   * 
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
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     // Support Methods
458     
459     protected String asNekoAttributeName(String n)
460     {
461         // neko, by default, converts attribute names to lower case
462         return n != null ? n.toLowerCase() : null ;
463     }
464 }