From d63066def4e894c246ec73c0328101ccf73a6a96 Mon Sep 17 00:00:00 2001 From: Nicola Fulvio Calabria <nicola.calabria@inaf.it> Date: Wed, 8 Sep 2021 23:44:54 +0200 Subject: [PATCH] Correct DuplicateNodeException thrown when destination of copy already exists --- src/main/java/it/inaf/oats/vospace/CopyService.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/it/inaf/oats/vospace/CopyService.java b/src/main/java/it/inaf/oats/vospace/CopyService.java index 5383fa3..78d79e0 100644 --- a/src/main/java/it/inaf/oats/vospace/CopyService.java +++ b/src/main/java/it/inaf/oats/vospace/CopyService.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.NodeBusyException; import it.inaf.oats.vospace.exception.NodeNotFoundException; import it.inaf.oats.vospace.exception.PermissionDeniedException; @@ -15,6 +16,7 @@ import java.util.List; 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; @@ -90,6 +92,8 @@ public class CopyService extends AbstractNodeService { } catch (CannotSerializeTransactionException ex) { // Concurrent transactions attempted to modify this set of nodes throw new NodeBusyException(sourcePath); + } catch (DuplicateKeyException ex) { + throw new DuplicateNodeException(destinationCopyRoot); } return List.of(sourcePath, destinationCopyRoot); -- GitLab