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){