mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged RETURN-OF-THE-API (5.2.0) to 5.2.N (5.2.1)
128489 jvonka: V1 REST API: Node Version History - minor tweak for "delete version" - re: fix-up versionType if deleting last version REPO-835 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@129166 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -26,6 +26,7 @@
|
||||
package org.alfresco.rest.api.nodes;
|
||||
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.policy.BehaviourFilter;
|
||||
import org.alfresco.repo.security.permissions.AccessDeniedException;
|
||||
import org.alfresco.repo.version.Version2Model;
|
||||
import org.alfresco.repo.version.VersionModel;
|
||||
@@ -82,6 +83,7 @@ public class NodeVersionsRelation extends AbstractNodeRelation implements
|
||||
InitializingBean
|
||||
{
|
||||
protected VersionService versionService;
|
||||
protected BehaviourFilter behaviourFilter;
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet()
|
||||
@@ -91,6 +93,12 @@ public class NodeVersionsRelation extends AbstractNodeRelation implements
|
||||
|
||||
this.versionService = sr.getVersionService();
|
||||
}
|
||||
|
||||
public void setBehaviourFilter(BehaviourFilter behaviourFilter)
|
||||
{
|
||||
this.behaviourFilter = behaviourFilter;
|
||||
}
|
||||
|
||||
/**
|
||||
* List version history
|
||||
*
|
||||
@@ -233,24 +241,34 @@ public class NodeVersionsRelation extends AbstractNodeRelation implements
|
||||
{
|
||||
Version v = findVersion(nodeId, versionId);
|
||||
|
||||
NodeRef liveVersionedNodeRef = v.getVersionedNodeRef();
|
||||
// live (aka versioned) nodeRef
|
||||
NodeRef nodeRef = v.getVersionedNodeRef();
|
||||
|
||||
if (sr.getPermissionService().hasPermission(liveVersionedNodeRef, PermissionService.DELETE) != AccessStatus.ALLOWED)
|
||||
if (sr.getPermissionService().hasPermission(nodeRef, PermissionService.DELETE) != AccessStatus.ALLOWED)
|
||||
{
|
||||
throw new PermissionDeniedException("Cannot delete version");
|
||||
}
|
||||
|
||||
versionService.deleteVersion(liveVersionedNodeRef, v);
|
||||
versionService.deleteVersion(nodeRef, v);
|
||||
|
||||
Map<QName, Serializable> props = sr.getNodeService().getProperties(liveVersionedNodeRef);
|
||||
Map<QName, Serializable> props = sr.getNodeService().getProperties(nodeRef);
|
||||
if (props.get(ContentModel.PROP_VERSION_LABEL) == null)
|
||||
{
|
||||
// last version was deleted
|
||||
if (props.get(ContentModel.PROP_VERSION_TYPE) != null)
|
||||
{
|
||||
// minor fix up to versionable aspect - ie. remove versionType
|
||||
// TODO should we disable behaviours, eg. audit, versionable
|
||||
sr.getNodeService().removeProperty(liveVersionedNodeRef, ContentModel.PROP_VERSION_TYPE);
|
||||
behaviourFilter.disableBehaviour(nodeRef, ContentModel.ASPECT_VERSIONABLE);
|
||||
behaviourFilter.disableBehaviour(nodeRef, ContentModel.ASPECT_AUDITABLE);
|
||||
try
|
||||
{
|
||||
sr.getNodeService().removeProperty(nodeRef, ContentModel.PROP_VERSION_TYPE);
|
||||
}
|
||||
finally
|
||||
{
|
||||
behaviourFilter.enableBehaviour(nodeRef, ContentModel.ASPECT_AUDITABLE);
|
||||
behaviourFilter.enableBehaviour(nodeRef, ContentModel.ASPECT_VERSIONABLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user