From 659a26f05dea8fe7235937dfdffa7a28ecf54036 Mon Sep 17 00:00:00 2001 From: Nicola Fulvio Calabria <nicola.calabria@inaf.it> Date: Thu, 9 Sep 2021 15:31:53 +0200 Subject: [PATCH] Correct DuplicateNodeException thrown when destination of move already exists --- src/main/java/it/inaf/oats/vospace/MoveService.java | 4 ++++ src/test/java/it/inaf/oats/vospace/CopyServiceTest.java | 2 -- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/it/inaf/oats/vospace/MoveService.java b/src/main/java/it/inaf/oats/vospace/MoveService.java index 6210c24..1d22cf6 100644 --- a/src/main/java/it/inaf/oats/vospace/MoveService.java +++ b/src/main/java/it/inaf/oats/vospace/MoveService.java @@ -7,6 +7,7 @@ package it.inaf.oats.vospace; import it.inaf.ia2.aa.data.User; import it.inaf.oats.vospace.datamodel.NodeUtils; +import it.inaf.oats.vospace.exception.DuplicateNodeException; import it.inaf.oats.vospace.exception.InternalFaultException; import it.inaf.oats.vospace.exception.NodeBusyException; import it.inaf.oats.vospace.exception.NodeNotFoundException; @@ -15,6 +16,7 @@ import it.inaf.oats.vospace.persistence.NodeDAO.ShortNodeDescriptor; import java.util.Optional; import net.ivoa.xml.vospace.v2.Transfer; import org.springframework.dao.CannotSerializeTransactionException; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.Isolation; @@ -105,6 +107,8 @@ public class MoveService extends AbstractNodeService { } catch (CannotSerializeTransactionException ex) { // Concurrent transactions attempted to modify this set of nodes throw new NodeBusyException(sourcePath); + } catch (DuplicateKeyException ex) { + throw new DuplicateNodeException(destinationPath); } } diff --git a/src/test/java/it/inaf/oats/vospace/CopyServiceTest.java b/src/test/java/it/inaf/oats/vospace/CopyServiceTest.java index f28931e..15380d0 100644 --- a/src/test/java/it/inaf/oats/vospace/CopyServiceTest.java +++ b/src/test/java/it/inaf/oats/vospace/CopyServiceTest.java @@ -11,7 +11,6 @@ import it.inaf.oats.vospace.exception.NodeNotFoundException; import it.inaf.oats.vospace.exception.PermissionDeniedException; import it.inaf.oats.vospace.persistence.DataSourceConfigSingleton; import it.inaf.oats.vospace.persistence.NodeDAO; -import java.util.Arrays; import java.util.List; import java.util.Optional; import net.ivoa.xml.vospace.v2.Transfer; @@ -28,7 +27,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.dao.DuplicateKeyException; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.ContextConfiguration; -- GitLab