From b9fb7a45051ecdf3afc7b10ae758ae947714fda7 Mon Sep 17 00:00:00 2001
From: Nicola Fulvio Calabria <nicola.calabria@inaf.it>
Date: Sat, 31 Jul 2021 13:42:29 +0200
Subject: [PATCH] Updated constraints to copy paths

---
 src/main/java/it/inaf/oats/vospace/CopyService.java | 5 +++++
 src/main/java/it/inaf/oats/vospace/MoveService.java | 5 +++++
 2 files changed, 10 insertions(+)

diff --git a/src/main/java/it/inaf/oats/vospace/CopyService.java b/src/main/java/it/inaf/oats/vospace/CopyService.java
index e26ece0..3897247 100644
--- a/src/main/java/it/inaf/oats/vospace/CopyService.java
+++ b/src/main/java/it/inaf/oats/vospace/CopyService.java
@@ -47,6 +47,11 @@ public class CopyService extends AbstractNodeService {
         if (destinationPath.startsWith(sourcePath + "/")) {
             throw new IllegalArgumentException("Cannot copy node to a subdirectory of its own path");
         }
+        
+        // Check if destination equals parent path of source
+        if(NodeUtils.getParentPath(sourcePath).equals(destinationPath)){
+            throw new IllegalArgumentException("Cannot duplicate node at same path without renaming it");
+        }           
 
         try {
 
diff --git a/src/main/java/it/inaf/oats/vospace/MoveService.java b/src/main/java/it/inaf/oats/vospace/MoveService.java
index 0a7b784..6210c24 100644
--- a/src/main/java/it/inaf/oats/vospace/MoveService.java
+++ b/src/main/java/it/inaf/oats/vospace/MoveService.java
@@ -50,6 +50,11 @@ public class MoveService extends AbstractNodeService {
         // Linux-like: "cannot move to a subdirectory of itself" 
         if(destinationPath.startsWith(sourcePath+"/")) {
             throw new IllegalArgumentException("Cannot move node to a subdirectory of its own path");
+        }
+
+        // Check if destination equals parent path of source
+        if(NodeUtils.getParentPath(sourcePath).equals(destinationPath)){
+            return;
         }        
 
         try {
-- 
GitLab