diff --git a/.classpath b/.classpath index f37dec8..580df31 100644 --- a/.classpath +++ b/.classpath @@ -3,6 +3,8 @@ + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 714351a..13b3428 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,5 +1,13 @@ eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning org.eclipse.jdt.core.compiler.source=1.8 diff --git a/webapp/src/main/java/org/gcube/resourcemanagement/manager/webapp/context/CreateRequest.java b/webapp/src/main/java/org/gcube/resourcemanagement/manager/webapp/context/CreateRequest.java index ab9b2e1..32d924f 100644 --- a/webapp/src/main/java/org/gcube/resourcemanagement/manager/webapp/context/CreateRequest.java +++ b/webapp/src/main/java/org/gcube/resourcemanagement/manager/webapp/context/CreateRequest.java @@ -5,6 +5,8 @@ import java.util.Objects; import org.gcube.informationsystem.model.entity.Context; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; import org.gcube.informationsystem.resourceregistry.api.exceptions.context.ContextAlreadyPresentException; +import org.gcube.resourcemanagement.manager.io.exceptions.CodeException; +import org.gcube.resourcemanagement.manager.io.exceptions.RMCode; /** * Actions that can be performed on the context. @@ -50,10 +52,9 @@ public final class CreateRequest extends RequestToResourceRegistry { return ResponseFromResourceRegistry.newFailureResponse("Invalid response from the RR (null?)"); } } catch (ContextAlreadyPresentException cape) { - return ResponseFromResourceRegistry.fromException(cape); + return ResponseFromResourceRegistry.fromException(new CodeException(RMCode.CONTEXT_ALREADY_EXIST)); } catch (ResourceRegistryException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + return ResponseFromResourceRegistry.fromException(new CodeException(RMCode.GENERIC_ERROR_FROM_RR)); } return ResponseFromResourceRegistry.newSuccessResponseWithMessage("Context successfully created."); } diff --git a/webapp/src/main/java/org/gcube/resourcemanagement/manager/webapp/context/RequestToResourceRegistry.java b/webapp/src/main/java/org/gcube/resourcemanagement/manager/webapp/context/RequestToResourceRegistry.java index 2776b39..c055514 100644 --- a/webapp/src/main/java/org/gcube/resourcemanagement/manager/webapp/context/RequestToResourceRegistry.java +++ b/webapp/src/main/java/org/gcube/resourcemanagement/manager/webapp/context/RequestToResourceRegistry.java @@ -5,6 +5,8 @@ import java.util.Objects; import org.gcube.informationsystem.resourceregistry.context.ResourceRegistryContextClient; import org.gcube.informationsystem.resourceregistry.context.ResourceRegistryContextClientFactory; import org.gcube.informationsystem.resourceregistry.context.ResourceRegistryContextClientImpl; +import org.gcube.resourcemanagement.manager.io.exceptions.CodeException; +import org.gcube.resourcemanagement.manager.io.exceptions.RMCode; /** * Base request to an operation exposed by the Resource Registry. @@ -37,8 +39,8 @@ public abstract class RequestToResourceRegistry { try { this.validate(); } catch (Exception e) { - ResponseFromResourceRegistry response = ResponseFromResourceRegistry.fromException(e).setMessage( - "Failed to validate the request. The request was not submitted to the Resource Registry."); + ResponseFromResourceRegistry response = ResponseFromResourceRegistry. + fromException(new CodeException(RMCode.INVALID_REQUEST)); return response; } if (Objects.isNull(this.resourceRegistryContextClient)) diff --git a/webapp/src/main/java/org/gcube/resourcemanagement/manager/webapp/context/ResponseFromResourceRegistry.java b/webapp/src/main/java/org/gcube/resourcemanagement/manager/webapp/context/ResponseFromResourceRegistry.java index ac7150c..643d92f 100644 --- a/webapp/src/main/java/org/gcube/resourcemanagement/manager/webapp/context/ResponseFromResourceRegistry.java +++ b/webapp/src/main/java/org/gcube/resourcemanagement/manager/webapp/context/ResponseFromResourceRegistry.java @@ -5,6 +5,8 @@ import java.util.Collections; import java.util.List; import java.util.Optional; +import org.gcube.resourcemanagement.manager.io.exceptions.CodeException; + /** * The response to a {@link RequestToResourceRegistry}. * @@ -17,7 +19,7 @@ public class ResponseFromResourceRegistry { private String message; - private List exceptions = new ArrayList<>(); + private List exceptions = new ArrayList<>(); protected ResponseFromResourceRegistry() {} @@ -44,7 +46,7 @@ public class ResponseFromResourceRegistry { * The {@link Exception} returned by the RR. * @return the exception */ - public Optional getException() { + public Optional getException() { return Optional.ofNullable(success? null: this.exceptions.get(0)); } @@ -53,10 +55,9 @@ public class ResponseFromResourceRegistry { * @param e * @return the response */ - public static ResponseFromResourceRegistry fromException(E e) { + public static ResponseFromResourceRegistry fromException(E e) { ResponseFromResourceRegistry response = new ResponseFromResourceRegistry(); response.success = false; - response.message = e.getMessage(); response.exceptions = Collections.singletonList(e); return response; } 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 6b8de65..3bfd312 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 @@ -9,6 +9,8 @@ import javax.ws.rs.core.Response.Status; import org.gcube.informationsystem.model.entity.Context; import static org.gcube.resourcemanagement.manager.io.rs.RMContextPath.*; + +import org.gcube.resourcemanagement.manager.io.exceptions.CodeException; import org.gcube.resourcemanagement.manager.webapp.ResourceInitializer; import org.gcube.resourcemanagement.manager.webapp.context.CreateRequest; import org.gcube.resourcemanagement.manager.webapp.context.ResponseFromResourceRegistry; @@ -32,17 +34,20 @@ public class RMContext { */ @POST @Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) - public Response create(String json, @QueryParam(FORCE_RRURL_PARAM) String rrURL) { + public Response create(String json, @QueryParam(FORCE_RRURL_PARAM) String rrURL) throws CodeException { 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(); } diff --git a/webapp/src/test/java/org/gcube/resourcemanagement/manager/webapp/context/RMContextTest.java b/webapp/src/test/java/org/gcube/resourcemanagement/manager/webapp/context/RMContextTest.java index ed1ed43..2677356 100644 --- a/webapp/src/test/java/org/gcube/resourcemanagement/manager/webapp/context/RMContextTest.java +++ b/webapp/src/test/java/org/gcube/resourcemanagement/manager/webapp/context/RMContextTest.java @@ -41,14 +41,14 @@ import com.fasterxml.jackson.core.JsonProcessingException; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class RMContextTest extends JerseyTest { - private final static String contextName = "firstContext"; - - private final static String RR = ""; + private final static String contextName = "firstContext4"; + private final static String RR = "http://manuele-registry.dev.d4science.org/resource-registry"; + + public static final String DEFAULT_TEST_SCOPE ="71b9ef86-76ba-4346-b16e-9a1af203f6db-98187548"; + private static boolean skipTest = false; - public static final String DEFAULT_TEST_SCOPE = ""; - @BeforeClass public static void beforeClass() throws Exception { setContext(DEFAULT_TEST_SCOPE);