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;