From: SVN c. m. f. t. SWORD-A. p. <swo...@li...> - 2012-03-25 15:48:27
|
Revision: 486 http://sword-app.svn.sourceforge.net/sword-app/?rev=486&view=rev Author: richard-jones Date: 2012-03-25 15:48:21 +0000 (Sun, 25 Mar 2012) Log Message: ----------- add more advanced deposit receipt tests, and fix associated bugs. In addition, add auto-lookup on deposit receipts for appropriate methods Modified Paths: -------------- JavaClient2.0/src/main/java/org/swordapp/client/DepositReceipt.java JavaClient2.0/src/main/java/org/swordapp/client/SWORDClient.java JavaClient2.0/src/test/java/org/swordapp/client/test/SSSSemiUnits.java Modified: JavaClient2.0/src/main/java/org/swordapp/client/DepositReceipt.java =================================================================== --- JavaClient2.0/src/main/java/org/swordapp/client/DepositReceipt.java 2012-03-24 13:05:46 UTC (rev 485) +++ JavaClient2.0/src/main/java/org/swordapp/client/DepositReceipt.java 2012-03-25 15:48:21 UTC (rev 486) @@ -171,7 +171,7 @@ List<Element> allextensions = this.entry.getExtensions(); for (Element el : allextensions) { - if (el.getQName().toString().startsWith(UriRegistry.DC_NAMESPACE)) + if (el.getQName().toString().startsWith("{" + UriRegistry.DC_NAMESPACE)) { dc.add(el); } Modified: JavaClient2.0/src/main/java/org/swordapp/client/SWORDClient.java =================================================================== --- JavaClient2.0/src/main/java/org/swordapp/client/SWORDClient.java 2012-03-24 13:05:46 UTC (rev 485) +++ JavaClient2.0/src/main/java/org/swordapp/client/SWORDClient.java 2012-03-25 15:48:21 UTC (rev 486) @@ -352,6 +352,11 @@ public SwordResponse replaceMedia(DepositReceipt receipt, Deposit deposit, AuthCredentials auth) throws SWORDClientException, SWORDError, ProtocolViolationException { + if (receipt.getEditMediaLink() == null) + { + receipt = this.getDepositReceipt(receipt.getLocation(), auth); + } + String url = null; SwordIdentifier eml = receipt.getEditMediaLink(); if (eml != null) @@ -464,6 +469,10 @@ public SwordResponse replace(DepositReceipt receipt, Deposit deposit, AuthCredentials auth) throws SWORDClientException, SWORDError, ProtocolViolationException { + if (receipt.getEditLink() == null) + { + receipt = this.getDepositReceipt(receipt.getLocation(), auth); + } return this.replace(receipt.getEditLink().getHref(), deposit, auth); } @@ -576,12 +585,20 @@ public SwordResponse deleteContent(DepositReceipt receipt, AuthCredentials auth) throws SWORDClientException, SWORDError, ProtocolViolationException { + if (receipt.getEditMediaLink() == null) + { + receipt = this.getDepositReceipt(receipt.getLocation(), auth); + } return this.delete(receipt.getEditMediaLink().getHref(), auth); } public SwordResponse deleteContainer(DepositReceipt receipt, AuthCredentials auth) throws SWORDClientException, SWORDError, ProtocolViolationException { + if (receipt.getEditLink() == null) + { + receipt = this.getDepositReceipt(receipt.getLocation(), auth); + } return this.delete(receipt.getEditLink().getHref(), auth); } @@ -656,6 +673,10 @@ public SwordResponse addToMediaResource(DepositReceipt receipt, Deposit deposit, AuthCredentials auth) throws SWORDClientException, SWORDError, ProtocolViolationException { + if (receipt.getEditMediaLink() == null) + { + receipt = this.getDepositReceipt(receipt.getLocation(), auth); + } return this.addToMediaResource(receipt.getEditMediaLink().getHref(), deposit, auth); } @@ -774,6 +795,10 @@ public DepositReceipt addToContainer(DepositReceipt receipt, Deposit deposit, AuthCredentials auth) throws SWORDClientException, SWORDError, ProtocolViolationException { + if (receipt.getEditLink() == null) + { + receipt = this.getDepositReceipt(receipt.getLocation(), auth); + } return this.addToContainer(receipt.getEditLink().getHref(), deposit, auth); } @@ -948,6 +973,11 @@ public DepositReceipt complete(DepositReceipt receipt, AuthCredentials auth) throws SWORDClientException, ProtocolViolationException, SWORDError { + if (receipt.getEditLink() == null) + { + receipt = this.getDepositReceipt(receipt.getLocation(), auth); + } + String url = null; SwordIdentifier el = receipt.getEditLink(); if (el != null) @@ -1187,6 +1217,11 @@ public Statement getStatement(DepositReceipt receipt, String type, AuthCredentials auth) throws SWORDClientException, StatementParseException, ProtocolViolationException, SWORDError { + if (receipt.getStatementLink(type) == null) + { + receipt = this.getDepositReceipt(receipt.getLocation(), auth); + } + SwordIdentifier si = receipt.getStatementLink(type); if (si == null) { Modified: JavaClient2.0/src/test/java/org/swordapp/client/test/SSSSemiUnits.java =================================================================== --- JavaClient2.0/src/test/java/org/swordapp/client/test/SSSSemiUnits.java 2012-03-24 13:05:46 UTC (rev 485) +++ JavaClient2.0/src/test/java/org/swordapp/client/test/SSSSemiUnits.java 2012-03-25 15:48:21 UTC (rev 486) @@ -1,5 +1,6 @@ package org.swordapp.client.test; +import org.apache.abdera.model.Element; import org.apache.commons.codec.digest.DigestUtils; import org.junit.Before; import org.junit.Test; @@ -8,6 +9,7 @@ import org.swordapp.client.ClientConfiguration; import org.swordapp.client.Deposit; import org.swordapp.client.DepositReceipt; +import org.swordapp.client.EntryPart; import org.swordapp.client.OreStatement; import org.swordapp.client.SWORDClient; import org.swordapp.client.SWORDCollection; @@ -15,6 +17,7 @@ import org.swordapp.client.ServerResource; import org.swordapp.client.ServiceDocument; import org.swordapp.client.Statement; +import org.swordapp.client.SwordResponse; import org.swordapp.client.UriRegistry; import java.io.FileInputStream; @@ -123,33 +126,82 @@ ServiceDocument sd = client.getServiceDocument(this.sdIRI, new AuthCredentials(this.user, this.pass)); SWORDCollection col = sd.getWorkspaces().get(0).getCollections().get(0); - Deposit deposit = new Deposit(); - deposit.setFile(new FileInputStream(this.file)); - deposit.setMimeType("application/zip"); - deposit.setFilename("example.zip"); - deposit.setPackaging(UriRegistry.PACKAGE_SIMPLE_ZIP); - deposit.setMd5(this.fileMd5); + Deposit media = new Deposit(); + media.setFile(new FileInputStream(this.file)); + media.setMimeType("application/zip"); + media.setFilename("example.zip"); + media.setPackaging(UriRegistry.PACKAGE_SIMPLE_ZIP); + media.setMd5(this.fileMd5); - DepositReceipt receipt = client.deposit(col, deposit, new AuthCredentials(this.user, this.pass)); + DepositReceipt receipt = client.deposit(col, media, new AuthCredentials(this.user, this.pass, this.obo)); - // check all of the methods on the receipt + assertEquals(receipt.getStatusCode(), 201); + assertTrue(receipt.getLocation() != null); + assertEquals(receipt.getDerivedResourceLinks().size(), 4); + assertTrue(receipt.getOriginalDepositLink() != null); + assertTrue(receipt.getEditMediaLink() != null); - assertTrue(receipt.getLocation() != null); - assertEquals(receipt.getStatusCode(), 201); assertTrue(receipt.getAtomStatementLink() != null); assertEquals(receipt.getContentLink().getType(), "application/zip"); - assertEquals(receipt.getDerivedResourceLinks().size(), 4); assertTrue(receipt.getEditLink() != null); assertTrue(receipt.getOREStatementLink() != null); - assertTrue(receipt.getOriginalDepositLink() != null); assertEquals(receipt.getPackaging().size(), 1); assertTrue(receipt.getPackaging().contains(UriRegistry.PACKAGE_SIMPLE_ZIP)); assertTrue(receipt.getSplashPageLink() != null); assertTrue(receipt.getStatementLink("application/rdf+xml") != null); assertTrue(receipt.getStatementLink("application/atom+xml;type=feed") != null); assertTrue(receipt.getSwordEditLink() != null); + assertEquals(receipt.getTreatment(), "Treatment description"); + assertEquals(receipt.getVerboseDescription(), "SSS has done this, that and the other to process the deposit"); + + EntryPart ep = new EntryPart(); + ep.addDublinCore("title", "An entry only deposit"); + ep.addDublinCore("abstract", "abstract"); + ep.addDublinCore("identifier", "http://whatever/"); + + Deposit metadata = new Deposit(); + metadata.setEntryPart(ep); + + SwordResponse response = client.replace(receipt, metadata, new AuthCredentials(this.user, this.pass, this.obo)); + assertEquals(response.getStatusCode(), 200); + + receipt = client.getDepositReceipt(receipt.getLocation(), new AuthCredentials(this.user, this.pass, this.obo)); + + assertTrue(receipt.getEditMediaLink() != null); + assertTrue(receipt.getAtomStatementLink() != null); + assertEquals(receipt.getContentLink().getType(), "application/zip"); + assertTrue(receipt.getEditLink() != null); + assertTrue(receipt.getOREStatementLink() != null); + assertEquals(receipt.getPackaging().size(), 1); + assertTrue(receipt.getPackaging().contains(UriRegistry.PACKAGE_SIMPLE_ZIP)); + assertTrue(receipt.getSplashPageLink() != null); + assertTrue(receipt.getStatementLink("application/rdf+xml") != null); + assertTrue(receipt.getStatementLink("application/atom+xml;type=feed") != null); + assertTrue(receipt.getSwordEditLink() != null); assertTrue(receipt.getTreatment() != null); assertTrue(receipt.getVerboseDescription() != null); + + List<Element> dcs = receipt.getDublinCore(); + int count = 0; + for (Element dc : dcs) + { + if (dc.getQName().getLocalPart().equals("title")) + { + assertEquals(dc.getText(), "An entry only deposit"); + count++; + } + if (dc.getQName().getLocalPart().equals("abstract")) + { + assertEquals(dc.getText(), "abstract"); + count++; + } + if (dc.getQName().getLocalPart().equals("identifier")) + { + assertEquals(dc.getText(), "http://whatever/"); + count++; + } + } + assertEquals(count, 3); } @Test This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |