diff --git a/.classpath b/.classpath index 072c06b..165f1c5 100644 --- a/.classpath +++ b/.classpath @@ -25,9 +25,8 @@ - + - diff --git a/src/main/java/org/gcube/portal/social/networking/ws/methods/v2/Notifications.java b/src/main/java/org/gcube/portal/social/networking/ws/methods/v2/Notifications.java index 33f43e7..a4d785f 100644 --- a/src/main/java/org/gcube/portal/social/networking/ws/methods/v2/Notifications.java +++ b/src/main/java/org/gcube/portal/social/networking/ws/methods/v2/Notifications.java @@ -33,6 +33,7 @@ import org.gcube.applicationsupportlayer.social.shared.SocialNetworkingSite; import org.gcube.applicationsupportlayer.social.shared.SocialNetworkingUser; import org.gcube.common.authorization.control.annotations.AuthorizationControl; import org.gcube.common.authorization.library.provider.AuthorizationProvider; +import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.authorization.library.utils.Caller; import org.gcube.common.scope.api.ScopeProvider; import org.gcube.common.scope.impl.ScopeBean; @@ -56,6 +57,7 @@ import org.gcube.portal.social.networking.ws.utils.CassandraConnection; import org.gcube.portal.social.networking.ws.utils.DistributedCacheClient; import org.gcube.portal.social.networking.ws.utils.ErrorMessages; import org.gcube.portal.social.networking.ws.utils.SocialUtils; +import org.gcube.portal.social.networking.ws.utils.TokensUtils; import org.gcube.social_networking.socialnetworking.model.beans.JobNotificationBean; import org.gcube.social_networking.socialnetworking.model.beans.catalogue.CatalogueEvent; @@ -74,6 +76,7 @@ import org.gcube.vomanagement.usermanagement.GroupManager; import org.gcube.vomanagement.usermanagement.UserManager; import org.gcube.vomanagement.usermanagement.exception.GroupRetrievalFault; import org.gcube.vomanagement.usermanagement.exception.UserManagementSystemException; +import org.gcube.vomanagement.usermanagement.exception.UserRetrievalFault; import org.gcube.vomanagement.usermanagement.model.GCubeUser; import org.mortbay.log.Log; import org.slf4j.LoggerFactory; @@ -345,11 +348,29 @@ public class Notifications { public Response catalogue( @NotNull(message="input is missing") @Valid - CatalogueEvent event) throws ValidationException{ + CatalogueEvent event) throws ValidationException, UserManagementSystemException, UserRetrievalFault{ Caller caller = AuthorizationProvider.instance.get(); + UserManager um = UserManagerWSBuilder.getInstance().getUserManager(); + GCubeUser senderUser = null; + SocialNetworkingUser user = null; + // check if the token belongs to an application token. In this case use J.A.R.V.I.S (the username used to communicate with Liferay) + String username = null; + String fullName = ""; + if(!TokensUtils.isUserToken(caller)){ + GCubeUser jarvis = UserManagerWSBuilder.getInstance().getUserManager().getUserByEmail(LiferayJSONWsCredentials.getSingleton().getUser()); + SecurityTokenProvider.instance.set(LiferayJSONWsCredentials.getSingleton().getNotifierUserToken()); + username = jarvis.getUsername(); + fullName = "Catalogue" + "("+caller.getClient().getId()+")"; // the actual name of the IAM Client + senderUser = um.getUserByUsername(username); + user = new SocialNetworkingUser(senderUser.getUsername(), senderUser.getEmail(), fullName, senderUser.getUserAvatarURL()); + }else{ + username = caller.getClient().getId(); + senderUser = um.getUserByUsername(username); + user = new SocialNetworkingUser(senderUser.getUsername(), senderUser.getEmail(), senderUser.getFullname(), senderUser.getUserAvatarURL()); + } + String context = ScopeProvider.instance.get(); - String username = caller.getClient().getId(); logger.debug("catalogue notifications from user = " + username); ResponseBean responseBean = new ResponseBean(); @@ -358,9 +379,8 @@ public class Notifications { try { logger.debug("catalogue notifications type is " + event.getType()); SocialNetworkingSite site = SocialNetworkingSiteFinder.getSocialNetworkingSiteFromScope(context); - UserManager um = UserManagerWSBuilder.getInstance().getUserManager(); - GCubeUser senderUser = um.getUserByUsername(username); - SocialNetworkingUser user = new SocialNetworkingUser(senderUser.getUsername(), senderUser.getEmail(), senderUser.getFullname(), senderUser.getUserAvatarURL()); + + NotificationsManager nm = new ApplicationNotificationsManager(UserManagerWSBuilder.getInstance().getUserManager(), site, context, user); String[] idsToNotify = event.getIdsToNotify();