From 2dd40a5aec0cdb40f88772137a7ce61cf60379d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esm=C3=A9=20Cowles?= Date: Wed, 21 May 2014 14:09:45 -0400 Subject: [PATCH] Fixing transaction renewal and adding IT --- .../org/fcrepo/http/api/FedoraTransactions.java | 17 ++++++++--------- .../http/api/FedoraTransactionsIT.java | 12 ++++++++++++ 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/fcrepo-http-api/src/main/java/org/fcrepo/http/api/FedoraTransactions.java b/fcrepo-http-api/src/main/java/org/fcrepo/http/api/FedoraTransactions.java index 5ef7642005..51b5ad2cec 100644 --- a/fcrepo-http-api/src/main/java/org/fcrepo/http/api/FedoraTransactions.java +++ b/fcrepo-http-api/src/main/java/org/fcrepo/http/api/FedoraTransactions.java @@ -72,22 +72,20 @@ public class FedoraTransactions extends AbstractResource { * @throws RepositoryException */ @POST - public Response createTransaction(@PathParam("path") - final List pathList, @Context - final HttpServletRequest req) throws RepositoryException { - - LOGGER.debug("creating transaction at path {}", pathList); - - if (!pathList.isEmpty()) { - return status(BAD_REQUEST).build(); - } + public Response createTransaction(@PathParam("path") final List pathList, + @Context final HttpServletRequest req) throws RepositoryException { if (session instanceof TxSession) { final Transaction t = txService.getTransaction(session); + LOGGER.debug("renewing transaction {}", t.getId()); t.updateExpiryDate(); return noContent().expires(t.getExpires()).build(); } + if (!pathList.isEmpty()) { + return status(BAD_REQUEST).build(); + } + final Principal userPrincipal = req.getUserPrincipal(); String userName = null; if (userPrincipal != null) { @@ -95,6 +93,7 @@ public Response createTransaction(@PathParam("path") } final Transaction t = txService.beginTransaction(session, userName); + LOGGER.debug("created transaction {}", t.getId()); return created( uriInfo.getBaseUriBuilder().path(FedoraNodes.class) diff --git a/fcrepo-http-api/src/test/java/org/fcrepo/integration/http/api/FedoraTransactionsIT.java b/fcrepo-http-api/src/test/java/org/fcrepo/integration/http/api/FedoraTransactionsIT.java index c6c4b8e6a1..25e68cf90f 100644 --- a/fcrepo-http-api/src/test/java/org/fcrepo/integration/http/api/FedoraTransactionsIT.java +++ b/fcrepo-http-api/src/test/java/org/fcrepo/integration/http/api/FedoraTransactionsIT.java @@ -160,6 +160,18 @@ public void testCreateDoStuffAndRollbackTransaction() throws Exception { } + @Test + public void testTransactionKeepAlive() throws Exception { + /* create a tx */ + final HttpPost createTx = new HttpPost(serverAddress + "fcr:tx"); + final HttpResponse response = execute(createTx); + assertEquals(201, response.getStatusLine().getStatusCode()); + + final String txLocation = response.getFirstHeader("Location").getValue(); + final HttpPost renewTx = new HttpPost(txLocation + "/fcr:tx"); + assertEquals(204, getStatus(renewTx)); + } + @Test public void testCreateDoStuffAndCommitTransaction() throws Exception { /* create a tx */