Optimized the method accessToFolderLink skipping loading of Liferay's users

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-sharing-widget@179560 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2019-05-28 10:56:54 +00:00
parent fffde02804
commit 5f4446e7c0
4 changed files with 16 additions and 29 deletions

View File

@ -0,0 +1,7 @@
<root>
<facet id="jst.jaxrs">
<node name="libprov">
<attribute name="provider-id" value="jaxrs-no-op-library-provider"/>
</node>
</facet>
</root>

View File

@ -4,4 +4,5 @@
<installed facet="jst.web" version="2.3"/>
<installed facet="wst.jsdt.web" version="1.0"/>
<installed facet="java" version="1.7"/>
<installed facet="jst.jaxrs" version="2.0"/>
</faceted-project>

View File

@ -14,7 +14,7 @@
<groupId>org.gcube.portlets.widgets</groupId>
<artifactId>workspace-sharing-widget</artifactId>
<packaging>jar</packaging>
<version>1.9.0-SNAPSHOT</version>
<version>1.9.1-SNAPSHOT</version>
<name>gCube Workspace Sharing Widget</name>
<description>
gCube Workspace Sharing Widget allows users to share gCube Workspace items

View File

@ -1307,48 +1307,27 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
OpenResolver openResolverForItem = shc.open(itemId);
FolderContainer folderContainer = openResolverForItem.asFolder();
FolderItem folderItem = folderContainer.get();
InfoContactModel owner = null;
if (folderItem != null) {
logger.debug("Owner: " + folderItem.getOwner());
PortalContextInfo info = WsUtil.getPortalContext(this.getThreadLocalRequest());
if (folderItem.getOwner() != null && !folderItem.getOwner().isEmpty()) {
GWTWorkspaceSharingBuilder builder = new GWTWorkspaceSharingBuilder();
List<InfoContactModel> listContactsModel = builder.buildGXTListContactsModelFromUserModel(info);
boolean ownerFound = false;
for (InfoContactModel icm : listContactsModel) {
if (icm.getLogin().compareTo(folderItem.getOwner()) == 0) {
logger.debug("Owner Retrieved: " + icm);
owner = icm;
ownerFound = true;
break;
}
}
if (!ownerFound) {
logger.debug("Owner not found from user model!");
owner = new InfoContactModel(folderItem.getOwner(), folderItem.getOwner(),
folderItem.getOwner(), false);
}
} else {
logger.debug("Owner not found from item");
owner = null;
}
String username = info.getUsername();
if (folderItem.isPublicItem()) {
logger.info("The folder is already public. Access granted to " + username);
return new AllowAccess(itemId, true, "The folder is already public. Access granted to " + username,
null);
}
logger.info("The owner of: " + folderItem.getName() + " is: " + owner);
logger.debug("Owner is: " + folderItem.getOwner());
logger.info("The current context user: " + username);
if (owner != null && owner.getLogin().compareToIgnoreCase(username) == 0) {
if (folderItem.getOwner() != null && folderItem.getOwner().compareToIgnoreCase(username) == 0) {
logger.info("Access to Folder Link " + folderItem.getName() + " granted, " + username
+ " is the owner of: " + itemId);
return new AllowAccess(itemId, true,
info.getUserFullName() + " is the owner of: " + folderItem.getName(), null);
}
try {
List<InfoContactModel> admins = null;