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:
@@ -798,7 +798,9 @@
|
|||||||
<property name="nodeAssocService" ref="NodeAssocService"/>
|
<property name="nodeAssocService" ref="NodeAssocService"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean class="org.alfresco.rest.api.nodes.NodeVersionsRelation" parent="baseNodeRelation"/>
|
<bean class="org.alfresco.rest.api.nodes.NodeVersionsRelation" parent="baseNodeRelation">
|
||||||
|
<property name="behaviourFilter" ref="policyBehaviourFilter"/>
|
||||||
|
</bean>
|
||||||
|
|
||||||
<bean class="org.alfresco.rest.api.nodes.NodeSecondaryChildrenRelation" parent="baseNodeRelation"/>
|
<bean class="org.alfresco.rest.api.nodes.NodeSecondaryChildrenRelation" parent="baseNodeRelation"/>
|
||||||
|
|
||||||
|
@@ -26,6 +26,7 @@
|
|||||||
package org.alfresco.rest.api.nodes;
|
package org.alfresco.rest.api.nodes;
|
||||||
|
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
|
import org.alfresco.repo.policy.BehaviourFilter;
|
||||||
import org.alfresco.repo.security.permissions.AccessDeniedException;
|
import org.alfresco.repo.security.permissions.AccessDeniedException;
|
||||||
import org.alfresco.repo.version.Version2Model;
|
import org.alfresco.repo.version.Version2Model;
|
||||||
import org.alfresco.repo.version.VersionModel;
|
import org.alfresco.repo.version.VersionModel;
|
||||||
@@ -82,6 +83,7 @@ public class NodeVersionsRelation extends AbstractNodeRelation implements
|
|||||||
InitializingBean
|
InitializingBean
|
||||||
{
|
{
|
||||||
protected VersionService versionService;
|
protected VersionService versionService;
|
||||||
|
protected BehaviourFilter behaviourFilter;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet()
|
public void afterPropertiesSet()
|
||||||
@@ -91,6 +93,12 @@ public class NodeVersionsRelation extends AbstractNodeRelation implements
|
|||||||
|
|
||||||
this.versionService = sr.getVersionService();
|
this.versionService = sr.getVersionService();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setBehaviourFilter(BehaviourFilter behaviourFilter)
|
||||||
|
{
|
||||||
|
this.behaviourFilter = behaviourFilter;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List version history
|
* List version history
|
||||||
*
|
*
|
||||||
@@ -233,24 +241,34 @@ public class NodeVersionsRelation extends AbstractNodeRelation implements
|
|||||||
{
|
{
|
||||||
Version v = findVersion(nodeId, versionId);
|
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");
|
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)
|
if (props.get(ContentModel.PROP_VERSION_LABEL) == null)
|
||||||
{
|
{
|
||||||
// last version was deleted
|
// last version was deleted
|
||||||
if (props.get(ContentModel.PROP_VERSION_TYPE) != null)
|
if (props.get(ContentModel.PROP_VERSION_TYPE) != null)
|
||||||
{
|
{
|
||||||
// minor fix up to versionable aspect - ie. remove versionType
|
// minor fix up to versionable aspect - ie. remove versionType
|
||||||
// TODO should we disable behaviours, eg. audit, versionable
|
behaviourFilter.disableBehaviour(nodeRef, ContentModel.ASPECT_VERSIONABLE);
|
||||||
sr.getNodeService().removeProperty(liveVersionedNodeRef, ContentModel.PROP_VERSION_TYPE);
|
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