diff --git a/config/alfresco/favourites-service-context.xml b/config/alfresco/favourites-service-context.xml index e4a16b1454..b5436cfa7c 100644 --- a/config/alfresco/favourites-service-context.xml +++ b/config/alfresco/favourites-service-context.xml @@ -45,5 +45,6 @@ + \ No newline at end of file diff --git a/source/java/org/alfresco/repo/favourites/FavouritesServiceImpl.java b/source/java/org/alfresco/repo/favourites/FavouritesServiceImpl.java index fafeee56ef..1234ff50fe 100644 --- a/source/java/org/alfresco/repo/favourites/FavouritesServiceImpl.java +++ b/source/java/org/alfresco/repo/favourites/FavouritesServiceImpl.java @@ -15,10 +15,16 @@ import java.util.StringTokenizer; import java.util.TreeMap; import org.alfresco.error.AlfrescoRuntimeException; +import org.alfresco.events.types.ActivityEvent; +import org.alfresco.events.types.Event; import org.alfresco.model.ContentModel; import org.alfresco.query.PageDetails; import org.alfresco.query.PagingRequest; import org.alfresco.query.PagingResults; +import org.alfresco.repo.Client; +import org.alfresco.repo.Client.ClientType; +import org.alfresco.repo.events.EventPreparator; +import org.alfresco.repo.events.EventPublisher; import org.alfresco.repo.favourites.PersonFavourite.PersonFavouriteKey; import org.alfresco.repo.policy.ClassPolicy; import org.alfresco.repo.policy.ClassPolicyDelegate; @@ -65,6 +71,7 @@ public class FavouritesServiceImpl implements FavouritesService, InitializingBea private PolicyComponent policyComponent; private PermissionService permissionService; private PersonService personService; + private EventPublisher eventPublisher; /** Authentication Service */ private AuthenticationContext authenticationContext; @@ -645,12 +652,25 @@ public class FavouritesServiceImpl implements FavouritesService, InitializingBea if(personFavourite == null) { Date createdAt = new Date(); - String name = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME); + final String name = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME); personFavourite = new PersonFavourite(userName, nodeRef, type, name, createdAt); personFavourites.put(personFavourite.getKey(), personFavourite); updateFavouriteNodes(userName, type, personFavourites); QName nodeClass = nodeService.getType(nodeRef); + final String finalRef = nodeRef.getId(); + final QName nodeType = nodeClass; + + eventPublisher.publishEvent(new EventPreparator(){ + @Override + public Event prepareEvent(String user, String networkId, String transactionId) + { + return new ActivityEvent("favorite.added", transactionId, networkId, user, finalRef, + null, nodeType==null?null:nodeType.toString(), Client.asType(ClientType.script), null, + name, null, 0l, null); + } + }); + OnAddFavouritePolicy policy = onAddFavouriteDelegate.get(nodeRef, nodeClass); policy.onAddFavourite(userName, nodeRef); } @@ -709,6 +729,19 @@ public class FavouritesServiceImpl implements FavouritesService, InitializingBea updateFavouriteNodes(userName, type, personFavourites); QName nodeClass = nodeService.getType(nodeRef); + final String finalRef = nodeRef.getId(); + final QName nodeType = nodeClass; + + eventPublisher.publishEvent(new EventPreparator(){ + @Override + public Event prepareEvent(String user, String networkId, String transactionId) + { + return new ActivityEvent("favorite.removed", transactionId, networkId, user, finalRef, + null, nodeType==null?null:nodeType.toString(), Client.asType(ClientType.script), null, + null, null, 0l, null); + } + }); + OnRemoveFavouritePolicy policy = onRemoveFavouriteDelegate.get(nodeRef, nodeClass); policy.onRemoveFavourite(userName, nodeRef); @@ -921,4 +954,9 @@ public class FavouritesServiceImpl implements FavouritesService, InitializingBea Type type = getType(nodeRef); return getPersonFavourite(userName, type, nodeRef); } + + public void setEventPublisher(EventPublisher eventPublisher) + { + this.eventPublisher = eventPublisher; + } }