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 511d43c438c5fb42c6d00b0ccf881bf5b0614041..66a42192d3c095e5d7c33c30c8428f042566d781 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java @@ -11,6 +11,8 @@ import info.textgrid.middleware.oaipmh.RequestType; import info.textgrid.middleware.oaipmh.VerbType; import java.text.ParseException; +import java.util.ArrayList; +import java.util.List; import javax.ws.rs.DefaultValue; import javax.ws.rs.GET; @@ -39,7 +41,7 @@ public class OAIPMHImpl implements OAIPMHProducer{ private org.apache.commons.logging.Log log = LogFactory.getLog(OAIPMHImpl.class); private ListIdentifiersType listIDs = new ListIdentifiersType(); private OAI_ESClient oaiEsClient; - + private List<String> errorValues = new ArrayList<String>(); public OAIPMHImpl(OAI_ESClient oaiEsClient){ @@ -144,7 +146,21 @@ public class OAIPMHImpl implements OAIPMHProducer{ } else{ - error.setError(TGConstants.OAI_BAD_ARGUMENT).setValue("The request includes illegal arguments"); + if(request.getIdentifier()!=null){ + errorValues.add("identifier"); + }if(request.getFrom()!=null){ + errorValues.add("from"); + }if(request.getMetadataPrefix()!=null){ + errorValues.add("metadataPrefix"); + }if(request.getResumptionToken()!=null){ + errorValues.add("ResumptionTiken"); + }if(request.getUntil()!=null){ + errorValues.add("Until"); + }if(request.getSet()!=null){ + errorValues.add("set"); + } + + error.setError(TGConstants.OAI_BAD_ARGUMENT).setValue("The request includes illegal arguments: " + errorValues); oai.getError().add(error.setError(TGConstants.OAI_BAD_ARGUMENT)); } @@ -179,8 +195,18 @@ public class OAIPMHImpl implements OAIPMHProducer{ } } else{ + + if(request.getFrom()!=null){ + errorValues.add("from"); + }if(request.getResumptionToken()!=null){ + errorValues.add("resumptionToken"); + }if(request.getSet()!=null){ + errorValues.add("set"); + }if(request.getUntil()!=null){ + errorValues.add("until"); + } error.setError(TGConstants.OAI_BAD_ARGUMENT).setValue("The request includes illegal arguments " + - "or is missing required arguments"); + "or is missing required arguments: " + errorValues); oai.getError().add(error.setError(TGConstants.OAI_BAD_ARGUMENT)); } @@ -196,8 +222,9 @@ public class OAIPMHImpl implements OAIPMHProducer{ 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"); + "or missing requiered arguments: " + errorValues); oai.getError().add(error.setError(TGConstants.OAI_BAD_ARGUMENT)); } else{ @@ -263,8 +290,22 @@ public class OAIPMHImpl implements OAIPMHProducer{ oai.getError().add(error.setError(TGConstants.OAI_NO_RECORD_MATCH)); } }else{ + if(request.getFrom()!=null){ + errorValues.add("from"); + }if(request.getIdentifier()==null){ + errorValues.add("identifier"); + }if(request.getMetadataPrefix()!=null){ + errorValues.add("metadataPrefix"); + }if(request.getResumptionToken()!=null){ + errorValues.add("resumptionToken"); + }if(request.getSet()!=null){ + errorValues.add("set"); + }if(request.getUntil()!=null){ + errorValues.add("until"); + } + error.setError(TGConstants.OAI_BAD_ARGUMENT).setValue("The request includes illegal " + - "arguments or is missing required arguments"); + "arguments or is missing required arguments: " + errorValues); oai.getError().add(error.setError(TGConstants.OAI_BAD_ARGUMENT)); } @@ -278,8 +319,9 @@ public class OAIPMHImpl implements OAIPMHProducer{ 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 is missing required arguments"); + "arguments or is missing required arguments: " + errorValues); oai.getError().add(error.setError(TGConstants.OAI_BAD_ARGUMENT)); }else{ 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 c74d19ad78e70f537d470dbd47ab447bd9ddc05d..4f253755db61e3e4444c1683c80016943985457a 100644 --- a/oaipmh-core/src/main/java/info/textgrid/middleware/TGConstants.java +++ b/oaipmh-core/src/main/java/info/textgrid/middleware/TGConstants.java @@ -27,7 +27,7 @@ public final class TGConstants { public static final String TG_REP_NAME = "TextGrid Repository"; public static final String TG_REP_BASEURL = "www.textgridrep.de"; - public static final String TG_REP_OAIPMH_PROTOCOL_VERSION = "v2.0"; + public static final String TG_REP_OAIPMH_PROTOCOL_VERSION = "2.0"; public static final String METADATA_DC_PREFIX = "oai_dc"; public static final String OAI_BAD_ARGUMENT = "BadArgument"; diff --git a/oaipmh-core/src/main/xsd/oai_pmh.xsd b/oaipmh-core/src/main/xsd/oai_pmh.xsd index 207401d461b91ba60860bd51d43dde467317a27f..834bb391c33803dcfaebd72495929fa29d7a543a 100644 --- a/oaipmh-core/src/main/xsd/oai_pmh.xsd +++ b/oaipmh-core/src/main/xsd/oai_pmh.xsd @@ -1,7 +1,7 @@ <schema targetNamespace="http://www.openarchives.org/OAI/2.0/" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:oai="http://www.openarchives.org/OAI/2.0/" - elementFormDefault="unqualified" + elementFormDefault="qualified" attributeFormDefault="unqualified"> <annotation> 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 1e6516932850eafcf613a2026598eb0897b6c93f..6a33f30240350d22bca450f72fe9cca1272e2998 100644 --- a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java +++ b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java @@ -11,6 +11,7 @@ import javax.xml.datatype.XMLGregorianCalendar; import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Test; @@ -31,23 +32,26 @@ public class OaiPmhTest{ /*@Test + //@Ignore public void testListRecords(){ JAXBElement<OAIPMHType> r = testRequest.getRequest("ListRecords", "", "oai_dc", "", "2012-02-10T10:54:42", "2012-03-10T10:54:42", ""); JAXB.marshal(r, System.out); System.out.println("-----------------------------------\n"); - }*/ + } - /*@Test + @Test + //@Ignore public void testListMetadataFormats(){ JAXBElement<OAIPMHType> r = testRequest.getRequest("ListMetadataFormats", "wr67.0", "", "", "", "", ""); JAXB.marshal(r, System.out); System.out.println("-----------------------------------\n"); - }*/ + } @Test + //@Ignore public void testDateNow() throws DatatypeConfigurationException{ System.out.println("---------------Now Version-----------------"); XMLGregorianCalendar nowTest = OAIPMHUtillities.getXMLGregorianCalendarNow(); @@ -56,6 +60,7 @@ public class OaiPmhTest{ } @Test + //@Ignore public void testDateGregorianType() throws ParseException, DatatypeConfigurationException{ String dateformatbefore = "2012-02-06T20:48:39.614+01:00"; @@ -67,6 +72,7 @@ public class OaiPmhTest{ } @Test + //@Ignore public void testDateStringType() throws ParseException, DatatypeConfigurationException{ String dateformatbefore = "2012-02-06T20:48:39.614+01:00"; @@ -78,6 +84,7 @@ public class OaiPmhTest{ } @Test + //@Ignore public void testListSets(){ JAXBElement<OAIPMHType> r = testRequest.getRequest("ListSets", "", "", "", "", "", ""); @@ -85,24 +92,27 @@ public class OaiPmhTest{ System.out.println("-----------------------------------\n"); } - /*@Test + @Test + //@Ignore public void testListIdentifiers(){ - JAXBElement<OAIPMHType> r = testRequest.getRequest("ListIdentifiers", "", "oai_dc", "", "2012-02-05", "2012-02-10", ""); + JAXBElement<OAIPMHType> r = testRequest.getRequest("ListIdentifiers", "a", "oai_dc", "", "2012-02-05", "2012-02-10", ""); JAXB.marshal(r, System.out); System.out.println("-----------------------------------\n"); - }*/ + } @Test + //@Ignore public void testGetRequestIdentify(){ System.out.println("Test for the verb \"Identify\" with succesfull response"); - JAXBElement<OAIPMHType> r = testRequest.getRequest("Identiy", "", "", "", "", "", ""); + JAXBElement<OAIPMHType> r = testRequest.getRequest("Identify", "", "", "", "", "", ""); JAXB.marshal(r, System.out); System.out.println("-----------------------------------\n"); } @Test + //@Ignore public void testGetRequestIdentifyVerbError(){ JAXBElement<OAIPMHType> t = testRequest.getRequest("Identify", "", "", "", "", "", ""); JAXB.marshal(t, System.out); @@ -110,23 +120,26 @@ public class OaiPmhTest{ } @Test + //@Ignore public void testGetRequestIdentifyArgumentError(){ System.out.println("Test for the verb \"Identify\" with error response"); - JAXBElement<OAIPMHType> z = testRequest.getRequest("Identify", "a", "", "", "", "", ""); + JAXBElement<OAIPMHType> z = testRequest.getRequest("Identify", "a", "", "", "", "a", ""); JAXB.marshal(z, System.out); System.out.println("-----------------------------------\n"); } - /*@Test + @Test + //@Ignore public void testGetRequestGetRecordError(){ System.out.println("Test for the verb \"GetRecord\" with succesfull response"); - JAXBElement<OAIPMHType> t = testRequest.getRequest("GetRecord", "wr67.0", "oai_dc", "", "", "", ""); + JAXBElement<OAIPMHType> t = testRequest.getRequest("GetRecord", "wr67.0", "oai_dc", "s", "a", "a", "a"); JAXB.marshal(t, System.out); System.out.println("-----------------------------------\n"); - }*/ + } - /*@Test + @Test + //@Ignore public void testGetRequestGetRecordError2(){ System.out.println("Test for the verb \"GetRecord\" with succesfull response"); JAXBElement<OAIPMHType> p = testRequest.getRequest("GetRecord", "mzw.0", "oai_dc", "", "", "", ""); @@ -136,6 +149,7 @@ public class OaiPmhTest{ } @Test + //@Ignore public void testGetRequestGetRecordError3(){ System.out.println("Test for the verb \"GetRecord\" with succesfull response"); JAXBElement<OAIPMHType> p = testRequest.getRequest("GetRecord", "h4zh.0", "oai_dc", "", "", "", ""); diff --git a/oaipmh-core/target/generated-sources/jaxb/info/textgrid/middleware/oaipmh/package-info.java b/oaipmh-core/target/generated-sources/jaxb/info/textgrid/middleware/oaipmh/package-info.java new file mode 100644 index 0000000000000000000000000000000000000000..4adb9014d2aa5024e1cf0f41c32d48ccb3b67b28 --- /dev/null +++ b/oaipmh-core/target/generated-sources/jaxb/info/textgrid/middleware/oaipmh/package-info.java @@ -0,0 +1,19 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-2 +// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.18 at 05:45:27 PM MEZ +// + +@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.openarchives.org/OAI/2.0/", + + +xmlns = { + @XmlNs(namespaceURI = "http://purl.org/dc/elements/1.1/", prefix = "dc"), + @XmlNs(namespaceURI = "http://www.openarchives.org/OAI/2.0/oai_dc/", prefix = "oai-dc"), + @XmlNs(namespaceURI = "http://www.openarchives.org/OAI/2.0/", prefix = "") +}, elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED) + +package info.textgrid.middleware.oaipmh; + +import javax.xml.bind.annotation.XmlNs; \ No newline at end of file