From b9d62994f9a95048273c9639e265119585d90822 Mon Sep 17 00:00:00 2001 From: lucio Date: Wed, 29 Jan 2020 17:14:44 +0100 Subject: [PATCH] bug on group creation fixed --- .../storagehub/services/GroupManager.java | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/gcube/data/access/storagehub/services/GroupManager.java b/src/main/java/org/gcube/data/access/storagehub/services/GroupManager.java index a4144f3..aca19aa 100644 --- a/src/main/java/org/gcube/data/access/storagehub/services/GroupManager.java +++ b/src/main/java/org/gcube/data/access/storagehub/services/GroupManager.java @@ -146,7 +146,7 @@ public class GroupManager { boolean success = this.internalAddUserToGroup(session, createdGroup, user); if (!success) log.warn("the user have not been added to the group"); - + else log.debug("the user have been added to the group"); session.save(); }catch(StorageHubException se) { log.error("error creating group {}", group, se); @@ -175,15 +175,18 @@ public class GroupManager { session = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context)); org.apache.jackrabbit.api.security.user.UserManager usrManager = session.getUserManager(); - - try { - getVreFolderNode(session, group).removeSharedSet(); - }catch (Exception e) { - log.warn("vreFolder {} not found, removing only the group", group); - } + Authorizable authorizable = usrManager.getAuthorizable(group); if (authorizable.isGroup()) authorizable.remove(); + + try { + Node node = getVreFolderNode(session, group); + node.removeSharedSet(); + }catch (Exception e) { + log.warn("vreFolder {} not found, removing only the group", group); + } + session.save(); }catch(RepositoryException re ){ log.error("jcr error creating item", re); @@ -377,13 +380,21 @@ public class GroupManager { private boolean internalAddUserToGroup(JackrabbitSession session, Group group, User user) throws RepositoryException, StorageHubException { boolean success = group.addMember(user); - + session.save(); String folderName = group.getPrincipal().getName(); Node folder = getVreFolderNode(session, folderName); String userPath = String.format("%s%s/%s",Utils.getWorkspacePath(user.getPrincipal().getName()).toPath(),Constants.VRE_FOLDER_PARENT_NAME, folderName); - log.debug("creating folder in user path {}", userPath ); + log.debug("creating folder in user path {} from {}", userPath, folder.getPath() ); session.getWorkspace().clone(session.getWorkspace().getName(), folder.getPath(),userPath , false); + + try { + session.getNode(userPath); + log.debug("the new folder exists ({}) ", userPath ); + }catch (PathNotFoundException e) { + log.debug("the new folder doesn't exists ({}) ", userPath ); + } + return success; }