From b6891d4d89f33aba89e89917f1d1516aea5edab8 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Tue, 29 Jan 2019 16:46:22 +0000 Subject: [PATCH] Using gcat-api refs #13216 git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/data-publishing/gcat@176866 82a268e6-3cf1-43bd-a215-b396298e98cf --- pom.xml | 54 ++++++++++--------- .../gcat/persistence/ckan/CKANResource.java | 4 +- .../java/org/gcube/gcat/rest/BaseREST.java | 17 ------ src/main/java/org/gcube/gcat/rest/Group.java | 18 ++++--- src/main/java/org/gcube/gcat/rest/Item.java | 19 ++++--- .../java/org/gcube/gcat/rest/License.java | 6 +-- .../java/org/gcube/gcat/rest/Namespace.java | 6 +-- .../org/gcube/gcat/rest/Organization.java | 14 ++--- .../java/org/gcube/gcat/rest/Profile.java | 44 +++++++++++---- src/main/java/org/gcube/gcat/rest/REST.java | 11 +++- .../java/org/gcube/gcat/rest/Resource.java | 30 +++++++---- src/main/java/org/gcube/gcat/rest/User.java | 18 +++---- .../java/org/gcube/gcat/utils/Constants.java | 28 ++++++++-- .../org/gcube/gcat/rest/ResourceTest.java | 22 ++++++++ .../org/gcube/gcat/utils/ConstantsTest.java | 20 +++++++ 15 files changed, 207 insertions(+), 104 deletions(-) create mode 100644 src/test/java/org/gcube/gcat/rest/ResourceTest.java create mode 100644 src/test/java/org/gcube/gcat/utils/ConstantsTest.java diff --git a/pom.xml b/pom.xml index fe88e86..8b9cf18 100644 --- a/pom.xml +++ b/pom.xml @@ -38,7 +38,7 @@ - 2.13 + 2.24.1 UTF-8 ${project.basedir}/src/main/webapp/WEB-INF @@ -54,6 +54,12 @@ + + org.gcube.data-publishing + gcat-api + [1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT) + + javax.cache @@ -99,13 +105,9 @@ jersey-container-servlet ${version.jersey} - + org.glassfish.jersey.media @@ -125,30 +127,30 @@ 3.0.1 provided - - + + org.gcube.common gxRest [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) - - + + com.fasterxml.jackson.core - jackson-core - provided + jackson-core + provided com.fasterxml.jackson.core - jackson-databind - provided + jackson-databind + provided com.fasterxml.jackson.core - jackson-annotations - provided + jackson-annotations + provided org.gcube.resources @@ -175,7 +177,7 @@ discovery-client provided - + org.gcube.core common-encryption provided @@ -196,26 +198,26 @@ provided - - + + org.gcube.core common-smartgears provided - + de.grundid.opendatalab geojson-jackson 1.8 - + commons-lang commons-lang 2.3 - + org.json @@ -225,8 +227,8 @@ org.gcube.data-publishing - storagehub-application-persistence - [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) + storagehub-application-persistence + [1.0.0-SNAPSHOT,2.0.0-SNAPSHOT) diff --git a/src/main/java/org/gcube/gcat/persistence/ckan/CKANResource.java b/src/main/java/org/gcube/gcat/persistence/ckan/CKANResource.java index b23d276..5e5929f 100644 --- a/src/main/java/org/gcube/gcat/persistence/ckan/CKANResource.java +++ b/src/main/java/org/gcube/gcat/persistence/ckan/CKANResource.java @@ -121,7 +121,7 @@ public class CKANResource extends CKAN { public JsonNode getPreviousRepresentation() { if(previousRepresentation==null && resourceID!=null) { - super.read(); + sendGetRequest(READ, getMapWithID(resourceID)); validate(result); previousRepresentation = result; } @@ -386,7 +386,7 @@ public class CKANResource extends CKAN { public void delete() { try { deleteFile(); - super.delete(); + sendPostRequest(DELETE, createJsonNodeWithID(resourceID)); } catch(WebApplicationException e) { throw e; } catch(Exception e) { diff --git a/src/main/java/org/gcube/gcat/rest/BaseREST.java b/src/main/java/org/gcube/gcat/rest/BaseREST.java index f5756b8..6164b57 100644 --- a/src/main/java/org/gcube/gcat/rest/BaseREST.java +++ b/src/main/java/org/gcube/gcat/rest/BaseREST.java @@ -1,7 +1,6 @@ package org.gcube.gcat.rest; import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; import javax.ws.rs.core.UriInfo; import javax.ws.rs.core.Response.ResponseBuilder; @@ -16,24 +15,8 @@ public class BaseREST { @Context private UriInfo uriInfo; - public static final String GROUPS = "groups"; - public static final String ITEMS = "items"; - public static final String LICENSES = "licenses"; - public static final String NAMESPACES = "namespaces"; - public static final String ORGANIZATIONS = "organizations"; - public static final String PROFILES = "profiles"; - public static final String RESOURCES = "resources"; - public static final String USERS = "users"; - - public static final String PURGE_QUERY_PARAMETER = "purge"; - - public static final String APPLICATION_JSON_CHARSET_UTF_8 = MediaType.APPLICATION_JSON + ";charset=UTF-8"; - protected static final String LOCATION_HEADER = "Location"; - public static final String LIMIT_PARAMETER = "limit"; - public static final String OFFSET_PARAMETER = "offset"; - protected void setCalledMethod(String method) { CalledMethodProvider.instance.set(method); logger.info("{}", uriInfo.getAbsolutePath()); diff --git a/src/main/java/org/gcube/gcat/rest/Group.java b/src/main/java/org/gcube/gcat/rest/Group.java index e8f157c..a89e814 100644 --- a/src/main/java/org/gcube/gcat/rest/Group.java +++ b/src/main/java/org/gcube/gcat/rest/Group.java @@ -15,25 +15,26 @@ import javax.ws.rs.core.Response; import org.gcube.gcat.ResourceInitializer; import org.gcube.gcat.annotation.PATCH; import org.gcube.gcat.annotation.PURGE; +import org.gcube.gcat.api.GCatConstants; import org.gcube.gcat.persistence.ckan.CKANGroup; /** * @author Luca Frosini (ISTI - CNR) */ -@Path(BaseREST.GROUPS) -public class Group extends REST { +@Path(Group.GROUPS) +public class Group extends REST implements org.gcube.gcat.api.interfaces.Group{ protected static final String GROUP_ID_PARAMETER = "GROUP_ID"; public Group() { - super(BaseREST.GROUPS, GROUP_ID_PARAMETER, CKANGroup.class); + super(GROUPS, GROUP_ID_PARAMETER, CKANGroup.class); } @GET @Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) @Override - public String list(@QueryParam(BaseREST.LIMIT_PARAMETER) @DefaultValue("10") int limit, - @QueryParam(BaseREST.OFFSET_PARAMETER) @DefaultValue("0") int offset) { + public String list(@QueryParam(GCatConstants.LIMIT_PARAMETER) @DefaultValue("10") int limit, + @QueryParam(GCatConstants.OFFSET_PARAMETER) @DefaultValue("0") int offset) { return super.list(limit, offset); } @@ -75,7 +76,7 @@ public class Group extends REST { @Path("/{" + GROUP_ID_PARAMETER + "}") @Override public Response delete(@PathParam(GROUP_ID_PARAMETER) String id, - @QueryParam(BaseREST.PURGE_QUERY_PARAMETER) @DefaultValue("false") Boolean purge) { + @QueryParam(GCatConstants.PURGE_QUERY_PARAMETER) @DefaultValue("false") Boolean purge) { return super.delete(id, purge); } @@ -85,5 +86,10 @@ public class Group extends REST { public Response purge(@PathParam(GROUP_ID_PARAMETER) String id) { return delete(id, true); } + + @Override + public Response delete(String name, boolean purge) { + return delete(name, new Boolean(purge)); + } } diff --git a/src/main/java/org/gcube/gcat/rest/Item.java b/src/main/java/org/gcube/gcat/rest/Item.java index 2fa4cbb..3589f00 100644 --- a/src/main/java/org/gcube/gcat/rest/Item.java +++ b/src/main/java/org/gcube/gcat/rest/Item.java @@ -11,28 +11,30 @@ import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Response; +import javax.xml.ws.WebServiceException; import org.gcube.gcat.ResourceInitializer; import org.gcube.gcat.annotation.PURGE; +import org.gcube.gcat.api.GCatConstants; import org.gcube.gcat.persistence.ckan.CKANPackage; /** * @author Luca Frosini (ISTI - CNR) */ -@Path(BaseREST.ITEMS) -public class Item extends REST { +@Path(Item.ITEMS) +public class Item extends REST implements org.gcube.gcat.api.interfaces.Item{ public static final String ITEM_ID_PARAMETER = "ITEM_ID"; public Item() { - super(BaseREST.ITEMS, ITEM_ID_PARAMETER, CKANPackage.class); + super(ITEMS, ITEM_ID_PARAMETER, CKANPackage.class); } @GET @Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) @Override - public String list(@QueryParam(BaseREST.LIMIT_PARAMETER) @DefaultValue("10") int limit, - @QueryParam(BaseREST.OFFSET_PARAMETER) @DefaultValue("0") int offset) { + public String list(@QueryParam(GCatConstants.LIMIT_PARAMETER) @DefaultValue("10") int limit, + @QueryParam(GCatConstants.OFFSET_PARAMETER) @DefaultValue("0") int offset) { return super.list(limit, offset); } @@ -76,7 +78,7 @@ public class Item extends REST { @Path("/{" + ITEM_ID_PARAMETER + "}") @Override public Response delete(@PathParam(ITEM_ID_PARAMETER) String id, - @QueryParam(BaseREST.PURGE_QUERY_PARAMETER) @DefaultValue("false") Boolean purge) { + @QueryParam(GCatConstants.PURGE_QUERY_PARAMETER) @DefaultValue("false") Boolean purge) { return super.delete(id, purge); } @@ -86,5 +88,10 @@ public class Item extends REST { public Response purge(@PathParam(ITEM_ID_PARAMETER) String id) { return super.purge(id); } + + @Override + public Response delete(String name, boolean purge) throws WebServiceException { + return delete(name, new Boolean(purge)); + } } diff --git a/src/main/java/org/gcube/gcat/rest/License.java b/src/main/java/org/gcube/gcat/rest/License.java index d974db7..efcf83d 100644 --- a/src/main/java/org/gcube/gcat/rest/License.java +++ b/src/main/java/org/gcube/gcat/rest/License.java @@ -10,11 +10,11 @@ import org.gcube.gcat.persistence.ckan.CKANLicense; /** * @author Luca Frosini (ISTI - CNR) */ -@Path(BaseREST.LICENSES) -public class License extends REST { +@Path(License.LICENSES) +public class License extends REST implements org.gcube.gcat.api.interfaces.License { public License() { - super(BaseREST.LICENSES, null, CKANLicense.class); + super(LICENSES, null, CKANLicense.class); } @GET diff --git a/src/main/java/org/gcube/gcat/rest/Namespace.java b/src/main/java/org/gcube/gcat/rest/Namespace.java index 430a01d..df16544 100644 --- a/src/main/java/org/gcube/gcat/rest/Namespace.java +++ b/src/main/java/org/gcube/gcat/rest/Namespace.java @@ -18,13 +18,13 @@ import com.fasterxml.jackson.databind.node.ObjectNode; /** * @author Luca Frosini (ISTI - CNR) */ -@Path(BaseREST.NAMESPACES) -public class Namespace extends BaseREST { +@Path(Namespace.NAMESPACES) +public class Namespace extends BaseREST implements org.gcube.gcat.api.interfaces.Namespace { @GET @Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) public String list() { - setCalledMethod("GET /" + BaseREST.NAMESPACES); + setCalledMethod("GET /" + NAMESPACES); ObjectMapper mapper = new ObjectMapper(); ArrayNode arrayNode = mapper.createArrayNode(); diff --git a/src/main/java/org/gcube/gcat/rest/Organization.java b/src/main/java/org/gcube/gcat/rest/Organization.java index 3e5a25d..d1acc3c 100644 --- a/src/main/java/org/gcube/gcat/rest/Organization.java +++ b/src/main/java/org/gcube/gcat/rest/Organization.java @@ -15,25 +15,27 @@ import javax.ws.rs.core.Response; import org.gcube.gcat.ResourceInitializer; import org.gcube.gcat.annotation.PATCH; import org.gcube.gcat.annotation.PURGE; +import org.gcube.gcat.api.GCatConstants; import org.gcube.gcat.persistence.ckan.CKANOrganization; /** * @author Luca Frosini (ISTI - CNR) */ -@Path(BaseREST.ORGANIZATIONS) -public class Organization extends REST { +@Path(Organization.ORGANIZATIONS) +public class Organization extends REST + implements org.gcube.gcat.api.interfaces.Organization { public static final String ORGANIZATION_ID_PARAMETER = "ORGANIZATION_ID"; public Organization() { - super(BaseREST.ORGANIZATIONS, ORGANIZATION_ID_PARAMETER, CKANOrganization.class); + super(ORGANIZATIONS, ORGANIZATION_ID_PARAMETER, CKANOrganization.class); } @GET @Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) @Override - public String list(@QueryParam(BaseREST.LIMIT_PARAMETER) @DefaultValue("10") int limit, - @QueryParam(BaseREST.OFFSET_PARAMETER) @DefaultValue("0") int offset) { + public String list(@QueryParam(GCatConstants.LIMIT_PARAMETER) @DefaultValue("10") int limit, + @QueryParam(GCatConstants.OFFSET_PARAMETER) @DefaultValue("0") int offset) { return super.list(limit, offset); } @@ -75,7 +77,7 @@ public class Organization extends REST { @Path("/{" + ORGANIZATION_ID_PARAMETER + "}") @Override public Response delete(@PathParam(ORGANIZATION_ID_PARAMETER) String id, - @QueryParam(BaseREST.PURGE_QUERY_PARAMETER) @DefaultValue("false") Boolean purge) { + @QueryParam(GCatConstants.PURGE_QUERY_PARAMETER) @DefaultValue("false") Boolean purge) { return super.delete(id, purge); } diff --git a/src/main/java/org/gcube/gcat/rest/Profile.java b/src/main/java/org/gcube/gcat/rest/Profile.java index 22c0513..e82c0e7 100644 --- a/src/main/java/org/gcube/gcat/rest/Profile.java +++ b/src/main/java/org/gcube/gcat/rest/Profile.java @@ -16,9 +16,12 @@ import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.ResponseBuilder; import javax.ws.rs.core.Response.Status; +import javax.ws.rs.core.UriInfo; import org.gcube.common.resources.gcore.GenericResource; import org.gcube.common.resources.gcore.Resources; @@ -44,17 +47,20 @@ import com.fasterxml.jackson.databind.node.ArrayNode; /** * @author Luca Frosini (ISTI - CNR) */ -@Path(BaseREST.PROFILES) -public class Profile extends BaseREST { +@Path(Profile.PROFILES) +public class Profile extends BaseREST implements org.gcube.gcat.api.interfaces.Profile { private static Logger logger = LoggerFactory.getLogger(Profile.class); public static final String PROFILE_NAME_PARAMETER = "PROFILE_NAME"; + @Context + private UriInfo uriInfo; + @GET @Produces(MediaType.APPLICATION_JSON) public String list() { - setCalledMethod("GET /" + BaseREST.PROFILES); + setCalledMethod("GET /" + PROFILES); ObjectMapper mapper = new ObjectMapper(); ArrayNode arrayNode = mapper.createArrayNode(); @@ -76,8 +82,8 @@ public class Profile extends BaseREST { @Path("/{" + PROFILE_NAME_PARAMETER + "}") @Produces({MediaType.APPLICATION_XML, ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8}) public String read(@PathParam(PROFILE_NAME_PARAMETER) String name, - @DefaultValue(MediaType.APPLICATION_JSON) @HeaderParam("Accept") String accept) { - setCalledMethod("GET /" + BaseREST.PROFILES + "/{" + PROFILE_NAME_PARAMETER + "}"); + @DefaultValue(MediaType.APPLICATION_XML) @HeaderParam("Accept") String accept) { + setCalledMethod("GET /" + PROFILES + "/{" + PROFILE_NAME_PARAMETER + "}"); try { String profile = MetadataUtility.getInstance().getMetadataFormat(name).getMetadataSource(); if(profile != null) { @@ -192,17 +198,21 @@ public class Profile extends BaseREST { @Path("/{" + PROFILE_NAME_PARAMETER + "}") @Consumes(MediaType.APPLICATION_XML) @Produces(MediaType.APPLICATION_XML) - public String createOrUpdate(@PathParam(PROFILE_NAME_PARAMETER) String name, String xml) { - setCalledMethod("PUT /" + BaseREST.PROFILES + "/{" + PROFILE_NAME_PARAMETER + "}"); + public Response createOrUpdate(@PathParam(PROFILE_NAME_PARAMETER) String name, String xml) { + setCalledMethod("PUT /" + PROFILES + "/{" + PROFILE_NAME_PARAMETER + "}"); try { MetadataUtility metadataUtility = MetadataUtility.getInstance(); metadataUtility.getDataCalogueMetadataFormatReader().validateProfile(xml); if(metadataUtility.getMetadataFormat(name) == null) { createGenericResource(name, xml); + ResponseBuilder responseBuilder = Response.status(Status.CREATED).entity(xml); + responseBuilder.header(LOCATION_HEADER, uriInfo.getAbsolutePath()); + return responseBuilder.type(MediaType.APPLICATION_XML).build(); } else { updateGenericResource(name, xml); + ResponseBuilder responseBuilder = Response.status(Status.OK).entity(xml); + return responseBuilder.type(MediaType.APPLICATION_XML).build(); } - return xml; } catch(WebApplicationException e) { throw e; } catch(Exception e) { @@ -217,7 +227,7 @@ public class Profile extends BaseREST { @DELETE @Path("/{" + PROFILE_NAME_PARAMETER + "}") public Response delete(@PathParam(PROFILE_NAME_PARAMETER) String name) { - setCalledMethod("DELETE /" + BaseREST.PROFILES + "/{" + PROFILE_NAME_PARAMETER + "}"); + setCalledMethod("DELETE /" + PROFILES + "/{" + PROFILE_NAME_PARAMETER + "}"); try { MetadataUtility metadataUtility = MetadataUtility.getInstance(); if(metadataUtility.getMetadataFormat(name) == null) { @@ -235,5 +245,21 @@ public class Profile extends BaseREST { MetadataUtility.clearCache(); } } + + @Override + public Response create(String name, String xml) { + return createOrUpdate(name, xml); + + } + @Override + public String read(String name) { + return read(name, MediaType.APPLICATION_XML); + } + + @Override + public String update(String name, String xml) { + return createOrUpdate(name, xml).getEntity().toString(); + } + } diff --git a/src/main/java/org/gcube/gcat/rest/REST.java b/src/main/java/org/gcube/gcat/rest/REST.java index 76d6f45..09a1742 100644 --- a/src/main/java/org/gcube/gcat/rest/REST.java +++ b/src/main/java/org/gcube/gcat/rest/REST.java @@ -6,9 +6,10 @@ import javax.ws.rs.core.Response.ResponseBuilder; import javax.ws.rs.core.Response.Status; import org.gcube.gcat.ResourceInitializer; +import org.gcube.gcat.api.interfaces.CRUD; import org.gcube.gcat.persistence.ckan.CKAN; -public class REST extends BaseREST { +public class REST extends BaseREST implements CRUD { protected final String COLLECTION_PARAMETER; protected final String ID_PARAMETER; @@ -35,6 +36,7 @@ public class REST extends BaseREST { return ckan.list(limit, offset); } + @Override public Response create(String json) { setCalledMethod("POST /" + COLLECTION_PARAMETER); C ckan = getInstance(); @@ -45,6 +47,7 @@ public class REST extends BaseREST { return responseBuilder.type(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8).build(); } + @Override public String read(String id) { setCalledMethod("GET /" + COLLECTION_PARAMETER + "/{" + ID_PARAMETER + "}"); C ckan = getInstance(); @@ -52,6 +55,7 @@ public class REST extends BaseREST { return ckan.read(); } + @Override public String update(String id, String json) { setCalledMethod("PUT /" + COLLECTION_PARAMETER + "/{" + ID_PARAMETER + "}"); C ckan = getInstance(); @@ -67,6 +71,11 @@ public class REST extends BaseREST { return ckan.patch(json); } + @Override + public Response delete(String id) { + return delete(id, false); + } + public Response delete(String id, Boolean purge) { if(purge) { setCalledMethod("PURGE /" + COLLECTION_PARAMETER + "/{" + ID_PARAMETER + "}"); diff --git a/src/main/java/org/gcube/gcat/rest/Resource.java b/src/main/java/org/gcube/gcat/rest/Resource.java index b2feb69..4064454 100644 --- a/src/main/java/org/gcube/gcat/rest/Resource.java +++ b/src/main/java/org/gcube/gcat/rest/Resource.java @@ -8,6 +8,9 @@ import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.ResponseBuilder; +import javax.ws.rs.core.Response.Status; import org.gcube.gcat.ResourceInitializer; import org.gcube.gcat.annotation.PATCH; @@ -16,13 +19,13 @@ import org.gcube.gcat.persistence.ckan.CKANResource; /** * @author Luca Frosini (ISTI - CNR) */ -@Path(BaseREST.ITEMS + "/{" + Resource.ITEM_ID_PARAMETER + "}/" + BaseREST.RESOURCES) -public class Resource extends BaseREST { +@Path(Resource.COLLECTION) +public class Resource extends BaseREST implements org.gcube.gcat.api.interfaces.Resource { - protected static final String ITEM_ID_PARAMETER = "ITEM_ID"; + protected static final String ITEM_ID_PARAMETER = Item.ITEM_ID_PARAMETER; protected static final String RESOURCE_ID_PARAMETER = "RESOURCE_ID"; - protected static final String COLLECTION = BaseREST.ITEMS + "/{" + Resource.ITEM_ID_PARAMETER + "}/" + BaseREST.RESOURCES; + protected static final String COLLECTION = Item.ITEMS + "/{" + ITEM_ID_PARAMETER + "}/" + RESOURCES; @GET @Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) @@ -36,10 +39,14 @@ public class Resource extends BaseREST { @POST @Consumes(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) @Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) - public String create(@PathParam(ITEM_ID_PARAMETER) String itemID, String json) { + public Response create(@PathParam(ITEM_ID_PARAMETER) String itemID, String json) { setCalledMethod("POST /" + COLLECTION); CKANResource ckanResource = new CKANResource(itemID); - return ckanResource.create(json); + String ret = ckanResource.create(json); + + ResponseBuilder responseBuilder = Response.status(Status.CREATED).entity(ret); + responseBuilder = addLocation(responseBuilder, ckanResource.getResourceID()); + return responseBuilder.type(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8).build(); } @GET @@ -49,7 +56,7 @@ public class Resource extends BaseREST { @PathParam(RESOURCE_ID_PARAMETER) String resourceID) { setCalledMethod("GET /" + COLLECTION + "/{" + RESOURCE_ID_PARAMETER + "}"); CKANResource ckanResource = new CKANResource(itemID); - ckanResource.setName(resourceID); + ckanResource.setResourceID(resourceID); return ckanResource.read(); } @@ -61,7 +68,7 @@ public class Resource extends BaseREST { @PathParam(RESOURCE_ID_PARAMETER) String resourceID, String json) { setCalledMethod("PUT /" + COLLECTION + "/{" + RESOURCE_ID_PARAMETER + "}"); CKANResource ckanResource = new CKANResource(itemID); - ckanResource.setName(resourceID); + ckanResource.setResourceID(resourceID); return ckanResource.update(json); } @@ -73,18 +80,19 @@ public class Resource extends BaseREST { @PathParam(RESOURCE_ID_PARAMETER) String resourceID, String json) { setCalledMethod("PATCH /" + COLLECTION + "/{" + RESOURCE_ID_PARAMETER + "}"); CKANResource ckanResource = new CKANResource(itemID); - ckanResource.setName(resourceID); + ckanResource.setResourceID(resourceID); return ckanResource.patch(json); } @DELETE @Path("/{" + RESOURCE_ID_PARAMETER + "}") - public void delete(@PathParam(ITEM_ID_PARAMETER) String itemID, + public Response delete(@PathParam(ITEM_ID_PARAMETER) String itemID, @PathParam(RESOURCE_ID_PARAMETER) String resourceID) { setCalledMethod("DELETE /" + COLLECTION + "/{" + RESOURCE_ID_PARAMETER + "}"); CKANResource ckanResource = new CKANResource(itemID); - ckanResource.setName(resourceID); + ckanResource.setResourceID(resourceID); ckanResource.delete(false); + return Response.status(Status.NO_CONTENT).build(); } } diff --git a/src/main/java/org/gcube/gcat/rest/User.java b/src/main/java/org/gcube/gcat/rest/User.java index 2782d1d..6623546 100644 --- a/src/main/java/org/gcube/gcat/rest/User.java +++ b/src/main/java/org/gcube/gcat/rest/User.java @@ -16,13 +16,13 @@ import org.gcube.gcat.persistence.ckan.CKANUser; /** * @author Luca Frosini (ISTI - CNR) */ -@Path(BaseREST.USERS) -public class User extends REST { +@Path(User.USERS) +public class User extends REST implements org.gcube.gcat.api.interfaces.User { protected static final String USER_ID_PARAMETER = "USER_ID"; public User() { - super(BaseREST.USERS, USER_ID_PARAMETER, CKANUser.class); + super(USERS, USER_ID_PARAMETER, CKANUser.class); } @GET @@ -43,8 +43,8 @@ public class User extends REST { @Path("/{" + USER_ID_PARAMETER + "}") @Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) @Override - public String read(@PathParam(USER_ID_PARAMETER) String id) { - return super.read(id); + public String read(@PathParam(USER_ID_PARAMETER) String username) { + return super.read(username); } @PUT @@ -52,14 +52,14 @@ public class User extends REST { @Consumes(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) @Produces(ResourceInitializer.APPLICATION_JSON_CHARSET_UTF_8) @Override - public String update(@PathParam(USER_ID_PARAMETER) String id, String json) { - return super.update(id, json); + public String update(@PathParam(USER_ID_PARAMETER) String username, String json) { + return super.update(username, json); } @DELETE @Path("/{" + USER_ID_PARAMETER + "}") - public Response delete(@PathParam(USER_ID_PARAMETER) String id) { - return super.delete(id, false); + public Response delete(@PathParam(USER_ID_PARAMETER) String username) { + return super.delete(username, false); } } diff --git a/src/main/java/org/gcube/gcat/utils/Constants.java b/src/main/java/org/gcube/gcat/utils/Constants.java index 73f7c2c..f7c6eef 100644 --- a/src/main/java/org/gcube/gcat/utils/Constants.java +++ b/src/main/java/org/gcube/gcat/utils/Constants.java @@ -1,8 +1,12 @@ package org.gcube.gcat.utils; import java.io.InputStream; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; import java.util.Properties; +import javax.ws.rs.InternalServerErrorException; import javax.ws.rs.WebApplicationException; /** @@ -12,22 +16,36 @@ public class Constants { public static final String CATALOGUE_NAME = "gCat"; - private static final String PROPERTY_FILENAME = "config.properties"; - private static final String TOKEN_VARNAME = "TOKEN"; - private static final String CATALOGUE_APPLICATION_TOKEN; + + /* + * Key : Context + * Value : Application Token + */ + protected static final Map applicationTokens; + public static String getCatalogueApplicationToken() { - return CATALOGUE_APPLICATION_TOKEN; + try { + return applicationTokens.get(ContextUtility.getCurrentContext()); + }catch (Exception e) { + throw new InternalServerErrorException("Unable to retrieve Application Token for context " + ContextUtility.getCurrentContext(), e); + } } static { try { + applicationTokens = new HashMap<>(); Properties properties = new Properties(); InputStream input = Constants.class.getClassLoader().getResourceAsStream(PROPERTY_FILENAME); // load a properties file properties.load(input); - CATALOGUE_APPLICATION_TOKEN = properties.getProperty(TOKEN_VARNAME); + Enumeration enumeration = properties.propertyNames(); + while(enumeration.hasMoreElements()) { + String context = (String) enumeration.nextElement(); + String applicationToken = properties.getProperty(context); + applicationTokens.put(context, applicationToken); + } }catch (Exception e) { throw new WebApplicationException(e); } diff --git a/src/test/java/org/gcube/gcat/rest/ResourceTest.java b/src/test/java/org/gcube/gcat/rest/ResourceTest.java new file mode 100644 index 0000000..a0a3883 --- /dev/null +++ b/src/test/java/org/gcube/gcat/rest/ResourceTest.java @@ -0,0 +1,22 @@ +package org.gcube.gcat.rest; + +import org.gcube.gcat.ContextTest; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author Luca Frosini (ISTI - CNR) + */ +public class ResourceTest extends ContextTest { + + private static Logger logger = LoggerFactory.getLogger(ProfileTest.class); + + // @Test + public void read() throws Exception { + Resource resource = new Resource(); + String itemID = ""; + String resourceID = ""; + String ret = resource.read(itemID,resourceID); + logger.debug("{}", ret); + } +} diff --git a/src/test/java/org/gcube/gcat/utils/ConstantsTest.java b/src/test/java/org/gcube/gcat/utils/ConstantsTest.java new file mode 100644 index 0000000..15ff2bc --- /dev/null +++ b/src/test/java/org/gcube/gcat/utils/ConstantsTest.java @@ -0,0 +1,20 @@ +package org.gcube.gcat.utils; + +import org.gcube.gcat.ContextTest; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ConstantsTest extends ContextTest { + + private static final Logger logger = LoggerFactory.getLogger(ConstantsTest.class); + + + + @Test + public void testGetApplicationToken() { + logger.debug("Application token for Context {} is {}", ContextUtility.getCurrentContext(), Constants.getCatalogueApplicationToken()); + } + + +}