From 9e1c853f33c3ef939fb964edb3fe52a98a8ebb42 Mon Sep 17 00:00:00 2001 From: Costantino Perciante Date: Thu, 17 Nov 2016 13:29:58 +0000 Subject: [PATCH] added check to retrieve groups already stored by the portlet git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/widgets/ckan-metadata-publisher-widget@134318 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../server/CKANPublisherServicesImpl.java | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) 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 3085555..0ba88d6 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 @@ -579,22 +579,31 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C // get http session HttpSession httpSession = getThreadLocalRequest().getSession(); String scope = (String)httpSession.getAttribute(SessionCatalogueAttributes.SCOPE_CLIENT_PORTLET_URL); - DataCatalogue catalogue = getCatalogue(scope); - List ckanGroups = catalogue.getGroups(); - - String apiKey = catalogue.getApiKeyFromUsername(username); - // Members/Admin of the group - for (CkanGroup ckanGroup : ckanGroups) { - String role = catalogue.getRoleOfUserInGroup(username, ckanGroup.getName(), apiKey); + // check if they are in session + String keyPerScopeGroups = UtilMethods.concatenateSessionKeyScope(SessionCatalogueAttributes.CKAN_GROUPS_MEMBER, scope); - if(role == null) - continue; + if(httpSession.getAttribute(keyPerScopeGroups) != null){ + toReturn = (List)httpSession.getAttribute(keyPerScopeGroups); + logger.info("Found user's groups in session " + toReturn); + }else{ - toReturn.add(new GroupBean(ckanGroup.getTitle(), ckanGroup.getName())); + DataCatalogue catalogue = getCatalogue(scope); + List ckanGroups = catalogue.getGroups(); + + String apiKey = catalogue.getApiKeyFromUsername(username); + + // Members/Admin of the group + for (CkanGroup ckanGroup : ckanGroups) { + String role = catalogue.getRoleOfUserInGroup(username, ckanGroup.getName(), apiKey); + if(role == null) + continue; + + toReturn.add(new GroupBean(ckanGroup.getTitle(), ckanGroup.getName())); + } + + httpSession.setAttribute(keyPerScopeGroups, toReturn); } - logger.debug("List of groups to return is " + toReturn); - }else{ logger.warn("Dev mode detected"); toReturn = Arrays.asList(new GroupBean("Group title", "aaa"));