mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +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;
|
package org.alfresco.opencmis;
|
||||||
|
|
||||||
|
import org.alfresco.opencmis.ActivityPosterImpl.ActivityInfo;
|
||||||
import org.alfresco.service.cmr.model.FileInfo;
|
import org.alfresco.service.cmr.model.FileInfo;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
|
|
||||||
@@ -32,12 +33,7 @@ public interface ActivityPoster
|
|||||||
|
|
||||||
void postFileUpdated(NodeRef nodeRef);
|
void postFileUpdated(NodeRef nodeRef);
|
||||||
|
|
||||||
void postFileDeleted(
|
void postFileDeleted(ActivityInfo activityInfo);
|
||||||
String parentPath,
|
|
||||||
NodeRef parentNodeRef,
|
|
||||||
NodeRef nodeRef,
|
|
||||||
String siteId,
|
|
||||||
String fileName);
|
|
||||||
|
|
||||||
String getParentPath(NodeRef nodeRef);
|
ActivityInfo getActivityInfo(NodeRef nodeRef);
|
||||||
}
|
}
|
||||||
|
@@ -106,11 +106,6 @@ public class ActivityPosterImpl implements ActivityPoster, InitializingBean
|
|||||||
{
|
{
|
||||||
this.activitiesEnabled = activitiesEnabled;
|
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
|
private final String getPathFromNode(NodeRef rootNodeRef, NodeRef nodeRef) throws FileNotFoundException
|
||||||
{
|
{
|
||||||
@@ -177,9 +172,12 @@ public class ActivityPosterImpl implements ActivityPoster, InitializingBean
|
|||||||
NodeRef nodeRef = fileInfo.getNodeRef();
|
NodeRef nodeRef = fileInfo.getNodeRef();
|
||||||
SiteInfo siteInfo = siteService.getSite(nodeRef);
|
SiteInfo siteInfo = siteService.getSite(nodeRef);
|
||||||
String siteId = (siteInfo != null ? siteInfo.getShortName() : null);
|
String siteId = (siteInfo != null ? siteInfo.getShortName() : null);
|
||||||
NodeRef parentNodeRef = nodeService.getPrimaryParent(nodeRef).getParentRef();
|
if(siteId != null && !siteId.equals(""))
|
||||||
|
{
|
||||||
postFileActivity(ActivityType.FILE_ADDED, null, parentNodeRef, nodeRef, siteId, fileInfo.getName());
|
// 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);
|
SiteInfo siteInfo = siteService.getSite(nodeRef);
|
||||||
String siteId = (siteInfo != null ? siteInfo.getShortName() : null);
|
String siteId = (siteInfo != null ? siteInfo.getShortName() : null);
|
||||||
String fileName = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
|
if(siteId != null && !siteId.equals(""))
|
||||||
|
{
|
||||||
postFileActivity(ActivityType.FILE_UPDATED, null, null, nodeRef, siteId, fileName);
|
// 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}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void postFileDeleted(
|
public void postFileDeleted(ActivityInfo activityInfo)
|
||||||
String parentPath,
|
|
||||||
NodeRef parentNodeRef,
|
|
||||||
NodeRef nodeRef,
|
|
||||||
String siteId,
|
|
||||||
String fileName)
|
|
||||||
{
|
{
|
||||||
if(activitiesEnabled)
|
if(activitiesEnabled && activityInfo.getSiteId() != null)
|
||||||
{
|
{
|
||||||
postFileActivity(ActivityType.FILE_DELETED, parentPath, parentNodeRef, nodeRef, siteId, fileName);
|
// 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 parentNodeRef = nodeService.getPrimaryParent(nodeRef).getParentRef();
|
||||||
NodeRef documentLibrary = siteService.getContainer(siteId, SiteService.DOCUMENT_LIBRARY);
|
String fileName = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
|
||||||
String parentPath = "/";
|
SiteInfo siteInfo = siteService.getSite(nodeRef);
|
||||||
try
|
String siteId = (siteInfo != null ? siteInfo.getShortName() : null);
|
||||||
{
|
if(siteId != null && !siteId.equals(""))
|
||||||
parentPath = getPathFromNode(documentLibrary, parentNodeRef);
|
{
|
||||||
}
|
NodeRef documentLibrary = siteService.getContainer(siteId, SiteService.DOCUMENT_LIBRARY);
|
||||||
catch (FileNotFoundException error)
|
String parentPath = "/";
|
||||||
{
|
try
|
||||||
if (logger.isDebugEnabled())
|
|
||||||
{
|
{
|
||||||
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(
|
private void postFileActivity(
|
||||||
@@ -308,4 +314,49 @@ public class ActivityPosterImpl implements ActivityPoster, InitializingBean
|
|||||||
|
|
||||||
return json;
|
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 javax.xml.datatype.DatatypeFactory;
|
||||||
|
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
|
import org.alfresco.opencmis.ActivityPosterImpl.ActivityInfo;
|
||||||
import org.alfresco.opencmis.dictionary.CMISActionEvaluator;
|
import org.alfresco.opencmis.dictionary.CMISActionEvaluator;
|
||||||
import org.alfresco.opencmis.dictionary.CMISAllowedActionEnum;
|
import org.alfresco.opencmis.dictionary.CMISAllowedActionEnum;
|
||||||
import org.alfresco.opencmis.dictionary.CMISDictionaryService;
|
import org.alfresco.opencmis.dictionary.CMISDictionaryService;
|
||||||
@@ -738,30 +739,22 @@ public class CMISConnector implements ApplicationContextAware, ApplicationListen
|
|||||||
|
|
||||||
public void deleteNode(NodeRef nodeRef, boolean postActivity)
|
public void deleteNode(NodeRef nodeRef, boolean postActivity)
|
||||||
{
|
{
|
||||||
|
ActivityInfo activityInfo = null;
|
||||||
|
|
||||||
// post activity after removal of the node
|
// post activity after removal of the node
|
||||||
postActivity &= hiddenAspect.getVisibility(Client.cmis, nodeRef) == Visibility.Visible;
|
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)
|
if(postActivity)
|
||||||
{
|
{
|
||||||
parentPath = activityPoster.getParentPath(nodeRef);
|
// get this information before the node is deleted
|
||||||
parentNodeRef = getNodeService().getPrimaryParent(nodeRef).getParentRef();
|
activityInfo = activityPoster.getActivityInfo(nodeRef);
|
||||||
siteInfo = siteService.getSite(nodeRef);
|
|
||||||
siteId = (siteInfo != null ? siteInfo.getShortName() : null);
|
|
||||||
fileName = (String)nodeService.getProperty(nodeRef, ContentModel.PROP_NAME);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getNodeService().deleteNode(nodeRef);
|
getNodeService().deleteNode(nodeRef);
|
||||||
|
|
||||||
// post activity after removal of the node
|
// 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