diff --git a/source/java/org/alfresco/rest/api/impl/NodesImpl.java b/source/java/org/alfresco/rest/api/impl/NodesImpl.java index 7b81319f7a..82bf4ff435 100644 --- a/source/java/org/alfresco/rest/api/impl/NodesImpl.java +++ b/source/java/org/alfresco/rest/api/impl/NodesImpl.java @@ -57,6 +57,7 @@ import org.alfresco.repo.tenant.TenantUtil; import org.alfresco.repo.thumbnail.ThumbnailDefinition; import org.alfresco.repo.thumbnail.ThumbnailHelper; import org.alfresco.repo.thumbnail.ThumbnailRegistry; +import org.alfresco.repo.transaction.RetryingTransactionHelper; import org.alfresco.repo.version.VersionModel; import org.alfresco.rest.antlr.WhereClauseParser; import org.alfresco.rest.api.Nodes; @@ -183,6 +184,7 @@ public class NodesImpl implements Nodes private ThumbnailService thumbnailService; private SiteService siteService; private ActivityPoster poster; + private RetryingTransactionHelper retryingTransactionHelper; private enum Activity_Type { @@ -226,6 +228,7 @@ public class NodesImpl implements Nodes this.authorityService = sr.getAuthorityService(); this.thumbnailService = sr.getThumbnailService(); this.siteService = sr.getSiteService(); + this.retryingTransactionHelper = sr.getRetryingTransactionHelper(); if (defaultIgnoreTypesAndAspects != null) { @@ -1913,6 +1916,19 @@ public class NodesImpl implements Nodes } String attachFileName = (attach ? name : null); + final ActivityInfo activityInfo = getActivityInfo(getParentNodeRef(nodeRef), nodeRef); + + //Activity posting needs a transaction + retryingTransactionHelper.doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback() + { + @Override + public Void execute() throws Throwable + { + postActivity(Activity_Type.DOWNLOADED, activityInfo); + return null; + } + }, false, true); + return new NodeBinaryResource(nodeRef, ContentModel.PROP_CONTENT, ci, attachFileName); } diff --git a/source/test-java/org/alfresco/rest/api/tests/ActivitiesPostingTest.java b/source/test-java/org/alfresco/rest/api/tests/ActivitiesPostingTest.java index 9be7ca06a2..c65bf572f9 100644 --- a/source/test-java/org/alfresco/rest/api/tests/ActivitiesPostingTest.java +++ b/source/test-java/org/alfresco/rest/api/tests/ActivitiesPostingTest.java @@ -102,11 +102,16 @@ public class ActivitiesPostingTest extends AbstractBaseApiTest dUpdate.setName("d1b.txt"); HttpResponse response = put(URL_NODES, u1.getId(), documentResp.getId(), toJsonAsStringNonNull(dUpdate), null, 200); + //Now download it + response = getSingle(NodesEntityResource.class, u1.getId(), documentResp.getId()+"/content", null, 200); + String textContent = response.getResponse(); + assertNotNull(textContent); + delete(URL_NODES, u1.getId(), documentResp.getId(), 204); delete(URL_NODES, u1.getId(), createdFolder.getId(), 204); List activities = getMyActivites(); - assertEquals(activities.size(),5); + assertEquals(activities.size(),6); Activity act = matchActivity(activities, ActivityType.FOLDER_ADDED, u1.getId(), tSite.getSiteId(), docLibNodeRef.getId(), folder1); assertNotNull(act); @@ -121,6 +126,9 @@ public class ActivitiesPostingTest extends AbstractBaseApiTest act = matchActivity(activities, ActivityType.FILE_DELETED, u1.getId(), tSite.getSiteId(), createdFolder.getId(), dUpdate.getName()); assertNotNull(act); + + act = matchActivity(activities, ActivityPoster.DOWNLOADED, u1.getId(), tSite.getSiteId(), createdFolder.getId(), dUpdate.getName()); + assertNotNull(act); } @Test