From 07899471d7d943a52c23c32780d38d7703b28337 Mon Sep 17 00:00:00 2001
From: "i.nueske" <i.nueske@indiscale.com>
Date: Tue, 13 Aug 2024 16:52:03 +0200
Subject: [PATCH] API: Changed delete to fit JSON API schema

---
 api/src/main/resources/api.yaml                      | 12 +-----------
 .../fdo/manager/service/fdo/FDOApiImpl.java          |  4 ++--
 .../fdo/manager/service/fdo/FDOApiTest.java          |  7 ++++---
 3 files changed, 7 insertions(+), 16 deletions(-)

diff --git a/api/src/main/resources/api.yaml b/api/src/main/resources/api.yaml
index 38048fa..ae045ad 100644
--- a/api/src/main/resources/api.yaml
+++ b/api/src/main/resources/api.yaml
@@ -256,18 +256,8 @@ paths:
         - $ref: '#/components/parameters/Prefix'
         - $ref: '#/components/parameters/Suffix'
       responses:
-        "200":
+        "204":
           description: "Content of deleted FDO."
-          content:
-            application/json:
-              schema:
-                type: object
-                required: ["data"]
-                properties:
-                  data:
-                    $ref: '#/components/schemas/DigitalObject'
-                  links:
-                    $ref: '#/components/schemas/Links'
         "404":
           description: "Could not resolve pid."
           content:
diff --git a/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java b/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java
index 46596d9..749529f 100644
--- a/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java
+++ b/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java
@@ -108,13 +108,13 @@ public class FDOApiImpl extends BaseController implements FdoApi {
   }
 
   @Override
-  public ResponseEntity<ResolvePID200Response> deleteFDO(String prefix, String suffix) {
+  public ResponseEntity<Void> deleteFDO(String prefix, String suffix) {
     try (Manager manager = getManager()) {
       String pid = prefix + "/" + suffix;
       DigitalObject fdo = manager.resolvePID(pid);
       boolean success = manager.deleteFDO(pid);
       if (success) {
-        return ResponseEntity.ok(createResponse(fdo));
+        return ResponseEntity.noContent().build();
       } else {
         throw new ResponseStatusException(
             HttpStatus.INTERNAL_SERVER_ERROR, "Could not delete PID " + pid);
diff --git a/application/src/test/java/com/indiscale/fdo/manager/service/fdo/FDOApiTest.java b/application/src/test/java/com/indiscale/fdo/manager/service/fdo/FDOApiTest.java
index 37ed6d0..20184ac 100644
--- a/application/src/test/java/com/indiscale/fdo/manager/service/fdo/FDOApiTest.java
+++ b/application/src/test/java/com/indiscale/fdo/manager/service/fdo/FDOApiTest.java
@@ -15,6 +15,7 @@ import com.indiscale.fdo.manager.api.PidUnresolvableException;
 import com.indiscale.fdo.manager.mock.MockManager;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.HttpStatusCode;
 import org.springframework.web.server.ResponseStatusException;
 
 /** Test the {@link FDOApiImpl} class */
@@ -97,10 +98,10 @@ public class FDOApiTest {
     // 3 should fail because resolvePID throws PidUnresolvableException
     // 5 should fail because deleteFDO returns false
     // 6 should fail because the mockitoManager is not configured for "random/string"
-    assertEquals(api.deleteFDO("prefix", "suffix").getBody().getData().getPid(), "prefix/suffix");
-    assertEquals(api.deleteFDO("prefix", "suffix").getBody().getData().getPid(), "suffix/prefix");
+    assertEquals(api.deleteFDO("prefix", "suffix").getStatusCode(), HttpStatusCode.valueOf(204));
+    assertEquals(api.deleteFDO("prefix", "suffix").getStatusCode(), HttpStatusCode.valueOf(204));
     assertThrows(ResponseStatusException.class, () -> api.deleteFDO("prefix", "suffix"));
-    assertEquals(api.deleteFDO("prefix", "suffix").getBody().getData().getPid(), "prefix/suffix");
+    assertEquals(api.deleteFDO("prefix", "suffix").getStatusCode(), HttpStatusCode.valueOf(204));
     assertThrows(ResponseStatusException.class, () -> api.deleteFDO("prefix", "suffix"));
     assertThrows(ResponseStatusException.class, () -> api.deleteFDO("random", "string"));
     // resolvePID("prefix/suffix") is called from 1,2,3,4,5
-- 
GitLab