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:
Martin Muller
2016-08-05 13:46:43 +00:00
parent cbef7e2e8e
commit 07a3d6b473
2 changed files with 27 additions and 7 deletions

View File

@@ -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"/>

View File

@@ -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);
}
} }
} }
} }