Changeset 3021 for OAIHarvester


Ignore:
Timestamp:
06/11/13 22:15:50 (11 years ago)
Author:
oschonef
Message:
  • creative hanbdling of resumptionToken for non-conforming OAI providers
File:
1 edited

Legend:

Unmodified
Added
Removed
  • OAIHarvester/trunk/OAIHarvester/src/main/java/eu/clarin/cmdi/oai/harvester/impl/HarvestWorker.java

    r3016 r3021  
    359359            }
    360360
    361             String nextToken = null;
    362 
    363361            response.readStart(OAI_NS, "ListRecords", true);
    364362            header.reset();
     
    416414             * expect resumptionToken (possibly empty) when request was resumed
    417415             */
    418             if (response.readStart(OAI_NS, "resumptionToken",
    419                     (token != null), true)) {
     416            String nextToken = null;
     417            boolean got_token = false;
     418            if (response.readStart(OAI_NS, "resumptionToken", false, true)) {
    420419                // XXX: read attributes here!
    421420                response.consumeStart();
     
    423422                nextToken = response.readString(false);
    424423                if (nextToken != null) {
    425                     job.setResumptionToken(nextToken);
     424                    if (!nextToken.isEmpty()) {
     425                        job.setResumptionToken(nextToken);
     426                    } else {
     427                        nextToken = null;
     428                    }
    426429                }
    427430                response.readEnd(OAI_NS, "resumptionToken");
     431                got_token = true;
     432            }
     433            if ((token != null) && (nextToken == null) && !got_token) {
     434                logger.error("An <resumptionToken> element was expected, " +
     435                        "but none was found; assuming a complete result list.");
     436                logger.error("An OAI provider is required to serialize an " +
     437                        "empty <resumptionToken> element to announce that " +
     438                        "the result list is complete.");
    428439            }
    429440            response.readEnd(OAI_NS, "ListRecords");
Note: See TracChangeset for help on using the changeset viewer.