mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Merged BRANCHES/DEV/CLOUD1-BUG-FIX to HEAD:
42847: CLOUD-794: "Activities should be posted for CMIS (to enable both Public API + Mobile clients)" git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@42869 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
*/
|
||||
package org.alfresco.opencmis;
|
||||
|
||||
import org.alfresco.opencmis.ActivityPosterImpl.ActivityInfo;
|
||||
import org.alfresco.service.cmr.model.FileInfo;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
|
||||
@@ -32,12 +33,7 @@ public interface ActivityPoster
|
||||
|
||||
void postFileUpdated(NodeRef nodeRef);
|
||||
|
||||
void postFileDeleted(
|
||||
String parentPath,
|
||||
NodeRef parentNodeRef,
|
||||
NodeRef nodeRef,
|
||||
String siteId,
|
||||
String fileName);
|
||||
void postFileDeleted(ActivityInfo activityInfo);
|
||||
|
||||
String getParentPath(NodeRef nodeRef);
|
||||
ActivityInfo getActivityInfo(NodeRef nodeRef);
|
||||
}
|
||||
|
@@ -106,11 +106,6 @@ public class ActivityPosterImpl implements ActivityPoster, InitializingBean
|
||||
{
|
||||
this.activitiesEnabled = activitiesEnabled;
|
||||
}
|
||||
|
||||
private boolean isHidden(NodeRef nodeRef)
|
||||
{
|
||||
return nodeService.hasAspect(nodeRef, ContentModel.ASPECT_HIDDEN);
|
||||
}
|
||||
|
||||
private final String getPathFromNode(NodeRef rootNodeRef, NodeRef nodeRef) throws FileNotFoundException
|
||||
{
|
||||
@@ -177,9 +172,12 @@ public class ActivityPosterImpl implements ActivityPoster, InitializingBean
|
||||
NodeRef nodeRef = fileInfo.getNodeRef();
|
||||
SiteInfo siteInfo = siteService.getSite(nodeRef);
|
||||
String siteId = (siteInfo != null ? siteInfo.getShortName() : null);
|
||||
NodeRef parentNodeRef = nodeService.getPrimaryParent(nodeRef).getParentRef();
|
||||
|
||||
postFileActivity(ActivityType.FILE_ADDED, null, parentNodeRef, nodeRef, siteId, fileInfo.getName());
|
||||
if(siteId != null && !siteId.equals(""))
|
||||
{
|
||||
// post only for nodes within sites
|
||||
NodeRef parentNodeRef = nodeService.getPrimaryParent(nodeRef).getParentRef();
|
||||
postFileActivity(ActivityType.FILE_ADDED, null, parentNodeRef, nodeRef, siteId, fileInfo.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -193,9 +191,12 @@ public class ActivityPosterImpl implements ActivityPoster, InitializingBean
|
||||
{
|
||||
SiteInfo siteInfo = siteService.getSite(nodeRef);
|
||||
String siteId = (siteInfo != null ? siteInfo.getShortName() : null);
|
||||
String fileName = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
|
||||
|
||||
postFileActivity(ActivityType.FILE_UPDATED, null, null, nodeRef, siteId, fileName);
|
||||
if(siteId != null && !siteId.equals(""))
|
||||
{
|
||||
// post only for nodes within sites
|
||||
String fileName = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
|
||||
postFileActivity(ActivityType.FILE_UPDATED, null, null, nodeRef, siteId, fileName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -203,39 +204,44 @@ public class ActivityPosterImpl implements ActivityPoster, InitializingBean
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public void postFileDeleted(
|
||||
String parentPath,
|
||||
NodeRef parentNodeRef,
|
||||
NodeRef nodeRef,
|
||||
String siteId,
|
||||
String fileName)
|
||||
public void postFileDeleted(ActivityInfo activityInfo)
|
||||
{
|
||||
if(activitiesEnabled)
|
||||
{
|
||||
postFileActivity(ActivityType.FILE_DELETED, parentPath, parentNodeRef, nodeRef, siteId, fileName);
|
||||
if(activitiesEnabled && activityInfo.getSiteId() != null)
|
||||
{
|
||||
// post only for nodes within sites
|
||||
postFileActivity(ActivityType.FILE_DELETED, activityInfo.getParentPath(), activityInfo.getParentNodeRef(), activityInfo.getNodeRef(),
|
||||
activityInfo.getSiteId(), activityInfo.getFileName());
|
||||
}
|
||||
}
|
||||
|
||||
public String getParentPath(NodeRef nodeRef)
|
||||
public ActivityInfo getActivityInfo(NodeRef nodeRef)
|
||||
{
|
||||
SiteInfo siteInfo = siteService.getSite(nodeRef);
|
||||
String siteId = (siteInfo != null ? siteInfo.getShortName() : null);
|
||||
NodeRef parentNodeRef = nodeService.getPrimaryParent(nodeRef).getParentRef();
|
||||
NodeRef documentLibrary = siteService.getContainer(siteId, SiteService.DOCUMENT_LIBRARY);
|
||||
String parentPath = "/";
|
||||
try
|
||||
{
|
||||
parentPath = getPathFromNode(documentLibrary, parentNodeRef);
|
||||
}
|
||||
catch (FileNotFoundException error)
|
||||
{
|
||||
if (logger.isDebugEnabled())
|
||||
String fileName = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
|
||||
SiteInfo siteInfo = siteService.getSite(nodeRef);
|
||||
String siteId = (siteInfo != null ? siteInfo.getShortName() : null);
|
||||
if(siteId != null && !siteId.equals(""))
|
||||
{
|
||||
NodeRef documentLibrary = siteService.getContainer(siteId, SiteService.DOCUMENT_LIBRARY);
|
||||
String parentPath = "/";
|
||||
try
|
||||
{
|
||||
logger.debug("No " + SiteService.DOCUMENT_LIBRARY + " container found.");
|
||||
}
|
||||
}
|
||||
parentPath = getPathFromNode(documentLibrary, parentNodeRef);
|
||||
}
|
||||
catch (FileNotFoundException error)
|
||||
{
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug("No " + SiteService.DOCUMENT_LIBRARY + " container found.");
|
||||
}
|
||||
}
|
||||
|
||||
return parentPath;
|
||||
return new ActivityInfo(nodeRef, parentPath, parentNodeRef, siteId, fileName);
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private void postFileActivity(
|
||||
@@ -308,4 +314,49 @@ public class ActivityPosterImpl implements ActivityPoster, InitializingBean
|
||||
|
||||
return json;
|
||||
}
|
||||
|
||||
public static class ActivityInfo
|
||||
{
|
||||
private NodeRef nodeRef;
|
||||
private String parentPath;
|
||||
private NodeRef parentNodeRef;
|
||||
private String siteId;
|
||||
private String fileName;
|
||||
|
||||
public ActivityInfo(NodeRef nodeRef, String parentPath, NodeRef parentNodeRef,
|
||||
String siteId, String fileName)
|
||||
{
|
||||
super();
|
||||
this.nodeRef = nodeRef;
|
||||
this.parentPath = parentPath;
|
||||
this.parentNodeRef = parentNodeRef;
|
||||
this.siteId = siteId;
|
||||
this.fileName = fileName;
|
||||
}
|
||||
|
||||
public NodeRef getNodeRef()
|
||||
{
|
||||
return nodeRef;
|
||||
}
|
||||
|
||||
public String getParentPath()
|
||||
{
|
||||
return parentPath;
|
||||
}
|
||||
|
||||
public NodeRef getParentNodeRef()
|
||||
{
|
||||
return parentNodeRef;
|
||||
}
|
||||
|
||||
public String getSiteId()
|
||||
{
|
||||
return siteId;
|
||||
}
|
||||
|
||||
public String getFileName()
|
||||
{
|
||||
return fileName;
|
||||
}
|
||||
}
|
||||
}
|
@@ -41,6 +41,7 @@ import javax.xml.datatype.DatatypeConfigurationException;
|
||||
import javax.xml.datatype.DatatypeFactory;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.opencmis.ActivityPosterImpl.ActivityInfo;
|
||||
import org.alfresco.opencmis.dictionary.CMISActionEvaluator;
|
||||
import org.alfresco.opencmis.dictionary.CMISAllowedActionEnum;
|
||||
import org.alfresco.opencmis.dictionary.CMISDictionaryService;
|
||||
@@ -738,30 +739,22 @@ public class CMISConnector implements ApplicationContextAware, ApplicationListen
|
||||
|
||||
public void deleteNode(NodeRef nodeRef, boolean postActivity)
|
||||
{
|
||||
ActivityInfo activityInfo = null;
|
||||
|
||||
// post activity after removal of the node
|
||||
postActivity &= hiddenAspect.getVisibility(Client.cmis, nodeRef) == Visibility.Visible;
|
||||
String parentPath = null;
|
||||
NodeRef parentNodeRef = null;
|
||||
SiteInfo siteInfo = null;
|
||||
String siteId = null;
|
||||
String fileName = null;
|
||||
|
||||
// get this information before the node is deleted
|
||||
if(postActivity)
|
||||
{
|
||||
parentPath = activityPoster.getParentPath(nodeRef);
|
||||
parentNodeRef = getNodeService().getPrimaryParent(nodeRef).getParentRef();
|
||||
siteInfo = siteService.getSite(nodeRef);
|
||||
siteId = (siteInfo != null ? siteInfo.getShortName() : null);
|
||||
fileName = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
|
||||
// get this information before the node is deleted
|
||||
activityInfo = activityPoster.getActivityInfo(nodeRef);
|
||||
}
|
||||
|
||||
getNodeService().deleteNode(nodeRef);
|
||||
|
||||
// post activity after removal of the node
|
||||
if(postActivity)
|
||||
if(postActivity && activityInfo != null)
|
||||
{
|
||||
activityPoster.postFileDeleted(parentPath, parentNodeRef, nodeRef, siteId, fileName);
|
||||
activityPoster.postFileDeleted(activityInfo);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user