1 28 29 package com.caucho.xml2; 30 31 import com.caucho.util.CharBuffer; 32 import com.caucho.xml.QName; 33 34 import org.xml.sax.Attributes ; 35 36 39 class AttributesImpl implements Attributes { 40 private InternQName []_names = new InternQName[32]; 41 private String []_values = new String [32]; 42 private int _size; 43 44 47 void clear() 48 { 49 _size = 0; 50 } 51 52 55 void add(InternQName name, String value) 56 { 57 if (_size == _names.length) { 58 InternQName []newNames = new InternQName[2 * _names.length]; 59 String []newValues = new String [2 * _names.length]; 60 System.arraycopy(_names, 0, newNames, 0, _names.length); 61 System.arraycopy(_values, 0, newValues, 0, _names.length); 62 _names = newNames; 63 _values = newValues; 64 } 65 66 _names[_size] = name; 67 _values[_size] = value; 68 _size++; 69 } 70 71 74 public int getLength() 75 { 76 return _size; 77 } 78 79 82 88 89 92 public String getQName(int i) 93 { 94 return _names[i].getName(); 95 } 96 97 100 public String getURI(int i) 101 { 102 throw new UnsupportedOperationException (); 103 } 105 106 109 public String getLocalName(int i) 110 { 111 return _names[i].getLocalName(); 112 } 113 114 117 public String getValue(int i) 118 { 119 return _values[i]; 120 } 121 122 125 public String getValue(String qName) 126 { 127 for (int i = _size - 1; i >= 0; i--) { 128 if (qName.equals(_names[i].getName())) 129 return _values[i]; 130 } 131 132 return null; 133 } 134 135 138 public String getValue(String uri, String localName) 139 { 140 for (int i = _size - 1; i >= 0; i--) { 141 if (uri.equals(_names[i].getNamespaceURI()) && 142 localName.equals(_names[i].getLocalName())) 143 return _values[i]; 144 } 145 146 return null; 147 } 148 149 152 public int getIndex(String qName) 153 { 154 for (int i = _size - 1; i >= 0; i--) { 155 if (qName.equals(_names[i].getName())) 156 return i; 157 } 158 159 return -1; 160 } 161 162 165 public int getIndex(String uri, String localName) 166 { 167 for (int i = _size -1; i >= 0; i--) { 168 if (uri.equals(_names[i].getNamespaceURI()) && 169 localName.equals(_names[i].getLocalName())) 170 return i; 171 } 172 173 return -1; 174 } 175 176 179 public String getType(int i) 180 { 181 return "CDATA"; 182 } 183 184 187 public String getType(String uri, String localName) 188 { 189 return "CDATA"; 190 } 191 192 195 public String getType(String qName) 196 { 197 return "CDATA"; 198 } 199 200 203 public String toString() 204 { 205 CharBuffer cb = new CharBuffer(); 206 cb.append("AttributesImpl["); 207 for (int i = 0; i < _size; i++) { 208 cb.append(" "); 209 cb.append(_names[i]); 210 cb.append("=\""); 211 cb.append(_values[i]); 212 cb.append("\""); 213 } 214 cb.append("]"); 215 216 return cb.close(); 217 } 218 } 219 | Popular Tags |