Merged HEAD (5.2) to 5.2.N (5.2.1)

126607 jkaabimofrad: Merged FILE-FOLDER-API (5.2.0) to HEAD (5.2)
      125020 gjames: RA-884: Posting download activities and formatting


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@126952 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Ancuta Morarasu
2016-05-11 12:20:06 +00:00
parent 2e7b23251d
commit be9428619b
5 changed files with 72 additions and 28 deletions

View File

@@ -159,9 +159,10 @@ public interface Nodes
* *
* @param fileNodeId * @param fileNodeId
* @param parameters * @param parameters
* @param recordActivity true, if an activity post is required.
* @return * @return
*/ */
BinaryResource getContent(String fileNodeId, Parameters parameters); BinaryResource getContent(String fileNodeId, Parameters parameters, boolean recordActivity);
/** /**
* Uploads file content (updates existing node with new content). * Uploads file content (updates existing node with new content).

View File

@@ -25,29 +25,11 @@
*/ */
package org.alfresco.rest.api.impl; package org.alfresco.rest.api.impl;
import java.io.InputStream;
import java.io.Serializable;
import java.math.BigInteger;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.concurrent.ConcurrentHashMap;
import org.alfresco.model.ApplicationModel; import org.alfresco.model.ApplicationModel;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.model.QuickShareModel; import org.alfresco.model.QuickShareModel;
import org.alfresco.query.PagingRequest; import org.alfresco.query.PagingRequest;
import org.alfresco.query.PagingResults; import org.alfresco.query.PagingResults;
import org.alfresco.repo.Client;
import org.alfresco.repo.action.executer.ContentMetadataExtracter; import org.alfresco.repo.action.executer.ContentMetadataExtracter;
import org.alfresco.repo.activities.ActivityType; import org.alfresco.repo.activities.ActivityType;
import org.alfresco.repo.content.ContentLimitViolationException; import org.alfresco.repo.content.ContentLimitViolationException;
@@ -58,7 +40,6 @@ import org.alfresco.repo.node.getchildren.GetChildrenCannedQuery;
import org.alfresco.repo.policy.BehaviourFilter; import org.alfresco.repo.policy.BehaviourFilter;
import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
import org.alfresco.repo.security.authentication.HashPasswordTransactionListener;
import org.alfresco.repo.security.permissions.AccessDeniedException; import org.alfresco.repo.security.permissions.AccessDeniedException;
import org.alfresco.repo.site.SiteModel; import org.alfresco.repo.site.SiteModel;
import org.alfresco.repo.tenant.TenantUtil; import org.alfresco.repo.tenant.TenantUtil;
@@ -153,6 +134,23 @@ import org.springframework.extensions.webscripts.servlet.FormData;
import org.springframework.http.InvalidMediaTypeException; import org.springframework.http.InvalidMediaTypeException;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import java.io.InputStream;
import java.io.Serializable;
import java.math.BigInteger;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.concurrent.ConcurrentHashMap;
/** /**
* Centralises access to file/folder/node services and maps between representations. * Centralises access to file/folder/node services and maps between representations.
* *
@@ -1950,7 +1948,7 @@ public class NodesImpl implements Nodes
} }
@Override @Override
public BinaryResource getContent(String fileNodeId, Parameters parameters) public BinaryResource getContent(String fileNodeId, Parameters parameters, boolean recordActivity)
{ {
final NodeRef nodeRef = validateNode(fileNodeId); final NodeRef nodeRef = validateNode(fileNodeId);
@@ -1991,8 +1989,11 @@ public class NodesImpl implements Nodes
} }
String attachFileName = (attach ? name : null); String attachFileName = (attach ? name : null);
if (recordActivity)
{
final ActivityInfo activityInfo = getActivityInfo(getParentNodeRef(nodeRef), nodeRef); final ActivityInfo activityInfo = getActivityInfo(getParentNodeRef(nodeRef), nodeRef);
postActivity(Activity_Type.DOWNLOADED, activityInfo, true); postActivity(Activity_Type.DOWNLOADED, activityInfo, true);
}
return new NodeBinaryResource(nodeRef, ContentModel.PROP_CONTENT, ci, attachFileName); return new NodeBinaryResource(nodeRef, ContentModel.PROP_CONTENT, ci, attachFileName);
} }

View File

@@ -235,7 +235,7 @@ public class QuickShareLinksImpl implements QuickShareLinks, InitializingBean
} }
else else
{ {
return nodes.getContent(nodeId, parameters); return nodes.getContent(nodeId, parameters, false);
} }
} }
}, networkTenantDomain); }, networkTenantDomain);

View File

@@ -91,7 +91,7 @@ public class NodesEntityResource implements
@BinaryProperties({"content"}) @BinaryProperties({"content"})
public BinaryResource readProperty(String fileNodeId, Parameters parameters) throws EntityNotFoundException public BinaryResource readProperty(String fileNodeId, Parameters parameters) throws EntityNotFoundException
{ {
return nodes.getContent(fileNodeId, parameters); return nodes.getContent(fileNodeId, parameters, true);
} }
@Override @Override

View File

@@ -1,3 +1,21 @@
/*
* Copyright (C) 2005-2016 Alfresco Software Limited.
*
* This file is part of Alfresco
*
* Alfresco is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Alfresco is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
package org.alfresco.rest.api.tests; package org.alfresco.rest.api.tests;
import static org.alfresco.rest.api.tests.util.RestApiUtil.toJsonAsStringNonNull; import static org.alfresco.rest.api.tests.util.RestApiUtil.toJsonAsStringNonNull;
@@ -41,6 +59,9 @@ import java.util.Map;
public class ActivitiesPostingTest extends AbstractSingleNetworkSiteTest public class ActivitiesPostingTest extends AbstractSingleNetworkSiteTest
{ {
/**
* Tests the main activites, added, updated, deleted, downloaded
*/
@Test @Test
public void testCreateUpdate() throws Exception public void testCreateUpdate() throws Exception
{ {
@@ -54,10 +75,10 @@ public class ActivitiesPostingTest extends AbstractSingleNetworkSiteTest
//Update the file //Update the file
Document dUpdate = new Document(); Document dUpdate = new Document();
dUpdate.setName("d1b.txt"); dUpdate.setName("d1b.txt");
HttpResponse response = put(URL_NODES, u1.getId(), documentResp.getId(), toJsonAsStringNonNull(dUpdate), null, 200); put(URL_NODES, u1.getId(), documentResp.getId(), toJsonAsStringNonNull(dUpdate), null, 200);
//Now download it //Now download it
response = getSingle(NodesEntityResource.class, u1.getId(), documentResp.getId()+"/content", null, 200); HttpResponse response = getSingle(NodesEntityResource.class, u1.getId(), documentResp.getId()+"/content", null, 200);
String textContent = response.getResponse(); String textContent = response.getResponse();
assertNotNull(textContent); assertNotNull(textContent);
@@ -85,6 +106,9 @@ public class ActivitiesPostingTest extends AbstractSingleNetworkSiteTest
assertNotNull(act); assertNotNull(act);
} }
/**
* Tests non-file activites. So no events.
*/
@Test @Test
public void testNonFileActivities() throws Exception public void testNonFileActivities() throws Exception
{ {
@@ -103,6 +127,9 @@ public class ActivitiesPostingTest extends AbstractSingleNetworkSiteTest
assertEquals("No activites should be created for non-file activities", activities, activitiesAgain); assertEquals("No activites should be created for non-file activities", activities, activitiesAgain);
} }
/**
* Tests non-site file activites. So no events.
*/
@Test @Test
public void testNonSite() throws Exception public void testNonSite() throws Exception
{ {
@@ -119,12 +146,17 @@ public class ActivitiesPostingTest extends AbstractSingleNetworkSiteTest
//Update the file //Update the file
Document dUpdate = new Document(); Document dUpdate = new Document();
dUpdate.setName("nonsite_d2.txt"); dUpdate.setName("nonsite_d2.txt");
HttpResponse response = put(URL_NODES, u1.getId(), documentResp.getId(), toJsonAsStringNonNull(dUpdate), null, 200); put(URL_NODES, u1.getId(), documentResp.getId(), toJsonAsStringNonNull(dUpdate), null, 200);
List<Activity> activitiesAgain = getMyActivites(); List<Activity> activitiesAgain = getMyActivites();
assertEquals("No activites should be created for non-site nodes", activities, activitiesAgain); assertEquals("No activites should be created for non-site nodes", activities, activitiesAgain);
} }
/**
* Generate the feed an get the activities for user1
* @return
* @throws Exception
*/
private List<Activity> getMyActivites() throws Exception private List<Activity> getMyActivites() throws Exception
{ {
repoService.generateFeed(); repoService.generateFeed();
@@ -136,6 +168,16 @@ public class ActivitiesPostingTest extends AbstractSingleNetworkSiteTest
} }
/**
* Match an exact activity by a combination of the parameters
* @param list
* @param type
* @param user
* @param siteId
* @param parentId
* @param title
* @return
*/
private Activity matchActivity(List<Activity> list, String type, String user, String siteId, String parentId, String title) private Activity matchActivity(List<Activity> list, String type, String user, String siteId, String parentId, String title)
{ {
for (Activity act:list) for (Activity act:list)