Improving HTTP Response code to be more standard.

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/information-system/resource-registry@146775 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Luca Frosini 2017-04-11 17:38:46 +00:00
parent 533a4e128a
commit 4c0e3ef978
5 changed files with 26 additions and 119 deletions

View File

@ -107,7 +107,7 @@ public class Access {
} catch (ERNotFoundException e) { } catch (ERNotFoundException e) {
return Response.status(Status.NOT_FOUND).build(); return Response.status(Status.NOT_FOUND).build();
} catch (ERAvailableInAnotherContextException e) { } catch (ERAvailableInAnotherContextException e) {
return Response.status(Status.CONFLICT).build(); return Response.status(Status.FORBIDDEN).build();
} catch (ResourceRegistryException e) { } catch (ResourceRegistryException e) {
throw e; throw e;
} }

View File

@ -12,6 +12,8 @@ import javax.ws.rs.Path;
import javax.ws.rs.PathParam; import javax.ws.rs.PathParam;
import javax.ws.rs.Produces; import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam; import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import org.gcube.informationsystem.resourceregistry.ResourceInitializer; import org.gcube.informationsystem.resourceregistry.ResourceInitializer;
import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException;
@ -50,12 +52,13 @@ public class ContextManager {
*/ */
@PUT @PUT
@Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) @Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8)
public String create( public Response create(
@QueryParam(ContextPath.PARENT_CONTEXT_ID_PARAM) String parentUUID, @QueryParam(ContextPath.PARENT_CONTEXT_ID_PARAM) String parentUUID,
@QueryParam(ContextPath.NAME_PARAM) String name) @QueryParam(ContextPath.NAME_PARAM) String name)
throws ContextCreationException, ResourceRegistryException { throws ContextCreationException, ResourceRegistryException {
logger.trace("requested to create context with name : {} ", name); logger.trace("requested to create context with name : {} ", name);
return contextManager.create(UUID.fromString(parentUUID), name); String ret = contextManager.create(UUID.fromString(parentUUID), name);
return Response.status(Status.CREATED).entity(ret).type(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8).build();
} }
/** /**

View File

@ -10,6 +10,8 @@ import javax.ws.rs.Path;
import javax.ws.rs.PathParam; import javax.ws.rs.PathParam;
import javax.ws.rs.Produces; import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import org.gcube.informationsystem.model.entity.Facet; import org.gcube.informationsystem.model.entity.Facet;
import org.gcube.informationsystem.model.entity.Resource; import org.gcube.informationsystem.model.entity.Resource;
@ -61,14 +63,15 @@ public class ERManager {
@Path(ERPath.FACET_PATH_PART + "/{" + TYPE_PATH_PARAM + "}") @Path(ERPath.FACET_PATH_PART + "/{" + TYPE_PATH_PARAM + "}")
@Consumes({ MediaType.TEXT_PLAIN, ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8 }) @Consumes({ MediaType.TEXT_PLAIN, ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8 })
@Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) @Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8)
public String createFacet(@PathParam(TYPE_PATH_PARAM) String type, public Response createFacet(@PathParam(TYPE_PATH_PARAM) String type,
String json) throws FacetAlreadyPresentException, ResourceRegistryException { String json) throws FacetAlreadyPresentException, ResourceRegistryException {
logger.info("requested facet creation for type {} defined by {} ", logger.info("requested facet creation for type {} defined by {} ",
type, json); type, json);
FacetManagement facetManagement = new FacetManagement(); FacetManagement facetManagement = new FacetManagement();
facetManagement.setElementType(type); facetManagement.setElementType(type);
facetManagement.setJSON(json); facetManagement.setJSON(json);
return facetManagement.create(); String ret = facetManagement.create();
return Response.status(Status.CREATED).entity(ret).type(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8).build();
} }
/** /**
@ -132,14 +135,15 @@ public class ERManager {
@Path(ERPath.RESOURCE_PATH_PART + "/{" + TYPE_PATH_PARAM + "}") @Path(ERPath.RESOURCE_PATH_PART + "/{" + TYPE_PATH_PARAM + "}")
@Consumes({ MediaType.TEXT_PLAIN, ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8 }) @Consumes({ MediaType.TEXT_PLAIN, ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8 })
@Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) @Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8)
public String createResource(@PathParam(TYPE_PATH_PARAM) String type, public Response createResource(@PathParam(TYPE_PATH_PARAM) String type,
String json) throws ResourceAlreadyPresentException, ResourceRegistryException { String json) throws ResourceAlreadyPresentException, ResourceRegistryException {
logger.info("requested resource creation for type {} with json {}", logger.info("requested resource creation for type {} with json {}",
type, json); type, json);
ResourceManagement resourceManagement = new ResourceManagement(); ResourceManagement resourceManagement = new ResourceManagement();
resourceManagement.setElementType(type); resourceManagement.setElementType(type);
resourceManagement.setJSON(json); resourceManagement.setJSON(json);
return resourceManagement.create(); String ret = resourceManagement.create();
return Response.status(Status.CREATED).entity(ret).type(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8).build();
} }
/** /**
@ -208,7 +212,7 @@ public class ERManager {
+ "/{" + TARGET_ID_PATH_PARAM + "}/{" + TYPE_PATH_PARAM + "}") + "/{" + TARGET_ID_PATH_PARAM + "}/{" + TYPE_PATH_PARAM + "}")
@Consumes({ MediaType.TEXT_PLAIN, ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8 }) @Consumes({ MediaType.TEXT_PLAIN, ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8 })
@Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) @Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8)
public String attachFacet( public Response attachFacet(
@PathParam(SOURCE_ID_PATH_PARAM) String resourceUUID, @PathParam(SOURCE_ID_PATH_PARAM) String resourceUUID,
@PathParam(TARGET_ID_PATH_PARAM) String facetUUID, @PathParam(TARGET_ID_PATH_PARAM) String facetUUID,
@PathParam(TYPE_PATH_PARAM) String type, String json) @PathParam(TYPE_PATH_PARAM) String type, String json)
@ -221,8 +225,9 @@ public class ERManager {
ConsistsOfManagement consistsOfManagement = new ConsistsOfManagement(); ConsistsOfManagement consistsOfManagement = new ConsistsOfManagement();
consistsOfManagement.setElementType(type); consistsOfManagement.setElementType(type);
consistsOfManagement.setJSON(json); consistsOfManagement.setJSON(json);
return consistsOfManagement.create(UUID.fromString(resourceUUID), String ret = consistsOfManagement.create(UUID.fromString(resourceUUID),
UUID.fromString(facetUUID)); UUID.fromString(facetUUID));
return Response.status(Status.CREATED).entity(ret).type(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8).build();
} }
/** /**
@ -265,7 +270,7 @@ public class ERManager {
+ TYPE_PATH_PARAM + "}") + TYPE_PATH_PARAM + "}")
@Consumes({ MediaType.TEXT_PLAIN, ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8 }) @Consumes({ MediaType.TEXT_PLAIN, ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8 })
@Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) @Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8)
public String attachResource( public Response attachResource(
@PathParam(SOURCE_ID_PATH_PARAM) String sourceResourceUUID, @PathParam(SOURCE_ID_PATH_PARAM) String sourceResourceUUID,
@PathParam(TARGET_ID_PATH_PARAM) String targetResourceUUID, @PathParam(TARGET_ID_PATH_PARAM) String targetResourceUUID,
@PathParam(TYPE_PATH_PARAM) String type, String json) @PathParam(TYPE_PATH_PARAM) String type, String json)
@ -280,9 +285,10 @@ public class ERManager {
isRelatedToManagement.setElementType(type); isRelatedToManagement.setElementType(type);
isRelatedToManagement.setJSON(json); isRelatedToManagement.setJSON(json);
return isRelatedToManagement.create( String ret = isRelatedToManagement.create(
UUID.fromString(sourceResourceUUID), UUID.fromString(sourceResourceUUID),
UUID.fromString(targetResourceUUID)); UUID.fromString(targetResourceUUID));
return Response.status(Status.CREATED).entity(ret).type(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8).build();
} }
/** /**

View File

@ -27,7 +27,7 @@ public class ResourceRegistryExceptionMapper implements ExceptionMapper<Resource
} else if(ERAlreadyPresentException.class.isAssignableFrom(exception.getClass())){ } else if(ERAlreadyPresentException.class.isAssignableFrom(exception.getClass())){
status = Status.CONFLICT; status = Status.CONFLICT;
} else if(ERAvailableInAnotherContextException.class.isAssignableFrom(exception.getClass())){ } else if(ERAvailableInAnotherContextException.class.isAssignableFrom(exception.getClass())){
status = Status.CONFLICT; status = Status.FORBIDDEN;
} else if(exception.getClass() == ResourceRegistryException.class){ } else if(exception.getClass() == ResourceRegistryException.class){
status = Status.INTERNAL_SERVER_ERROR; status = Status.INTERNAL_SERVER_ERROR;
} }

View File

@ -7,6 +7,8 @@ import javax.ws.rs.Path;
import javax.ws.rs.PathParam; import javax.ws.rs.PathParam;
import javax.ws.rs.Produces; import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import org.gcube.informationsystem.model.AccessType; import org.gcube.informationsystem.model.AccessType;
import org.gcube.informationsystem.resourceregistry.ResourceInitializer; import org.gcube.informationsystem.resourceregistry.ResourceInitializer;
@ -41,7 +43,7 @@ public class SchemaManager {
@Path("{" + TYPE_PATH_PARAM + "}") @Path("{" + TYPE_PATH_PARAM + "}")
@Consumes({ MediaType.TEXT_PLAIN, ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8 }) @Consumes({ MediaType.TEXT_PLAIN, ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8 })
@Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) @Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8)
public String create( public Response create(
@PathParam(TYPE_PATH_PARAM) String type, @PathParam(TYPE_PATH_PARAM) String type,
String json) String json)
throws SchemaException, ResourceRegistryException { throws SchemaException, ResourceRegistryException {
@ -76,112 +78,8 @@ public class SchemaManager {
} }
SchemaManagement schemaManagement = new SchemaManagementImpl(); SchemaManagement schemaManagement = new SchemaManagementImpl();
return schemaManagement.create(json, accessType); String ret = schemaManagement.create(json, accessType);
return Response.status(Status.CREATED).entity(ret).type(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8).build();
} }
// /**
// * e.g. PUT /resource-registry/schema/embedded
// *
// * BODY: {...}
// *
// * @param json
// * @return
// * @throws SchemaException
// */
// @PUT
// @Path(SchemaPath.EMBEDDED_PATH_PART)
// @Consumes({ MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON })
// @Produces(MediaType.APPLICATION_JSON)
// public String registerEmbeddedTypeSchema(String json)
// throws SchemaException {
// logger.trace("Requested {} registration with schema {}", Embedded.NAME,
// json);
// SchemaManagement schemaManagement = new SchemaManagementImpl();
// return schemaManagement.create(json, AccessType.EMBEDDED);
// }
//
// /**
// * e.g. PUT /resource-registry/schema/facet
// *
// * BODY: {...}
// *
// * @param json
// * @return
// * @throws SchemaException
// */
// @PUT
// @Path(SchemaPath.FACET_PATH_PART)
// @Consumes({ MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON })
// @Produces(MediaType.APPLICATION_JSON)
// public String registerFacetSchema(String json) throws SchemaException {
// logger.trace("Requested {} registration with schema {}", Facet.NAME,
// json);
// SchemaManagement schemaManagement = new SchemaManagementImpl();
// return schemaManagement.create(json, AccessType.FACET);
// }
//
// /**
// * e.g. PUT /resource-registry/schema/resource
// *
// * BODY: {...}
// *
// * @param jsonSchema
// * @return
// * @throws SchemaException
// */
// @PUT
// @Path(SchemaPath.RESOURCE_PATH_PART)
// @Consumes({ MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON })
// @Produces(MediaType.APPLICATION_JSON)
// public String registerResourceSchema(String json)
// throws SchemaException {
// logger.trace("Requested {} registration with schema {}", Resource.NAME,
// json);
// SchemaManagement schemaManagement = new SchemaManagementImpl();
// return schemaManagement.create(json, AccessType.RESOURCE);
// }
//
// /**
// * e.g. PUT /resource-registry/schema/consistsOf
// *
// * BODY: {...}
// *
// * @param jsonSchema
// * @return
// * @throws SchemaException
// */
// @PUT
// @Path(SchemaPath.CONSISTS_OF_PATH_PART)
// @Consumes({ MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON })
// @Produces(MediaType.APPLICATION_JSON)
// public String registerConsistsOfSchema(String json)
// throws SchemaException {
// logger.trace("Requested {} registration with schema {} ",
// ConsistsOf.NAME, json);
// SchemaManagement schemaManagement = new SchemaManagementImpl();
// return schemaManagement.create(json, AccessType.CONSISTS_OF);
// }
//
// /**
// * e.g. PUT /resource-registry/schema/isRelatedTo
// *
// * BODY: {...}
// *
// * @param jsonSchema
// * @return
// * @throws SchemaException
// */
// @PUT
// @Path(SchemaPath.IS_RELATED_TO_PATH_PART)
// @Consumes({ MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON })
// @Produces(MediaType.APPLICATION_JSON)
// public String registerIsRelatedToSchema(String json)
// throws SchemaException {
// logger.trace("Requested {} registration with schema {} ",
// IsRelatedTo.NAME, json);
// SchemaManagement schemaManagement = new SchemaManagementImpl();
// return schemaManagement.create(json, AccessType.IS_RELATED_TO);
// }
} }