diff --git a/.classpath b/.classpath
index 3e9559a..57c104b 100644
--- a/.classpath
+++ b/.classpath
@@ -20,7 +20,6 @@
-
diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/server/CKANPublisherServicesImpl.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/server/CKANPublisherServicesImpl.java
index 46aaa92..2694930 100644
--- a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/server/CKANPublisherServicesImpl.java
+++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/server/CKANPublisherServicesImpl.java
@@ -58,17 +58,25 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
// library util instance
private CKanUtilsImpl instance;
+
+ /**
+ * Since it needs the scope, we need to check if it is null or not
+ * @return
+ */
+ private CKanUtilsImpl getCkanUtilsObj(){
- @Override
- public void init(){
- // discover the library
- try {
- logger.debug("Creating ckan utility lib object");
- instance = new CKanUtilsImpl(ScopeProvider.instance.get());
- logger.debug("Created");
- } catch (Exception e) {
- logger.error("Failed to find ckan information", e);
+ if(instance == null){
+ // retrieve ckan information
+ try{
+ String currentScope = ScopeProvider.instance.get();
+ logger.debug("Scope is " + currentScope);
+ instance = new CKanUtilsImpl(currentScope);
+ }catch(Exception e){
+ logger.error("Unable to retrieve ckan information", e);
+ }
}
+
+ return instance;
}
/**
@@ -112,7 +120,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
token = (String)this.getThreadLocalRequest().getSession().getAttribute(CKAN_TOKEN_KEY);
else{
- token = instance.getApiKeyFromUsername(username);
+ token = getCkanUtilsObj().getApiKeyFromUsername(username);
this.getThreadLocalRequest().getSession().setAttribute(CKAN_TOKEN_KEY, token);
logger.debug("Ckan token has been set for user " + username);
}
@@ -133,10 +141,10 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
logger.debug("Request for user " + username + " organizations list");
List orgsName = new ArrayList();
- if(instance.isSysAdmin(username, getUserCKanTokenFromSession())){
+ if(getCkanUtilsObj().isSysAdmin(username, getUserCKanTokenFromSession())){
logger.debug("The user " + username + " is a sysadmin. He can publish everywhere");
- orgsName = instance.getOrganizationsNames(); // get all organizations' names
+ orgsName = getCkanUtilsObj().getOrganizationsNames(); // get all organizations' names
}else{
@@ -145,7 +153,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
rolesToMatch.add(RolesIntoOrganization.EDITOR);
rolesToMatch.add(RolesIntoOrganization.ADMIN);
- Map> orgsAndRoles = instance.getGroupsAndRolesByUser(username, rolesToMatch);
+ Map> orgsAndRoles = getCkanUtilsObj().getGroupsAndRolesByUser(username, rolesToMatch);
logger.debug("Result is " + orgsAndRoles);
Iterator>> iterator = orgsAndRoles.entrySet().iterator();
@@ -181,7 +189,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
* @return
*/
private String findLicenseIdByLicense(String chosenLicense) {
- return instance.findLicenseIdByLicense(chosenLicense);
+ return getCkanUtilsObj().findLicenseIdByLicense(chosenLicense);
}
/**
@@ -248,7 +256,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
logger.info("Request for CKAN licenses");
try {
- List titlesLicenses = instance.getLicenseTitles();
+ List titlesLicenses = getCkanUtilsObj().getLicenseTitles();
// return the bean
return new LicensesBean(titlesLicenses);
} catch (Exception e) {
@@ -463,7 +471,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
}
- String datasetId = instance.createCKanDataset(getUserCKanTokenFromSession(), withId, title, organizationNameOrId, author,
+ String datasetId = getCkanUtilsObj().createCKanDataset(getUserCKanTokenFromSession(), withId, title, organizationNameOrId, author,
authorMail, maintainer, maintainerMail, version, description, licenseId,
listOfTags, customFields, resources, setPublic);
@@ -473,7 +481,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
toCreate.setId(datasetId);
// retrieve the url
- String datasetUrl = instance.getUrlFromDatasetIdOrName(getUserCKanTokenFromSession(), datasetId);
+ String datasetUrl = getCkanUtilsObj().getUrlFromDatasetIdOrName(getUserCKanTokenFromSession(), datasetId);
toCreate.setSource(datasetUrl);
return toCreate;
@@ -508,7 +516,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
datasetId,
null);
- String resourceId = instance.addResourceToDataset(resourceBean, getUserCKanTokenFromSession());
+ String resourceId = getCkanUtilsObj().addResourceToDataset(resourceBean, getUserCKanTokenFromSession());
if(resourceId != null){
@@ -538,7 +546,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C
try{
- deleted = instance.
+ deleted = getCkanUtilsObj().
deleteResourceFromDataset(resource.getId(), getUserCKanTokenFromSession());
if(deleted){