From 307aa5d64e426a3670b6cca5fa0acef729e031a8 Mon Sep 17 00:00:00 2001
From: Nicola Fulvio Calabria <nicola.calabria@inaf.it>
Date: Mon, 11 Jan 2021 00:35:59 +0100
Subject: [PATCH] Task #3546 - Complete CreateNode endpoint implementation.
 Added tests: didn't use new Mock Filter for User injection, will include it
 later

---
 .../exception/ContainerNotFoundException.java  | 12 ++++++++++++
 .../exception/DuplicateNodeException.java      | 12 ++++++++++++
 .../vospace/exception/InvalidURIException.java | 18 ++++++++++++++++++
 .../vospace/exception/LinkFoundException.java  | 12 ++++++++++++
 .../exception/PermissionDeniedException.java   | 12 ++++++++++++
 5 files changed, 66 insertions(+)
 create mode 100644 src/main/java/it/inaf/oats/vospace/exception/ContainerNotFoundException.java
 create mode 100644 src/main/java/it/inaf/oats/vospace/exception/DuplicateNodeException.java
 create mode 100644 src/main/java/it/inaf/oats/vospace/exception/InvalidURIException.java
 create mode 100644 src/main/java/it/inaf/oats/vospace/exception/LinkFoundException.java
 create mode 100644 src/main/java/it/inaf/oats/vospace/exception/PermissionDeniedException.java

diff --git a/src/main/java/it/inaf/oats/vospace/exception/ContainerNotFoundException.java b/src/main/java/it/inaf/oats/vospace/exception/ContainerNotFoundException.java
new file mode 100644
index 0000000..7480c29
--- /dev/null
+++ b/src/main/java/it/inaf/oats/vospace/exception/ContainerNotFoundException.java
@@ -0,0 +1,12 @@
+package it.inaf.oats.vospace.exception;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(value = HttpStatus.NOT_FOUND)
+public class ContainerNotFoundException extends VoSpaceException {
+
+    public ContainerNotFoundException(String path) {
+        super("Container Not Found at path: " + path);
+    }
+}
diff --git a/src/main/java/it/inaf/oats/vospace/exception/DuplicateNodeException.java b/src/main/java/it/inaf/oats/vospace/exception/DuplicateNodeException.java
new file mode 100644
index 0000000..a64223e
--- /dev/null
+++ b/src/main/java/it/inaf/oats/vospace/exception/DuplicateNodeException.java
@@ -0,0 +1,12 @@
+package it.inaf.oats.vospace.exception;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(value = HttpStatus.CONFLICT)
+public class DuplicateNodeException extends VoSpaceException {
+
+    public DuplicateNodeException(String path) {
+        super("Duplicate Node at path: " + path);
+    }
+}
diff --git a/src/main/java/it/inaf/oats/vospace/exception/InvalidURIException.java b/src/main/java/it/inaf/oats/vospace/exception/InvalidURIException.java
new file mode 100644
index 0000000..c303711
--- /dev/null
+++ b/src/main/java/it/inaf/oats/vospace/exception/InvalidURIException.java
@@ -0,0 +1,18 @@
+package it.inaf.oats.vospace.exception;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(value = HttpStatus.BAD_REQUEST)
+public class InvalidURIException extends VoSpaceException {
+
+    public InvalidURIException(String URI, String path) {
+        super("InvalidURI. Payload node URI: " + URI + 
+                " is not consistent with request path: " + path);
+    }
+    
+    public InvalidURIException(String URI)
+    {
+        super("InvalidURI. URI: "+URI+ " is not in a valid format");
+    }
+}
diff --git a/src/main/java/it/inaf/oats/vospace/exception/LinkFoundException.java b/src/main/java/it/inaf/oats/vospace/exception/LinkFoundException.java
new file mode 100644
index 0000000..0f316c1
--- /dev/null
+++ b/src/main/java/it/inaf/oats/vospace/exception/LinkFoundException.java
@@ -0,0 +1,12 @@
+package it.inaf.oats.vospace.exception;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(value = HttpStatus.BAD_REQUEST)
+public class LinkFoundException extends VoSpaceException {
+
+    public LinkFoundException(String path) {
+        super("Link Found at path: " + path);
+    }
+}
diff --git a/src/main/java/it/inaf/oats/vospace/exception/PermissionDeniedException.java b/src/main/java/it/inaf/oats/vospace/exception/PermissionDeniedException.java
new file mode 100644
index 0000000..20a1991
--- /dev/null
+++ b/src/main/java/it/inaf/oats/vospace/exception/PermissionDeniedException.java
@@ -0,0 +1,12 @@
+package it.inaf.oats.vospace.exception;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(value = HttpStatus.FORBIDDEN)
+public class PermissionDeniedException extends VoSpaceException {
+
+    public PermissionDeniedException(String path) {
+        super("Permission Denied at path: " + path);
+    }
+}
-- 
GitLab