diff --git a/CHANGELOG.md b/CHANGELOG.md index a3de2a5..c7836f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,11 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [v2.0.0-SNAPSHOT] + +- Complete refactor of connector [#23454] +- Changed groupId + ## [v1.4.0] - Removed old code which set the user role in ckan [#23310] diff --git a/README.md b/README.md index f4755b2..b508966 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ See [Releases](https://code-repo.d4science.org/gCubeSystem/ckan-connector/releas ## Authors +* **Luca Frosini** ([ORCID](https://orcid.org/0000-0003-3183-2291)) - [ISTI-CNR Infrascience Group](http://nemis.isti.cnr.it/groups/infrascience) * **Lucio Lelii** ([ISTI-CNR Infrascience Group](http://nemis.isti.cnr.it/groups/infrascience) diff --git a/pom.xml b/pom.xml index f6a303e..363b313 100644 --- a/pom.xml +++ b/pom.xml @@ -9,12 +9,12 @@ 1.1.0 - org.gcube.data.access + org.gcube.data-catalogue ckan-connector - 1.4.0 + 2.0.0-SNAPSHOT war - ckan connector - a ckan connector for automatic login + Ckan connector + Ckan connector for automatic login scm:git:https://code-repo.d4science.org/gCubeSystem/${project.artifactId}.git @@ -23,8 +23,9 @@ - ${project.basedir}/src/main/webapp/WEB-INF - ${project.basedir}/distro + UTF-8 + ${project.basedir}${file.separator}src${file.separator}main${file.separator}webapp${file.separator}WEB-INF + 2.14.0 diff --git a/src/main/java/org/gcube/ckanconnector/CKanConnector.java b/src/main/java/org/gcube/ckanconnector/CKanConnector.java new file mode 100644 index 0000000..8870c28 --- /dev/null +++ b/src/main/java/org/gcube/ckanconnector/CKanConnector.java @@ -0,0 +1,19 @@ +package org.gcube.ckanconnector; + +import javax.ws.rs.ApplicationPath; + +import org.gcube.ckanconnector.rest.ConnectorManager; +import org.glassfish.jersey.server.ResourceConfig; + +/** + * @author Luca Frosini (ISTI - CNR) + * @author Lucio Lelii (ISTI - CNR) + */ +@ApplicationPath("/gcube/service/") +public class CKanConnector extends ResourceConfig { + + public CKanConnector(){ + packages(ConnectorManager.class.getPackage().toString()); + } + +} diff --git a/src/main/java/org/gcube/data/access/ckanconnector/ConnectorManager.java b/src/main/java/org/gcube/ckanconnector/rest/ConnectorManager.java similarity index 96% rename from src/main/java/org/gcube/data/access/ckanconnector/ConnectorManager.java rename to src/main/java/org/gcube/ckanconnector/rest/ConnectorManager.java index 94c9b95..1889b22 100644 --- a/src/main/java/org/gcube/data/access/ckanconnector/ConnectorManager.java +++ b/src/main/java/org/gcube/ckanconnector/rest/ConnectorManager.java @@ -1,4 +1,4 @@ -package org.gcube.data.access.ckanconnector; +package org.gcube.ckanconnector.rest; import java.io.File; import java.io.FileInputStream; @@ -15,6 +15,7 @@ import javax.ws.rs.core.Context; import javax.ws.rs.core.NewCookie; import javax.ws.rs.core.Response; +import org.gcube.ckanconnector.utils.RandomString; import org.gcube.common.authorization.library.provider.AuthorizationProvider; import org.gcube.common.scope.api.ScopeProvider; import org.gcube.gcat.client.User; @@ -22,18 +23,22 @@ import org.python.core.PyLong; import org.python.core.PyObject; import org.python.core.PyString; import org.python.util.PythonInterpreter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -import lombok.extern.slf4j.Slf4j; - +/** + * @author Luca Frosini (ISTI - CNR) + * @author Lucio Lelii (ISTI - CNR) + */ @Path("/") -@Slf4j public class ConnectorManager { + private static final Logger log = LoggerFactory.getLogger(ConnectorManager.class); + @Context ServletContext context; RandomString randomString = new RandomString(12); - @Path("disconnect") @GET public Response disconnect(@Context HttpServletRequest req) { diff --git a/src/main/java/org/gcube/data/access/ckanconnector/RandomString.java b/src/main/java/org/gcube/ckanconnector/utils/RandomString.java similarity index 85% rename from src/main/java/org/gcube/data/access/ckanconnector/RandomString.java rename to src/main/java/org/gcube/ckanconnector/utils/RandomString.java index 03c44b0..6bfee85 100644 --- a/src/main/java/org/gcube/data/access/ckanconnector/RandomString.java +++ b/src/main/java/org/gcube/ckanconnector/utils/RandomString.java @@ -1,7 +1,11 @@ -package org.gcube.data.access.ckanconnector; +package org.gcube.ckanconnector.utils; import java.util.Random; +/** + * @author Luca Frosini (ISTI - CNR) + * @author Lucio Lelii (ISTI - CNR) + */ public class RandomString { private static final char[] symbols; diff --git a/src/main/java/org/gcube/data/access/ckanconnector/CKanConnector.java b/src/main/java/org/gcube/data/access/ckanconnector/CKanConnector.java deleted file mode 100644 index f1e8ba2..0000000 --- a/src/main/java/org/gcube/data/access/ckanconnector/CKanConnector.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.gcube.data.access.ckanconnector; - -import javax.ws.rs.ApplicationPath; - -import org.glassfish.jersey.server.ResourceConfig; - -@ApplicationPath("/gcube/service/") -public class CKanConnector extends ResourceConfig { - - public CKanConnector(){ - packages("org.gcube.data.access.ckanconnector"); - } - -} diff --git a/src/main/java/org/gcube/data/access/ckanconnector/OrganizationManager.java b/src/main/java/org/gcube/data/access/ckanconnector/OrganizationManager.java deleted file mode 100644 index 661cdee..0000000 --- a/src/main/java/org/gcube/data/access/ckanconnector/OrganizationManager.java +++ /dev/null @@ -1,70 +0,0 @@ -package org.gcube.data.access.ckanconnector; - -import javax.servlet.ServletContext; -import javax.ws.rs.Path; -import javax.ws.rs.core.Context; - -import lombok.extern.slf4j.Slf4j; - - -@Path("organization") -@Slf4j -public class OrganizationManager { - - @Context ServletContext context; - -// @PUT -// @Path("/{name}") -// public Response create(@PathParam("name") String organizationName) { -// log.info("create called"); -// try{ -// -//// This is done by smartgears -//// if (AuthorizationProvider.instance.get()==null || AuthorizationProvider.instance.get().getClient() == null ) return Response.status(Status.UNAUTHORIZED).build(); -// -// String ckanKey = context.getInitParameter("ckanKey"); -// int internalPort = Integer.parseInt(context.getInitParameter("internalPort")); -// CkanClient ckanClient = new CkanClient("http://127.0.0.1:"+internalPort, ckanKey); -// -// CkanOrganization org = new CkanOrganization(organizationName.replaceAll(" ", "_").replace(".", "_").toLowerCase()); -// org.setDisplayName(organizationName); -// org.setTitle(organizationName); -// ckanClient.createOrganization(org); -// -// log.info("create organizzation {} called from user {} in scope {}",organizationName, AuthorizationProvider.instance.get().getClient().getId(), ScopeProvider.instance.get()); -// return Response.ok().build(); -// }catch(Exception e){ -// log.error("error trying to create organization "+organizationName,e); -// return Response.serverError().entity(e.getMessage()).build(); -// } -// } -// -// @GET -// @Path("/{name}") -// @Produces(MediaType.APPLICATION_JSON) -// public String get(@PathParam("name") String organizationName) { -// log.info("get called with name {}", organizationName); -// -//// This is done by smartgears -//// if (AuthorizationProvider.instance.get()==null || AuthorizationProvider.instance.get().getClient() == null ) throw new WebApplicationException("user authentication needed",Response.Status.UNAUTHORIZED); -// -// String ckanKey = context.getInitParameter("ckanKey"); -// int internalPort = Integer.parseInt(context.getInitParameter("internalPort")); -// -// try{ -// CkanClient ckanClient = new CkanClient("http://127.0.0.1:"+internalPort, ckanKey); -// CkanOrganization org = ckanClient.getOrganization(organizationName.replaceAll(" ", "_").replace(".", "_").toLowerCase()); -// log.trace("organization {} found",organizationName); -// return new Gson().toJson(org); -// }catch(CkanNotFoundException e){ -// log.error("organization {} doesn't exist",organizationName); -// throw new WebApplicationException("organization "+organizationName+" doesn't exist",Response.Status.NOT_FOUND); -// } catch (Exception e) { -// log.error("error trying to contect ckan",e); -// throw new WebApplicationException("error trying to contect ckan",Response.Status.INTERNAL_SERVER_ERROR); -// } -// -// -// } - -} diff --git a/src/test/java/org/gcube/data/access/ckanconnector/TestCall.java b/src/test/java/org/gcube/data/access/ckanconnector/TestCall.java index b78028c..58c2cdd 100644 --- a/src/test/java/org/gcube/data/access/ckanconnector/TestCall.java +++ b/src/test/java/org/gcube/data/access/ckanconnector/TestCall.java @@ -6,6 +6,7 @@ import javax.net.ssl.HttpsURLConnection; import javax.ws.rs.core.Application; import javax.ws.rs.core.Response; +import org.gcube.ckanconnector.rest.ConnectorManager; import org.glassfish.jersey.server.ResourceConfig; import org.glassfish.jersey.test.JerseyTest; import org.junit.Test;