From 60a49651a5ae5a078d30964d1b1d62932e87f5e6 Mon Sep 17 00:00:00 2001 From: "manuele.simi" Date: Tue, 16 Jan 2018 03:57:22 +0000 Subject: [PATCH] More work on delete method. git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/resource-management/resource-manager@162207 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../manager/io/rs/RMContextPath.java | 3 ++ .../manager/webapp/context/DeleteRequest.java | 3 +- .../manager/webapp/rs/RMContext.java | 49 ++++++++++++------- 3 files changed, 36 insertions(+), 19 deletions(-) diff --git a/io/src/main/java/org/gcube/resourcemanagement/manager/io/rs/RMContextPath.java b/io/src/main/java/org/gcube/resourcemanagement/manager/io/rs/RMContextPath.java index 22cd65d..c1528fc 100644 --- a/io/src/main/java/org/gcube/resourcemanagement/manager/io/rs/RMContextPath.java +++ b/io/src/main/java/org/gcube/resourcemanagement/manager/io/rs/RMContextPath.java @@ -14,6 +14,9 @@ public class RMContextPath { public static final String CREATE_PATH_PART = "create"; + public static final String DELETE_PATH_PART = "delete"; + + /** * Force the service to use the ResourceRegistry instance at the given URL. */ diff --git a/webapp/src/main/java/org/gcube/resourcemanagement/manager/webapp/context/DeleteRequest.java b/webapp/src/main/java/org/gcube/resourcemanagement/manager/webapp/context/DeleteRequest.java index b4afffb..3b8b7c0 100644 --- a/webapp/src/main/java/org/gcube/resourcemanagement/manager/webapp/context/DeleteRequest.java +++ b/webapp/src/main/java/org/gcube/resourcemanagement/manager/webapp/context/DeleteRequest.java @@ -3,7 +3,6 @@ package org.gcube.resourcemanagement.manager.webapp.context; import java.util.Objects; import java.util.UUID; -import org.gcube.informationsystem.model.entity.Context; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; /** @@ -20,7 +19,7 @@ public final class DeleteRequest extends RequestToResourceRegistry { this.context = context; } - public static DeleteRequest fromHolder(UUID context) { + public static DeleteRequest fromUUID(UUID context) { Objects.requireNonNull(context); return new DeleteRequest(context); } diff --git a/webapp/src/main/java/org/gcube/resourcemanagement/manager/webapp/rs/RMContext.java b/webapp/src/main/java/org/gcube/resourcemanagement/manager/webapp/rs/RMContext.java index 5ccbf1c..cc5d5c5 100644 --- a/webapp/src/main/java/org/gcube/resourcemanagement/manager/webapp/rs/RMContext.java +++ b/webapp/src/main/java/org/gcube/resourcemanagement/manager/webapp/rs/RMContext.java @@ -11,8 +11,12 @@ import javax.ws.rs.core.Response.Status; import org.gcube.common.authorization.library.provider.CalledMethodProvider; import org.gcube.informationsystem.model.entity.Context; import static org.gcube.resourcemanagement.manager.io.rs.RMContextPath.*; + +import java.util.UUID; + import org.gcube.resourcemanagement.manager.webapp.ResourceInitializer; import org.gcube.resourcemanagement.manager.webapp.context.CreateRequest; +import org.gcube.resourcemanagement.manager.webapp.context.DeleteRequest; import org.gcube.resourcemanagement.manager.webapp.context.ResponseFromResourceRegistry; import org.gcube.resourcemanagement.manager.webapp.context.ContextHolder; import org.slf4j.Logger; @@ -30,7 +34,7 @@ public class RMContext { private static Logger logger = LoggerFactory.getLogger(RMContext.class); /* - * e.g. POST /resource-manager/context/ + * e.g. POST /resource-manager/context?rrURL=http://registry:port//resource-registry */ @POST @Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) @@ -38,31 +42,42 @@ public class RMContext { CalledMethodProvider.instance.set(String.format("POST /%s/%s", APPLICATION_PATH, CONTEXT_ROOT)); logger.info("Requested to create context {} with json {}", Context.NAME, json); logger.info("Force URL: " + rrURL); - Response response; ContextHolder holder = new ContextHolder(json); ResponseFromResourceRegistry returned = CreateRequest.fromHolder(holder).forceURL(rrURL).submit(); - logger.debug("Returned " + returned.wasSuccessful()); - if (returned.wasSuccessful()) { - response = Response.status(Status.CREATED) - .entity(returned.getMessage().map(m -> m).orElse("Context successfully created.")) - .type(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8).build(); - } else { - if (returned.getException().isPresent()) - throw returned.getException().get(); - response = Response.status(Status.BAD_REQUEST) - .entity(returned.getMessage().map(m -> m).orElse("Failed to create the context.")).build(); - } - return response; + return this.buildResponse(returned,"Context successfully created.","Failed to create the context."); } + + /* + * e.g. DELETE /resource-manager/context/UUID?rrURL=http://registry:port//resource-registry + */ @DELETE @Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) public Response delete(String uuid, @QueryParam(FORCE_RRURL_PARAM) String rrURL) { CalledMethodProvider.instance.set(String.format("DELETE /%s/%s/ID", APPLICATION_PATH, CONTEXT_ROOT)); logger.info("Requested to delete context {} with id {}", Context.NAME, uuid); logger.info("Force URL: " + rrURL); - Response response = null; - - return response; + ResponseFromResourceRegistry returned = DeleteRequest.fromUUID(UUID.fromString(uuid)).forceURL(rrURL).submit(); + return this.buildResponse(returned,"Context successfully deleted.","Failed to delete the context."); + } + + /** + * Builds a response for the client. + * @param returned + * @param successMessage + * @param failedMessage + * @return the response + */ + private Response buildResponse(ResponseFromResourceRegistry returned, String successMessage, String failedMessage) { + if (returned.wasSuccessful()) { + return Response.status(Status.CREATED) + .entity(returned.getMessage().map(m -> m).orElse(successMessage)) + .type(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8).build(); + } else { + if (returned.getException().isPresent()) + throw returned.getException().get(); + return Response.status(Status.BAD_REQUEST) + .entity(returned.getMessage().map(m -> m).orElse(failedMessage)).build(); + } } }