From e40955a62fb5af4ea387a841de3f3fe8481e7176 Mon Sep 17 00:00:00 2001 From: Maximilian Brodhun <brodhun@sub.uni-goettingen.de> Date: Thu, 28 Nov 2019 17:05:00 +0100 Subject: [PATCH] Error repair --- .../info/textgrid/middleware/OAIPMHImpl.java | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java index d6f659e4..dde99efe 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java @@ -276,7 +276,7 @@ public class OAIPMHImpl implements OAIPMHProducer { // If metadataFormat IS SET, set recordListDeliverer accordingly. IdentifierListDelivererInterface idListDeliv = null; if (request.getMetadataPrefix() != null) { - if (request.getMetadataPrefix().equals(TGConstants.METADATA_DC_PREFIX)) { + if (request.getMetadataPrefix().equals(OAIPMHUtilities.OAIDC_PREFIX)) { idListDeliv = this.identifierListDC; } else { idListDeliv = this.identifierListIDIOM; @@ -298,11 +298,23 @@ public class OAIPMHImpl implements OAIPMHProducer { } } - ListIdentifiersType listIdentifiers = idListDeliv.processIdentifierList(request.getFrom(), - request.getUntil(), request.getSet(), request.getResumptionToken()); + ListIdentifiersType listIdentifiers = null; + try { + listIdentifiers = idListDeliv.processIdentifierList(request.getFrom(), request.getUntil(), + request.getSet(), request.getResumptionToken()); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } if (listIdentifiers != null) { - oaipmhRoot.setListIdentifiers(listIdentifiers); + if (this.identifierListDC.getResultSize() == 0) { + requestErrors.setError("RecordMatchError", + "The combination of the values of the from, until, set and metadataPrefix arguments results in an empty list."); + oaipmhRoot.getError().add(requestErrors.getError()); + } else { + oaipmhRoot.setListIdentifiers(listIdentifiers); + } } else { ErrorHandler idError = new ErrorHandler(); idError.setError(TGConstants.OAI_NO_RECORD_MATCH, "The value of the identifier: " @@ -404,7 +416,7 @@ public class OAIPMHImpl implements OAIPMHProducer { // If metadataFormat IS SET, set recordListDeliverer accordingly. RecordListDelivererInterface recListDeliv = null; if (request.getMetadataPrefix() != null) { - if (request.getMetadataPrefix().equals(TGConstants.METADATA_DC_PREFIX)) { + if (request.getMetadataPrefix().equals(OAIPMHUtilities.OAIDC_PREFIX)) { recListDeliv = this.recordListDC; } else { recListDeliv = this.recordListIDIOM; @@ -429,7 +441,13 @@ public class OAIPMHImpl implements OAIPMHProducer { request.getSet(), request.getResumptionToken()); if (listRecords != null) { - oaipmhRoot.setListRecords(listRecords); + if (this.recordListDC.getResultSize() == 0) { + requestErrors.setError("RecordMatchError", + "The combination of the values of the from, until, set and metadataPrefix arguments results in an empty list."); + oaipmhRoot.getError().add(requestErrors.getError()); + } else { + oaipmhRoot.setListRecords(listRecords); + } } } -- GitLab