- using groupHandler method to retrieve VRE
- added logs to ScriptManager error
This commit is contained in:
parent
68eb65e168
commit
f30029c052
|
@ -2,6 +2,7 @@ package org.gcube.data.access.storagehub.handlers;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
import javax.jcr.ItemNotFoundException;
|
||||||
import javax.jcr.Node;
|
import javax.jcr.Node;
|
||||||
import javax.jcr.NodeIterator;
|
import javax.jcr.NodeIterator;
|
||||||
import javax.jcr.PathNotFoundException;
|
import javax.jcr.PathNotFoundException;
|
||||||
|
@ -24,10 +25,10 @@ import org.slf4j.LoggerFactory;
|
||||||
public class GroupHandler {
|
public class GroupHandler {
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(GroupManager.class);
|
private static final Logger log = LoggerFactory.getLogger(GroupManager.class);
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
PathUtil pathUtil;
|
PathUtil pathUtil;
|
||||||
|
|
||||||
public boolean removeUserFromGroup(String groupId, String userId, JackrabbitSession session) throws StorageHubException, RepositoryException {
|
public boolean removeUserFromGroup(String groupId, String userId, JackrabbitSession session) throws StorageHubException, RepositoryException {
|
||||||
org.apache.jackrabbit.api.security.user.UserManager usrManager = session.getUserManager();
|
org.apache.jackrabbit.api.security.user.UserManager usrManager = session.getUserManager();
|
||||||
|
|
||||||
|
@ -39,7 +40,7 @@ public class GroupHandler {
|
||||||
|
|
||||||
//delete folder on user
|
//delete folder on user
|
||||||
String folderName = group.getPrincipal().getName();
|
String folderName = group.getPrincipal().getName();
|
||||||
Node folder = getVreFolderNode(session, folderName);
|
Node folder = getFolderNodeRelatedToGroup(session, folderName);
|
||||||
|
|
||||||
NodeIterator ni = folder.getSharedSet();
|
NodeIterator ni = folder.getSharedSet();
|
||||||
while (ni.hasNext()) {
|
while (ni.hasNext()) {
|
||||||
|
@ -53,8 +54,8 @@ public class GroupHandler {
|
||||||
return group.removeMember(user);
|
return group.removeMember(user);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Node getVreFolderNode(JackrabbitSession session, String name) throws InvalidItemException, RepositoryException {
|
public Node getFolderNodeRelatedToGroup(JackrabbitSession session, String name) throws ItemNotFoundException, RepositoryException {
|
||||||
Node sharedRootNode = session.getNode(Constants.SHARED_FOLDER_PATH);
|
Node sharedRootNode = session.getNode(Constants.SHARED_FOLDER_PATH);
|
||||||
|
|
||||||
Node vreFolder = null;
|
Node vreFolder = null;
|
||||||
|
@ -64,16 +65,18 @@ public class GroupHandler {
|
||||||
log.debug("is an old HL VRE");
|
log.debug("is an old HL VRE");
|
||||||
}
|
}
|
||||||
|
|
||||||
NodeIterator nodes = sharedRootNode.getNodes();
|
if (vreFolder==null) {
|
||||||
while (nodes.hasNext()) {
|
NodeIterator nodes = sharedRootNode.getNodes();
|
||||||
Node node = nodes.nextNode();
|
while (nodes.hasNext()) {
|
||||||
if (node.hasProperty(NodeProperty.TITLE.toString()) && node.getProperty(NodeProperty.TITLE.toString()).getString().equals(name)) {
|
Node node = nodes.nextNode();
|
||||||
vreFolder= node;
|
if (node.hasProperty(NodeProperty.TITLE.toString()) && node.getProperty(NodeProperty.TITLE.toString()).getString().equals(name)) {
|
||||||
break;
|
vreFolder= node;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vreFolder==null) throw new InvalidItemException("vre folder not found");
|
if (vreFolder==null) throw new ItemNotFoundException("vre folder not found for group "+name);
|
||||||
return vreFolder;
|
return vreFolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,9 +12,7 @@ import javax.jcr.ItemNotFoundException;
|
||||||
import javax.jcr.Node;
|
import javax.jcr.Node;
|
||||||
import javax.jcr.NodeIterator;
|
import javax.jcr.NodeIterator;
|
||||||
import javax.jcr.RepositoryException;
|
import javax.jcr.RepositoryException;
|
||||||
import javax.jcr.Session;
|
|
||||||
import javax.jcr.SimpleCredentials;
|
import javax.jcr.SimpleCredentials;
|
||||||
import javax.jcr.query.Query;
|
|
||||||
import javax.servlet.ServletContext;
|
import javax.servlet.ServletContext;
|
||||||
|
|
||||||
import org.apache.jackrabbit.api.JackrabbitSession;
|
import org.apache.jackrabbit.api.JackrabbitSession;
|
||||||
|
@ -30,6 +28,7 @@ import org.gcube.common.storagehub.model.exceptions.StorageHubException;
|
||||||
import org.gcube.common.storagehub.model.items.Item;
|
import org.gcube.common.storagehub.model.items.Item;
|
||||||
import org.gcube.data.access.storagehub.Constants;
|
import org.gcube.data.access.storagehub.Constants;
|
||||||
import org.gcube.data.access.storagehub.PathUtil;
|
import org.gcube.data.access.storagehub.PathUtil;
|
||||||
|
import org.gcube.data.access.storagehub.handlers.GroupHandler;
|
||||||
import org.gcube.data.access.storagehub.handlers.items.Node2ItemConverter;
|
import org.gcube.data.access.storagehub.handlers.items.Node2ItemConverter;
|
||||||
import org.gcube.data.access.storagehub.services.RepositoryInitializer;
|
import org.gcube.data.access.storagehub.services.RepositoryInitializer;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -51,6 +50,9 @@ public class VREManager {
|
||||||
@Inject
|
@Inject
|
||||||
PathUtil pathUtil;
|
PathUtil pathUtil;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
GroupHandler groupHandler;
|
||||||
|
|
||||||
ExecutorService executor = Executors.newFixedThreadPool(5);
|
ExecutorService executor = Executors.newFixedThreadPool(5);
|
||||||
|
|
||||||
SimpleCredentials credentials;
|
SimpleCredentials credentials;
|
||||||
|
@ -98,26 +100,11 @@ public class VREManager {
|
||||||
throw new InvalidCallParameters("error getting VRE with user "+userId+" for group "+groupName);
|
throw new InvalidCallParameters("error getting VRE with user "+userId+" for group "+groupName);
|
||||||
|
|
||||||
|
|
||||||
org.gcube.common.storagehub.model.Path vrePath = pathUtil.getVREsPath(userId, ses);
|
|
||||||
VRE vre = this.getVRE(groupName);
|
VRE vre = this.getVRE(groupName);
|
||||||
if (vre!=null) return vre;
|
if (vre!=null) return vre;
|
||||||
else {
|
else {
|
||||||
|
|
||||||
Node shareNode = ses.getNode(Constants.SHARED_FOLDER_PATH);
|
Node vreFolderNode = groupHandler.getFolderNodeRelatedToGroup(ses, groupName);
|
||||||
|
|
||||||
NodeIterator it = shareNode.getNodes();
|
|
||||||
|
|
||||||
Node vreFolderNode = null;
|
|
||||||
|
|
||||||
while (it.hasNext()) {
|
|
||||||
Node nextNode = it.nextNode();
|
|
||||||
if (nextNode.hasProperty("jcr:title") && nextNode.getProperty("jcr:title").getString().equals(groupName)) {
|
|
||||||
vreFolderNode = nextNode;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (vreFolderNode==null) throw new ItemNotFoundException("vre folder not found for context "+groupName);
|
|
||||||
|
|
||||||
Item vreFolder = node2Item.getItem(vreFolderNode, excludes);
|
Item vreFolder = node2Item.getItem(vreFolderNode, excludes);
|
||||||
return this.putVRE(vreFolder);
|
return this.putVRE(vreFolder);
|
||||||
|
|
|
@ -9,7 +9,6 @@ import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import javax.enterprise.context.RequestScoped;
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.jcr.Node;
|
import javax.jcr.Node;
|
||||||
import javax.jcr.PathNotFoundException;
|
import javax.jcr.PathNotFoundException;
|
||||||
|
@ -40,7 +39,6 @@ import org.apache.jackrabbit.api.security.user.QueryBuilder;
|
||||||
import org.apache.jackrabbit.api.security.user.User;
|
import org.apache.jackrabbit.api.security.user.User;
|
||||||
import org.apache.jackrabbit.commons.jackrabbit.authorization.AccessControlUtils;
|
import org.apache.jackrabbit.commons.jackrabbit.authorization.AccessControlUtils;
|
||||||
import org.gcube.common.authorization.control.annotations.AuthorizationControl;
|
import org.gcube.common.authorization.control.annotations.AuthorizationControl;
|
||||||
import org.gcube.common.authorization.library.AuthorizationEntry;
|
|
||||||
import org.gcube.common.authorization.library.provider.AuthorizationProvider;
|
import org.gcube.common.authorization.library.provider.AuthorizationProvider;
|
||||||
import org.gcube.common.gxrest.response.outbound.GXOutboundErrorResponse;
|
import org.gcube.common.gxrest.response.outbound.GXOutboundErrorResponse;
|
||||||
import org.gcube.common.scope.api.ScopeProvider;
|
import org.gcube.common.scope.api.ScopeProvider;
|
||||||
|
@ -200,11 +198,11 @@ public class GroupManager {
|
||||||
org.apache.jackrabbit.api.security.user.UserManager usrManager = session.getUserManager();
|
org.apache.jackrabbit.api.security.user.UserManager usrManager = session.getUserManager();
|
||||||
|
|
||||||
Authorizable authorizable = usrManager.getAuthorizable(group);
|
Authorizable authorizable = usrManager.getAuthorizable(group);
|
||||||
if (authorizable.isGroup())
|
if (authorizable!=null && authorizable.isGroup())
|
||||||
authorizable.remove();
|
authorizable.remove();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Node node = groupHandler.getVreFolderNode(session, group);
|
Node node = groupHandler.getFolderNodeRelatedToGroup(session, group);
|
||||||
List<Item> workspaceItems = Utils.getItemList(node, Excludes.GET_ONLY_CONTENT, null, true, null);
|
List<Item> workspaceItems = Utils.getItemList(node, Excludes.GET_ONLY_CONTENT, null, true, null);
|
||||||
trashHandler.removeOnlyNodesContent(session, workspaceItems);
|
trashHandler.removeOnlyNodesContent(session, workspaceItems);
|
||||||
node.removeSharedSet();
|
node.removeSharedSet();
|
||||||
|
@ -242,7 +240,7 @@ public class GroupManager {
|
||||||
|
|
||||||
session = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context));
|
session = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context));
|
||||||
|
|
||||||
Node vreFolder = groupHandler.getVreFolderNode(session, groupId);
|
Node vreFolder = groupHandler.getFolderNodeRelatedToGroup(session, groupId);
|
||||||
String currentUser = AuthorizationProvider.instance.get().getClient().getId();
|
String currentUser = AuthorizationProvider.instance.get().getClient().getId();
|
||||||
|
|
||||||
if (!isInfraManager() && !(isVREManager() && isValidGroupForContext(groupId) ))
|
if (!isInfraManager() && !(isVREManager() && isValidGroupForContext(groupId) ))
|
||||||
|
@ -296,7 +294,7 @@ public class GroupManager {
|
||||||
Objects.nonNull(userId);
|
Objects.nonNull(userId);
|
||||||
|
|
||||||
session = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context));
|
session = (JackrabbitSession) repository.getRepository().login(CredentialHandler.getAdminCredentials(context));
|
||||||
Node vreFolder = groupHandler.getVreFolderNode(session, groupId);
|
Node vreFolder = groupHandler.getFolderNodeRelatedToGroup(session, groupId);
|
||||||
String currentUser = AuthorizationProvider.instance.get().getClient().getId();
|
String currentUser = AuthorizationProvider.instance.get().getClient().getId();
|
||||||
|
|
||||||
if (!isInfraManager() && !(isVREManager() && isValidGroupForContext(groupId) ))
|
if (!isInfraManager() && !(isVREManager() && isValidGroupForContext(groupId) ))
|
||||||
|
@ -422,7 +420,7 @@ public class GroupManager {
|
||||||
boolean success = group.addMember(user);
|
boolean success = group.addMember(user);
|
||||||
session.save();
|
session.save();
|
||||||
String folderName = group.getPrincipal().getName();
|
String folderName = group.getPrincipal().getName();
|
||||||
Node folder = groupHandler.getVreFolderNode(session, folderName);
|
Node folder = groupHandler.getFolderNodeRelatedToGroup(session, folderName);
|
||||||
|
|
||||||
String userPath = Paths.append(pathUtil.getVREsPath(user.getPrincipal().getName(), session), folderName).toPath();
|
String userPath = Paths.append(pathUtil.getVREsPath(user.getPrincipal().getName(), session), folderName).toPath();
|
||||||
log.debug("creating folder in user path {} from {}", userPath, folder.getPath() );
|
log.debug("creating folder in user path {} from {}", userPath, folder.getPath() );
|
||||||
|
|
|
@ -168,7 +168,7 @@ public class ScriptManager {
|
||||||
.stream(stream).on(parentId).with(ses).author(login);
|
.stream(stream).on(parentId).with(ses).author(login);
|
||||||
itemHandler.create(builder.build());
|
itemHandler.create(builder.build());
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
log.error("error saving script result {} in the Workspace",name);
|
log.error("error saving script result {} in the Workspace",name, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
} finally {
|
} finally {
|
||||||
|
|
Loading…
Reference in New Issue