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