diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/ErrorHandler.java b/oaipmh-core/src/main/java/info/textgrid/middleware/ErrorHandler.java index 1f01edae0946d04f4b6c3026bfdfb1980b81211b..7ee3483ee6630e3c3247bb7e5f05c1637aa27cf1 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/ErrorHandler.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/ErrorHandler.java @@ -42,7 +42,9 @@ public class ErrorHandler { this.errorCode = OAIPMHerrorcodeType.NO_RECORDS_MATCH; } else if (errorDescription.equals("SetHierarchyError")) { this.errorCode = OAIPMHerrorcodeType.NO_SET_HIERARCHY; - } + } else if (errorDescription.equals("badVerb")) { + this.errorCode = OAIPMHerrorcodeType.BAD_VERB; + } this.error.setCode(this.errorCode); this.error.setValue(errorValue); 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 4ac1a093661386a48a8c7c5af2267d6dcf380fa2..bcce4e4b3a02b70c1dea1376a95d16e5eb3b1f2b 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java @@ -473,19 +473,20 @@ public class OAIPMHImpl implements OAIPMHProducer { VerbType verbParam = null; - if (verb != null && verb.equals("Identify")) { + if (verb.equals("Identify")) { verbParam = VerbType.IDENTIFY; - } else if (verb != null && verb.equals("ListMetadataFormats")) { + } else if (verb.equals("ListMetadataFormats")) { verbParam = VerbType.LIST_METADATA_FORMATS; - } else if (verb != null && verb.equals("ListSets")) { + } else if (verb.equals("ListSets")) { verbParam = VerbType.LIST_SETS; - } else if (verb != null && verb.equals("ListIdentifiers")) { + } else if (verb.equals("ListIdentifiers")) { verbParam = VerbType.LIST_IDENTIFIERS; - } else if (verb != null && verb.equals("ListRecords")) { + } else if (verb.equals("ListRecords")) { verbParam = VerbType.LIST_RECORDS; - } else if (verb != null && verb.equals("GetRecord")) { + } else if (verb.equals("GetRecord")) { verbParam = VerbType.GET_RECORD; - }else { + }else if (verb.length()>0){ + System.out.println("VERB: " + verb); this.error.setError(TGConstants.OAI_VERB_ERROR, "Illegal OAI verb"); } @@ -652,11 +653,16 @@ public class OAIPMHImpl implements OAIPMHProducer { } else if (verbParam.value().equals("ListRecords")) { response = listRecordsRequest(response, request); } - } else { - this.error.setError(TGConstants.OAI_BAD_ARGUMENT, "Required argument 'verb' is missing"); - response.getError().add(this.error.getError()); + } else { + if(this.error.getError().getValue()!=null && this.error.getError().getValue().equals("Illegal OAI verb")){ + this.error.setError(TGConstants.OAI_VERB_ERROR, "Illegal OAI verb"); + response.getError().add(this.error.getError()); + }else { + this.error.setError(TGConstants.OAI_BAD_ARGUMENT, "Required argument 'verb' is missing"); + response.getError().add(this.error.getError()); + } } - + response.setRequest(request); result = obf.createOAIPMH(response); 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 f3022c262de8b181ee68d9ec6b1c8b4b3195d3f5..927f9793c11c720ab4e368a1ff882ce1770770ba 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java @@ -297,7 +297,7 @@ public class OaiPmhTest { public void testMissingVerbArgument() throws ParseException { System.out .println("Test for request with missing verb argument"); - String p = this.request.getRequest("", "", "", "", "", "", ""); + String p = this.request.getRequest("junk", "", "", "", "", "", ""); System.out.println(p); System.out.println("-----------------------------------\n"); } @@ -360,7 +360,7 @@ public class OaiPmhTest { //String p = this.request.getRequest("ListRecords", "", "oai_dc", "project:TGPR-f89ad029-4eb2-ae5c-6028-5db876513128", "", "", ""); String p = this.request.getRequest("ListRecords", "", "oai_dc", "", "", "", ""); System.out.println(p); - String resToken = ""; + /*String resToken = ""; for (Map.Entry<String, Integer> entry : RecordListDelivererDC.cursorCollector.entrySet()) { resToken = entry.getKey(); String p2 = this.request.getRequest("ListRecords", "", "", "", "", "", resToken); @@ -368,7 +368,7 @@ public class OaiPmhTest { System.out.println("HASH MAP AFTER: "); System.out.println(RecordListDelivererDC.cursorCollector); System.out.println("-----------------------------------\n"); - } + }*/ }