From 5042d2adf6fe93b7f7054dafedd54880d56f63a7 Mon Sep 17 00:00:00 2001
From: Maximilian Brodhun <brodhun@sub.uni-goettingen.de>
Date: Wed, 26 Mar 2014 16:30:39 +0100
Subject: [PATCH] Refactoring: Error handling in ListIdentifier und ListRecords
 request

---
 .../info/textgrid/middleware/OAIPMHImpl.java  | 20 +++++++++++--------
 .../info/textgrid/middleware/TGConstants.java |  2 +-
 .../info/textgrid/middleware/OaiPmhTest.java  | 14 ++++++-------
 3 files changed, 20 insertions(+), 16 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 ca20749c..feedf3ed 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java
@@ -225,13 +225,8 @@ public class OAIPMHImpl implements OAIPMHProducer{
 		IdentifierListDeliverer listIdDeliv = new IdentifierListDeliverer(oaiEsClient);
 		JAXBElement<OAIPMHType> oaipmhRoot = obf.createOAIPMH(oai);
 		
-		if(request.getIdentifier()!=null){
-			errorValues.add("identifier");
-			error.setError(TGConstants.OAI_BAD_ARGUMENT).setValue("The request includes illegal arguments " +
-					"or missing requiered arguments: " + errorValues);
-			oai.getError().add(error.setError(TGConstants.OAI_BAD_ARGUMENT));
-		}
-		else{
+		
+		if(listIdDeliv.requestChecker(request)){
 			
 			if(request.getSet()!=null){
 				error.setError(TGConstants.OAI_NO_SET_HIERARCHY).setValue("The repository does not support sets");
@@ -267,8 +262,17 @@ public class OAIPMHImpl implements OAIPMHProducer{
 					log.debug(e);
 				}
 			}
+		}else{
+			if(request.getIdentifier()!=null){
+				errorValues.add("identifier");
+			}if(request.getMetadataPrefix()==null){
+				errorValues.add("metadataPrefix");
+			}
+			error.setError(TGConstants.OAI_BAD_ARGUMENT).setValue("The request includes illegal arguments " +
+				"or missing requiered arguments: " + errorValues);
+			oai.getError().add(error.setError(TGConstants.OAI_BAD_ARGUMENT));
+			
 		}
-		
 		return oaipmhRoot;
 	}
 	
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/TGConstants.java b/oaipmh-core/src/main/java/info/textgrid/middleware/TGConstants.java
index 4f253755..c76c4d4d 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/TGConstants.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/TGConstants.java
@@ -32,7 +32,7 @@ public final class TGConstants {
 	
 	public static final String OAI_BAD_ARGUMENT = "BadArgument";
 	public static final String OAI_METADATA_FORMAT_ERROR = "FormatError";
-	public static final String OAI_NO_RECORD_MATCH = "IDError";
+	public static final String OAI_NO_RECORD_MATCH = "RecordMatchError";
 	public static final String OAI_NO_SET_HIERARCHY = "SetHierarchyError";
 
 }
diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java
index 75c375f3..7d7f8ba2 100644
--- a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java
+++ b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java
@@ -50,7 +50,7 @@ public class OaiPmhTest{
 		System.out.println("-----------------------------------\n");
 	}*/
 	
-	@Test
+	/*@Test
 	//@Ignore
 	public void testDateNow() throws DatatypeConfigurationException{
 		System.out.println("---------------Now Version-----------------");		
@@ -90,28 +90,28 @@ public class OaiPmhTest{
 		JAXBElement<OAIPMHType> r = testRequest.getRequest("ListSets", "", "", "", "", "", "");
 		JAXB.marshal(r, System.out);
 		System.out.println("-----------------------------------\n");
-	}
+	}*/
 	
 	/*@Test
 	//@Ignore
 	public void testListIdentifiers() throws ParseException{
 		
-		JAXBElement<OAIPMHType> r = testRequest.getRequest("ListIdentifiers", "", "oai_dc", "", "2012-02-05", "2012-02-10", "");
+		JAXBElement<OAIPMHType> r = testRequest.getRequest("ListIdentifiers", "a", "oai_dc", "", "", "", "");
 		JAXB.marshal(r, System.out);
 		System.out.println("-----------------------------------\n");
 	}*/
 	
-	@Test
-	//@Ignore
+/*	@Test
+	@Ignore
 	public void testGetRequestIdentify() throws ParseException{
 		
 		System.out.println("Test for the verb \"Identify\" with succesfull response");
 		JAXBElement<OAIPMHType> r = testRequest.getRequest("Identify", "", "", "", "", "", "");
 		JAXB.marshal(r, System.out);
 		System.out.println("-----------------------------------\n");
-	}
+	}*/
 	
-	@Test
+	/*@Test
 	//@Ignore
 	public void testGetRequestIdentifyVerbError() throws ParseException{
 		JAXBElement<OAIPMHType> t = testRequest.getRequest("Identify", "", "", "", "", "", "");
-- 
GitLab