Changeset 3927 for OAIHarvester
- Timestamp:
- 11/04/13 15:19:42 (11 years ago)
- Location:
- OAIHarvester/trunk/OAIHarvester/src/main/java/eu/clarin/cmdi/oai/harvester/impl
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
OAIHarvester/trunk/OAIHarvester/src/main/java/eu/clarin/cmdi/oai/harvester/impl/Response.java
r3015 r3927 201 201 if (!reader.isEndElement()) { 202 202 while (reader.hasNext()) { 203 // System.err.println(" LOOP: " + dumpState()); 204 consumeWhitespace(); 203 // System.err.println(" LOOP: " + dumpState()); 204 if (reader.isWhiteSpace()) { 205 reader.next(); 206 continue; 207 } 205 208 if (reader.isStartElement()) { 206 209 if (namespaceURI.equals(reader.getNamespaceURI()) && … … 223 226 } 224 227 if (required) { 225 logger.error("fail: {}", dumpState());226 227 228 // System.err.println("--> error, not found @ " + 228 229 // toReadable(reader)); 229 if (reader.hasName()) { 230 throw new XMLStreamException("expected element '" + 231 new QName(namespaceURI, localName) + "', but found '" + 232 reader.getName() + "'", reader.getLocation()); 233 } else { 234 throw new XMLStreamException("unexpacted state while scanning for start tag for element '" + new QName(namespaceURI, localName) + "'", reader.getLocation()); 235 } 230 throw new XMLStreamException("expected element '" + 231 new QName(namespaceURI, localName) + "', but found '" + 232 reader.getName() + "'", reader.getLocation()); 236 233 } 237 234 // System.err.println("--> not found @ " + toReadable(reader)); … … 254 251 // System.err.println(" LOOP " + dumpState() + " [" + 255 252 // level + "]"); 256 consumeWhitespace(); 253 if (reader.isWhiteSpace()) { 254 reader.next(); 255 continue; 256 } 257 257 if (skipContent) { 258 258 if (reader.isCharacters()) { … … 294 294 boolean peekStart(String namespaceURI, String localName) 295 295 throws XMLStreamException { 296 if (!reader.isEndElement()) { 297 while (reader.hasNext()) { 298 // System.err.println(" LOOP: " + dumpState()); 299 if (reader.isWhiteSpace()) { 300 reader.next(); 301 continue; 302 } 303 if (reader.isStartElement()) { 304 if (namespaceURI.equals(reader.getNamespaceURI()) && 305 localName.equals(reader.getLocalName())) { 306 return true; 307 } else { 308 return false; 309 } 310 } 311 if (reader.isCharacters() || reader.isEndElement()) { 312 break; 313 } 314 reader.next(); 315 } // while 316 } 317 return false; 296 if (reader.isWhiteSpace()) { 297 consumeWhitespace(); 298 } 299 if (!reader.isStartElement()) { 300 return false; 301 } 302 return namespaceURI.equals(reader.getNamespaceURI()) && 303 localName.equals(reader.getLocalName()); 318 304 } 319 305 -
OAIHarvester/trunk/OAIHarvester/src/main/java/eu/clarin/cmdi/oai/harvester/impl/XmlStreamReaderProxy.java
r3011 r3927 8 8 import javax.xml.stream.XMLStreamReader; 9 9 10 class XmlStreamReaderProxy implements XMLStreamReader { 10 11 final class XmlStreamReaderProxy implements XMLStreamReader { 11 12 private static enum State { 12 13 START_DOCUMENT, PROCESSING, END_DOCUMENT, PAST_END_DOCUMENT 13 14 } 15 14 16 private XMLStreamReader reader; 15 17 private State state; 16 18 private int depth; 17 19 20 18 21 XmlStreamReaderProxy() { 19 22 super(); 20 23 } 24 21 25 22 26 void reset(XMLStreamReader reader) throws XMLStreamException { … … 26 30 } 27 31 32 28 33 @Override 29 34 public void close() throws XMLStreamException { 30 35 } 31 36 37 32 38 @Override 33 39 public int getAttributeCount() { … … 35 41 XMLStreamConstants.ATTRIBUTE)) { 36 42 throw new IllegalStateException( 37 "Current event is not START_ELEMENT or ATTRIBUTE : " + reader.getLocation());43 "Current event is not START_ELEMENT or ATTRIBUTE"); 38 44 } 39 45 return reader.getAttributeCount(); 40 46 } 41 47 48 42 49 @Override 43 50 public String getAttributeLocalName(int index) { … … 45 52 XMLStreamConstants.ATTRIBUTE)) { 46 53 throw new IllegalStateException( 47 "Current event is not START_ELEMENT or ATTRIBUTE : " + reader.getLocation());54 "Current event is not START_ELEMENT or ATTRIBUTE"); 48 55 } 49 56 return reader.getAttributeLocalName(index); 50 57 } 51 58 59 52 60 @Override 53 61 public QName getAttributeName(int index) { … … 55 63 XMLStreamConstants.ATTRIBUTE)) { 56 64 throw new IllegalStateException( 57 "Current event is not START_ELEMENT or ATTRIBUTE : " + reader.getLocation());65 "Current event is not START_ELEMENT or ATTRIBUTE"); 58 66 } 59 67 return reader.getAttributeName(index); 60 68 } 61 69 70 62 71 @Override 63 72 public String getAttributeNamespace(int index) { … … 65 74 XMLStreamConstants.ATTRIBUTE)) { 66 75 throw new IllegalStateException( 67 "Current event is not START_ELEMENT or ATTRIBUTE : " + reader.getLocation());76 "Current event is not START_ELEMENT or ATTRIBUTE"); 68 77 } 69 78 return reader.getAttributeNamespace(index); 70 79 } 71 80 81 72 82 @Override 73 83 public String getAttributePrefix(int index) { … … 75 85 XMLStreamConstants.ATTRIBUTE)) { 76 86 throw new IllegalStateException( 77 "Current event is not START_ELEMENT or ATTRIBUTE : " + reader.getLocation());87 "Current event is not START_ELEMENT or ATTRIBUTE"); 78 88 } 79 89 return reader.getAttributePrefix(index); 80 90 } 81 91 92 82 93 @Override 83 94 public String getAttributeType(int index) { … … 85 96 XMLStreamConstants.ATTRIBUTE)) { 86 97 throw new IllegalStateException( 87 "Current event is not START_ELEMENT or ATTRIBUTE : " + reader.getLocation());98 "Current event is not START_ELEMENT or ATTRIBUTE"); 88 99 } 89 100 return reader.getAttributeType(index); 90 101 } 91 102 103 92 104 @Override 93 105 public String getAttributeValue(int index) { … … 95 107 XMLStreamConstants.ATTRIBUTE)) { 96 108 throw new IllegalStateException( 97 "Current event is not START_ELEMENT or ATTRIBUTE : " + reader.getLocation());109 "Current event is not START_ELEMENT or ATTRIBUTE"); 98 110 } 99 111 return reader.getAttributeValue(index); 100 112 } 101 113 114 102 115 @Override 103 116 public String getAttributeValue(String namespaceURI, String localName) { … … 105 118 XMLStreamConstants.ATTRIBUTE)) { 106 119 throw new IllegalStateException( 107 "Current event is not START_ELEMENT or ATTRIBUTE : " + reader.getLocation());120 "Current event is not START_ELEMENT or ATTRIBUTE"); 108 121 } 109 122 return reader.getAttributeValue(namespaceURI, localName); 110 123 } 124 111 125 112 126 @Override … … 115 129 } 116 130 131 117 132 @Override 118 133 public String getElementText() throws XMLStreamException { 119 134 if (!checkEventType(XMLStreamConstants.START_ELEMENT)) { 120 135 throw new IllegalStateException( 121 "Current event is not START_ELEMENT : " + reader.getLocation());136 "Current event is not START_ELEMENT"); 122 137 } 123 138 return reader.getElementText(); 124 139 } 140 125 141 126 142 @Override … … 128 144 return reader.getEncoding(); 129 145 } 146 130 147 131 148 @Override … … 145 162 } 146 163 164 147 165 @Override 148 166 public String getLocalName() { … … 150 168 XMLStreamConstants.END_ELEMENT, 151 169 XMLStreamConstants.ENTITY_REFERENCE)) { 152 throw new IllegalStateException("Current event is not " +153 "START_ELEMENT, END_ELEMENT or ENTITY_REFERENCE");170 throw new IllegalStateException("Current event is not " 171 + "START_ELEMENT, END_ELEMENT or ENTITY_REFERENCE"); 154 172 } 155 173 return reader.getLocalName(); 156 174 } 175 157 176 158 177 @Override … … 161 180 } 162 181 182 163 183 @Override 164 184 public QName getName() { 165 185 if (!checkEventTypes(XMLStreamConstants.START_ELEMENT, 166 186 XMLStreamConstants.END_ELEMENT)) { 167 throw new IllegalStateException("Current event is not " +168 "START_ELEMENT or END_ELEMENT: " + reader.getLocation());187 throw new IllegalStateException("Current event is not " 188 + "START_ELEMENT or END_ELEMENT"); 169 189 } 170 190 return reader.getName(); 171 191 } 172 192 193 173 194 @Override 174 195 public NamespaceContext getNamespaceContext() { 175 196 if (!checkEventTypes(XMLStreamConstants.START_ELEMENT, 176 197 XMLStreamConstants.END_ELEMENT, XMLStreamConstants.NAMESPACE)) { 177 throw new IllegalStateException("Current event is not " +178 "START_ELEMENT, END_ELEMENT or NAMESPACE: " + reader.getLocation());198 throw new IllegalStateException("Current event is not " 199 + "START_ELEMENT, END_ELEMENT or NAMESPACE"); 179 200 } 180 201 return reader.getNamespaceContext(); 181 202 } 182 203 204 183 205 @Override 184 206 public int getNamespaceCount() { 185 207 if (!checkEventTypes(XMLStreamConstants.START_ELEMENT, 186 208 XMLStreamConstants.END_ELEMENT, XMLStreamConstants.NAMESPACE)) { 187 throw new IllegalStateException("Current event is not " +188 "START_ELEMENT, END_ELEMENT or NAMESPACE: " + reader.getLocation());209 throw new IllegalStateException("Current event is not " 210 + "START_ELEMENT, END_ELEMENT or NAMESPACE"); 189 211 } 190 212 return reader.getNamespaceCount(); 191 213 } 192 214 215 193 216 @Override 194 217 public String getNamespacePrefix(int index) { 195 218 if (!checkEventTypes(XMLStreamConstants.START_ELEMENT, 196 219 XMLStreamConstants.END_ELEMENT, XMLStreamConstants.NAMESPACE)) { 197 throw new IllegalStateException("Current event is not " +198 "START_ELEMENT, END_ELEMENT or NAMESPACE: " + reader.getLocation());220 throw new IllegalStateException("Current event is not " 221 + "START_ELEMENT, END_ELEMENT or NAMESPACE"); 199 222 } 200 223 return reader.getNamespacePrefix(index); 201 224 } 202 225 226 203 227 @Override 204 228 public String getNamespaceURI() { 205 229 if (!checkEventTypes(XMLStreamConstants.START_ELEMENT, 206 230 XMLStreamConstants.END_ELEMENT, XMLStreamConstants.NAMESPACE)) { 207 throw new IllegalStateException("Current event is not " +208 "START_ELEMENT, END_ELEMENT or NAMESPACE: " + reader.getLocation());231 throw new IllegalStateException("Current event is not " 232 + "START_ELEMENT, END_ELEMENT or NAMESPACE"); 209 233 } 210 234 return reader.getNamespaceURI(); 211 235 } 236 212 237 213 238 @Override … … 216 241 } 217 242 243 218 244 @Override 219 245 public String getNamespaceURI(int index) { 220 246 if (!checkEventTypes(XMLStreamConstants.START_ELEMENT, 221 247 XMLStreamConstants.END_ELEMENT, XMLStreamConstants.NAMESPACE)) { 222 throw new IllegalStateException("Current event is not " +223 "START_ELEMENT, END_ELEMENT or NAMESPACE: " + reader.getLocation());248 throw new IllegalStateException("Current event is not " 249 + "START_ELEMENT, END_ELEMENT or NAMESPACE"); 224 250 } 225 251 return reader.getNamespaceURI(index); 226 252 } 253 227 254 228 255 @Override … … 230 257 if (!checkEventType(XMLStreamConstants.PROCESSING_INSTRUCTION)) { 231 258 throw new IllegalStateException( 232 "Current event is not PROCESSING_INSTRUCTION : " + reader.getLocation());259 "Current event is not PROCESSING_INSTRUCTION"); 233 260 } 234 261 return reader.getPIData(); 235 262 } 263 236 264 237 265 @Override … … 239 267 if (!checkEventType(XMLStreamConstants.PROCESSING_INSTRUCTION)) { 240 268 throw new IllegalStateException( 241 "Current event is not PROCESSING_INSTRUCTION : " + reader.getLocation());269 "Current event is not PROCESSING_INSTRUCTION"); 242 270 } 243 271 return reader.getPITarget(); 244 272 } 273 245 274 246 275 @Override … … 249 278 } 250 279 280 251 281 @Override 252 282 public Object getProperty(String name) throws IllegalArgumentException { … … 254 284 } 255 285 286 256 287 @Override 257 288 public String getText() { 258 289 if (!checkEventTypes(XMLStreamConstants.CHARACTERS, 259 XMLStreamConstants.CDATA, 260 XMLStreamConstants.COMMENT, 261 XMLStreamConstants.SPACE, 262 XMLStreamConstants.ENTITY_REFERENCE)) { 290 XMLStreamConstants.CDATA, XMLStreamConstants.COMMENT, 291 XMLStreamConstants.SPACE, XMLStreamConstants.ENTITY_REFERENCE)) { 263 292 throw new IllegalStateException("Current event is a text event"); 264 293 } 265 294 return reader.getText(); 266 295 } 296 267 297 268 298 @Override 269 299 public char[] getTextCharacters() { 270 300 if (!checkEventTypes(XMLStreamConstants.CHARACTERS, 271 XMLStreamConstants.CDATA, 272 XMLStreamConstants.COMMENT, 301 XMLStreamConstants.CDATA, XMLStreamConstants.COMMENT, 273 302 XMLStreamConstants.SPACE)) { 274 303 throw new IllegalStateException("Current event is a text event"); … … 276 305 return reader.getTextCharacters(); 277 306 } 307 278 308 279 309 @Override … … 290 320 } 291 321 322 292 323 @Override 293 324 public int getTextLength() { 294 325 if (!checkEventTypes(XMLStreamConstants.CHARACTERS, 295 XMLStreamConstants.CDATA, 296 XMLStreamConstants.COMMENT, 326 XMLStreamConstants.CDATA, XMLStreamConstants.COMMENT, 297 327 XMLStreamConstants.SPACE)) { 298 328 throw new IllegalStateException("invalid state"); … … 301 331 } 302 332 333 303 334 @Override 304 335 public int getTextStart() { 305 336 if (!checkEventTypes(XMLStreamConstants.CHARACTERS, 306 XMLStreamConstants.CDATA, 307 XMLStreamConstants.COMMENT, 337 XMLStreamConstants.CDATA, XMLStreamConstants.COMMENT, 308 338 XMLStreamConstants.SPACE)) { 309 339 throw new IllegalStateException("invalid state"); … … 312 342 } 313 343 344 314 345 @Override 315 346 public String getVersion() { … … 317 348 } 318 349 350 319 351 @Override 320 352 public boolean hasName() { … … 330 362 } 331 363 } 364 332 365 333 366 @Override … … 339 372 } 340 373 374 341 375 @Override 342 376 public boolean hasText() { … … 353 387 } 354 388 389 355 390 @Override 356 391 public boolean isAttributeSpecified(int index) { … … 363 398 } 364 399 400 365 401 @Override 366 402 public boolean isCharacters() { … … 377 413 } 378 414 415 379 416 @Override 380 417 public boolean isEndElement() { … … 390 427 } 391 428 } 429 392 430 393 431 @Override … … 396 434 } 397 435 436 398 437 @Override 399 438 public boolean isStartElement() { … … 410 449 } 411 450 451 412 452 @Override 413 453 public boolean isWhiteSpace() { … … 423 463 } 424 464 } 465 425 466 426 467 @Override … … 461 502 return type; 462 503 } 504 463 505 464 506 @Override … … 490 532 if ((type != XMLStreamConstants.START_ELEMENT) && 491 533 (type != XMLStreamConstants.END_ELEMENT)) { 492 throw new XMLStreamException("expected start or end tag", getLocation()); 534 throw new XMLStreamException("expected start or end tag", 535 getLocation()); 493 536 } 494 537 return type; 495 538 } 539 496 540 497 541 @Override … … 501 545 } 502 546 547 503 548 @Override 504 549 public boolean standaloneSet() { … … 506 551 } 507 552 553 508 554 private boolean checkEventType(int type) { 509 555 switch (state) { … … 518 564 } // switch 519 565 } 566 520 567 521 568 private boolean checkEventTypes(int... types) {
Note: See TracChangeset
for help on using the changeset viewer.