mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Merged HEAD-BUG-FIX (4.3/Cloud) to HEAD (4.3/Cloud)
61122: Merged V4.2-BUG-FIX (4.2.2) to HEAD-BUG-FIX (Cloud/4.3) 60991: Merged DEV to V4.2-BUG-FIX 60325 : MNT-10404 : Runas problem in workflow when package contains versioned content Added some unit tests. 60443 : MNT-10404 : Runas problem in workflow when package contains versioned content Added tests, debug log. Run work as system user in VersionableAspect. 60452 : MNT-10404 : Runas problem in workflow when package contains versioned content Wrap debug statements. 60492 : MNT-10404 : Runas problem in workflow when package contains versioned content Fix if statement indents. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@62387 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -114,6 +114,12 @@ public class Version2ServiceImpl extends VersionServiceImpl implements VersionSe
|
|||||||
@Override
|
@Override
|
||||||
public StoreRef getVersionStoreReference()
|
public StoreRef getVersionStoreReference()
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
if (useDeprecatedV1)
|
if (useDeprecatedV1)
|
||||||
{
|
{
|
||||||
return super.getVersionStoreReference();
|
return super.getVersionStoreReference();
|
||||||
@@ -127,6 +133,12 @@ public class Version2ServiceImpl extends VersionServiceImpl implements VersionSe
|
|||||||
Map<String, Serializable> versionProperties)
|
Map<String, Serializable> versionProperties)
|
||||||
throws ReservedVersionNameException, AspectMissingException
|
throws ReservedVersionNameException, AspectMissingException
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
if (useDeprecatedV1)
|
if (useDeprecatedV1)
|
||||||
{
|
{
|
||||||
return super.createVersion(nodeRef, versionProperties);
|
return super.createVersion(nodeRef, versionProperties);
|
||||||
@@ -155,6 +167,12 @@ public class Version2ServiceImpl extends VersionServiceImpl implements VersionSe
|
|||||||
Map<String, Serializable> versionProperties)
|
Map<String, Serializable> versionProperties)
|
||||||
throws ReservedVersionNameException, AspectMissingException
|
throws ReservedVersionNameException, AspectMissingException
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Note: we can't control the order of the list, so if we have children and parents in the list and the
|
* Note: we can't control the order of the list, so if we have children and parents in the list and the
|
||||||
* parents get versioned before the children and the children are not already versioned then the parents
|
* parents get versioned before the children and the children are not already versioned then the parents
|
||||||
@@ -191,6 +209,12 @@ public class Version2ServiceImpl extends VersionServiceImpl implements VersionSe
|
|||||||
int versionNumber)
|
int versionNumber)
|
||||||
throws ReservedVersionNameException
|
throws ReservedVersionNameException
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
if (useDeprecatedV1)
|
if (useDeprecatedV1)
|
||||||
{
|
{
|
||||||
return super.createVersion(nodeRef, origVersionProperties, versionNumber);
|
return super.createVersion(nodeRef, origVersionProperties, versionNumber);
|
||||||
@@ -419,6 +443,12 @@ public class Version2ServiceImpl extends VersionServiceImpl implements VersionSe
|
|||||||
*/
|
*/
|
||||||
public VersionHistory getVersionHistory(NodeRef nodeRef)
|
public VersionHistory getVersionHistory(NodeRef nodeRef)
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
if (useDeprecatedV1)
|
if (useDeprecatedV1)
|
||||||
{
|
{
|
||||||
return super.getVersionHistory(nodeRef);
|
return super.getVersionHistory(nodeRef);
|
||||||
@@ -458,6 +488,12 @@ public class Version2ServiceImpl extends VersionServiceImpl implements VersionSe
|
|||||||
*/
|
*/
|
||||||
public Version getCurrentVersion(NodeRef nodeRef)
|
public Version getCurrentVersion(NodeRef nodeRef)
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
if (useDeprecatedV1)
|
if (useDeprecatedV1)
|
||||||
{
|
{
|
||||||
return super.getCurrentVersion(nodeRef);
|
return super.getCurrentVersion(nodeRef);
|
||||||
@@ -1039,6 +1075,12 @@ public class Version2ServiceImpl extends VersionServiceImpl implements VersionSe
|
|||||||
*/
|
*/
|
||||||
public void revert(NodeRef nodeRef)
|
public void revert(NodeRef nodeRef)
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
if (useDeprecatedV1)
|
if (useDeprecatedV1)
|
||||||
{
|
{
|
||||||
super.revert(nodeRef, getCurrentVersion(nodeRef), true);
|
super.revert(nodeRef, getCurrentVersion(nodeRef), true);
|
||||||
@@ -1054,6 +1096,12 @@ public class Version2ServiceImpl extends VersionServiceImpl implements VersionSe
|
|||||||
*/
|
*/
|
||||||
public void revert(NodeRef nodeRef, boolean deep)
|
public void revert(NodeRef nodeRef, boolean deep)
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
if (useDeprecatedV1)
|
if (useDeprecatedV1)
|
||||||
{
|
{
|
||||||
super.revert(nodeRef, getCurrentVersion(nodeRef), deep);
|
super.revert(nodeRef, getCurrentVersion(nodeRef), deep);
|
||||||
@@ -1069,6 +1117,12 @@ public class Version2ServiceImpl extends VersionServiceImpl implements VersionSe
|
|||||||
*/
|
*/
|
||||||
public void revert(NodeRef nodeRef, Version version)
|
public void revert(NodeRef nodeRef, Version version)
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
if (useDeprecatedV1)
|
if (useDeprecatedV1)
|
||||||
{
|
{
|
||||||
super.revert(nodeRef, version, true);
|
super.revert(nodeRef, version, true);
|
||||||
@@ -1084,6 +1138,12 @@ public class Version2ServiceImpl extends VersionServiceImpl implements VersionSe
|
|||||||
*/
|
*/
|
||||||
public void revert(NodeRef nodeRef, Version version, boolean deep)
|
public void revert(NodeRef nodeRef, Version version, boolean deep)
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
if(logger.isDebugEnabled())
|
if(logger.isDebugEnabled())
|
||||||
{
|
{
|
||||||
logger.debug("revert nodeRef:" + nodeRef);
|
logger.debug("revert nodeRef:" + nodeRef);
|
||||||
@@ -1342,6 +1402,12 @@ public class Version2ServiceImpl extends VersionServiceImpl implements VersionSe
|
|||||||
QName assocQName,
|
QName assocQName,
|
||||||
boolean deep)
|
boolean deep)
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
if (useDeprecatedV1)
|
if (useDeprecatedV1)
|
||||||
{
|
{
|
||||||
return super.restore(nodeRef, parentNodeRef, assocTypeQName, assocQName, deep);
|
return super.restore(nodeRef, parentNodeRef, assocTypeQName, assocQName, deep);
|
||||||
@@ -1424,6 +1490,12 @@ public class Version2ServiceImpl extends VersionServiceImpl implements VersionSe
|
|||||||
public void deleteVersionHistory(NodeRef nodeRef)
|
public void deleteVersionHistory(NodeRef nodeRef)
|
||||||
throws AspectMissingException
|
throws AspectMissingException
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
if (useDeprecatedV1)
|
if (useDeprecatedV1)
|
||||||
{
|
{
|
||||||
super.deleteVersionHistory(nodeRef);
|
super.deleteVersionHistory(nodeRef);
|
||||||
@@ -1465,6 +1537,12 @@ public class Version2ServiceImpl extends VersionServiceImpl implements VersionSe
|
|||||||
*/
|
*/
|
||||||
public void deleteVersion(NodeRef nodeRef, Version version)
|
public void deleteVersion(NodeRef nodeRef, Version version)
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
if (useDeprecatedV1)
|
if (useDeprecatedV1)
|
||||||
{
|
{
|
||||||
super.deleteVersion(nodeRef, version); // throws UnsupportedOperationException
|
super.deleteVersion(nodeRef, version); // throws UnsupportedOperationException
|
||||||
@@ -1505,6 +1583,12 @@ public class Version2ServiceImpl extends VersionServiceImpl implements VersionSe
|
|||||||
@Override
|
@Override
|
||||||
public boolean isAVersion(NodeRef nodeRef)
|
public boolean isAVersion(NodeRef nodeRef)
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
NodeRef realNodeRef = nodeRef;
|
NodeRef realNodeRef = nodeRef;
|
||||||
if(nodeRef.getStoreRef().getProtocol().equals(VersionBaseModel.STORE_PROTOCOL))
|
if(nodeRef.getStoreRef().getProtocol().equals(VersionBaseModel.STORE_PROTOCOL))
|
||||||
{
|
{
|
||||||
@@ -1519,6 +1603,12 @@ public class Version2ServiceImpl extends VersionServiceImpl implements VersionSe
|
|||||||
@Override
|
@Override
|
||||||
public boolean isVersioned(NodeRef nodeRef)
|
public boolean isVersioned(NodeRef nodeRef)
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
NodeRef realNodeRef = nodeRef;
|
NodeRef realNodeRef = nodeRef;
|
||||||
if(nodeRef.getStoreRef().getProtocol().equals(VersionBaseModel.STORE_PROTOCOL))
|
if(nodeRef.getStoreRef().getProtocol().equals(VersionBaseModel.STORE_PROTOCOL))
|
||||||
{
|
{
|
||||||
|
@@ -35,6 +35,7 @@ import org.alfresco.repo.node.MLPropertyInterceptor;
|
|||||||
import org.alfresco.repo.policy.BehaviourFilter;
|
import org.alfresco.repo.policy.BehaviourFilter;
|
||||||
import org.alfresco.repo.policy.JavaBehaviour;
|
import org.alfresco.repo.policy.JavaBehaviour;
|
||||||
import org.alfresco.repo.policy.PolicyScope;
|
import org.alfresco.repo.policy.PolicyScope;
|
||||||
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
import org.alfresco.repo.version.VersionServicePolicies.CalculateVersionLabelPolicy;
|
import org.alfresco.repo.version.VersionServicePolicies.CalculateVersionLabelPolicy;
|
||||||
import org.alfresco.repo.version.common.AbstractVersionServiceImpl;
|
import org.alfresco.repo.version.common.AbstractVersionServiceImpl;
|
||||||
import org.alfresco.repo.version.common.VersionHistoryImpl;
|
import org.alfresco.repo.version.common.VersionHistoryImpl;
|
||||||
@@ -195,6 +196,12 @@ public class VersionServiceImpl extends AbstractVersionServiceImpl implements Ve
|
|||||||
@Override
|
@Override
|
||||||
public StoreRef getVersionStoreReference()
|
public StoreRef getVersionStoreReference()
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
return new StoreRef(
|
return new StoreRef(
|
||||||
StoreRef.PROTOCOL_WORKSPACE,
|
StoreRef.PROTOCOL_WORKSPACE,
|
||||||
VersionModel.STORE_ID);
|
VersionModel.STORE_ID);
|
||||||
@@ -208,6 +215,12 @@ public class VersionServiceImpl extends AbstractVersionServiceImpl implements Ve
|
|||||||
Map<String, Serializable> versionProperties)
|
Map<String, Serializable> versionProperties)
|
||||||
throws ReservedVersionNameException, AspectMissingException
|
throws ReservedVersionNameException, AspectMissingException
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
long startTime = System.currentTimeMillis();
|
long startTime = System.currentTimeMillis();
|
||||||
|
|
||||||
int versionNumber = 0; // deprecated (unused)
|
int versionNumber = 0; // deprecated (unused)
|
||||||
@@ -234,6 +247,12 @@ public class VersionServiceImpl extends AbstractVersionServiceImpl implements Ve
|
|||||||
boolean versionChildren)
|
boolean versionChildren)
|
||||||
throws ReservedVersionNameException, AspectMissingException
|
throws ReservedVersionNameException, AspectMissingException
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
long startTime = System.currentTimeMillis();
|
long startTime = System.currentTimeMillis();
|
||||||
|
|
||||||
int versionNumber = 0; // deprecated (unused)
|
int versionNumber = 0; // deprecated (unused)
|
||||||
@@ -307,6 +326,12 @@ public class VersionServiceImpl extends AbstractVersionServiceImpl implements Ve
|
|||||||
Map<String, Serializable> versionProperties)
|
Map<String, Serializable> versionProperties)
|
||||||
throws ReservedVersionNameException, AspectMissingException
|
throws ReservedVersionNameException, AspectMissingException
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
long startTime = System.currentTimeMillis();
|
long startTime = System.currentTimeMillis();
|
||||||
|
|
||||||
Collection<Version> result = new ArrayList<Version>(nodeRefs.size());
|
Collection<Version> result = new ArrayList<Version>(nodeRefs.size());
|
||||||
@@ -479,6 +504,12 @@ public class VersionServiceImpl extends AbstractVersionServiceImpl implements Ve
|
|||||||
*/
|
*/
|
||||||
public VersionHistory getVersionHistory(NodeRef nodeRef)
|
public VersionHistory getVersionHistory(NodeRef nodeRef)
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
VersionHistory versionHistory = null;
|
VersionHistory versionHistory = null;
|
||||||
|
|
||||||
if (this.nodeService.exists(nodeRef) == true)
|
if (this.nodeService.exists(nodeRef) == true)
|
||||||
@@ -498,6 +529,12 @@ public class VersionServiceImpl extends AbstractVersionServiceImpl implements Ve
|
|||||||
*/
|
*/
|
||||||
public Version getCurrentVersion(NodeRef nodeRef)
|
public Version getCurrentVersion(NodeRef nodeRef)
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
Version version = null;
|
Version version = null;
|
||||||
|
|
||||||
if (this.nodeService.hasAspect(nodeRef, ContentModel.ASPECT_VERSIONABLE) == true)
|
if (this.nodeService.hasAspect(nodeRef, ContentModel.ASPECT_VERSIONABLE) == true)
|
||||||
@@ -922,6 +959,12 @@ public class VersionServiceImpl extends AbstractVersionServiceImpl implements Ve
|
|||||||
*/
|
*/
|
||||||
public void ensureVersioningEnabled(NodeRef nodeRef, Map<QName, Serializable> versionProperties)
|
public void ensureVersioningEnabled(NodeRef nodeRef, Map<QName, Serializable> versionProperties)
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
// Don't alter the auditable aspect!
|
// Don't alter the auditable aspect!
|
||||||
boolean disableAuditable = policyBehaviourFilter.isEnabled(ContentModel.ASPECT_AUDITABLE);
|
boolean disableAuditable = policyBehaviourFilter.isEnabled(ContentModel.ASPECT_AUDITABLE);
|
||||||
if(disableAuditable)
|
if(disableAuditable)
|
||||||
@@ -997,6 +1040,12 @@ public class VersionServiceImpl extends AbstractVersionServiceImpl implements Ve
|
|||||||
*/
|
*/
|
||||||
public void revert(NodeRef nodeRef, Version version, boolean deep)
|
public void revert(NodeRef nodeRef, Version version, boolean deep)
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
// Check the mandatory parameters
|
// Check the mandatory parameters
|
||||||
ParameterCheck.mandatory("nodeRef", nodeRef);
|
ParameterCheck.mandatory("nodeRef", nodeRef);
|
||||||
ParameterCheck.mandatory("version", version);
|
ParameterCheck.mandatory("version", version);
|
||||||
@@ -1141,6 +1190,12 @@ public class VersionServiceImpl extends AbstractVersionServiceImpl implements Ve
|
|||||||
QName assocQName,
|
QName assocQName,
|
||||||
boolean deep)
|
boolean deep)
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
NodeRef restoredNodeRef = null;
|
NodeRef restoredNodeRef = null;
|
||||||
|
|
||||||
// Check that the node does not exist
|
// Check that the node does not exist
|
||||||
@@ -1267,6 +1322,12 @@ public class VersionServiceImpl extends AbstractVersionServiceImpl implements Ve
|
|||||||
public void deleteVersionHistory(NodeRef nodeRef)
|
public void deleteVersionHistory(NodeRef nodeRef)
|
||||||
throws AspectMissingException
|
throws AspectMissingException
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
// Get the version history node for the node is question and delete it
|
// Get the version history node for the node is question and delete it
|
||||||
NodeRef versionHistoryNodeRef = getVersionHistoryNodeRef(nodeRef);
|
NodeRef versionHistoryNodeRef = getVersionHistoryNodeRef(nodeRef);
|
||||||
|
|
||||||
@@ -1352,6 +1413,12 @@ public class VersionServiceImpl extends AbstractVersionServiceImpl implements Ve
|
|||||||
@Override
|
@Override
|
||||||
public boolean isVersioned(NodeRef nodeRef)
|
public boolean isVersioned(NodeRef nodeRef)
|
||||||
{
|
{
|
||||||
|
if (logger.isDebugEnabled())
|
||||||
|
{
|
||||||
|
logger.debug("Run as user " + AuthenticationUtil.getRunAsUser());
|
||||||
|
logger.debug("Fully authenticated " + AuthenticationUtil.getFullyAuthenticatedUser());
|
||||||
|
}
|
||||||
|
|
||||||
return this.nodeService.hasAspect(nodeRef, ContentModel.ASPECT_VERSIONABLE);
|
return this.nodeService.hasAspect(nodeRef, ContentModel.ASPECT_VERSIONABLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -544,7 +544,7 @@ public class VersionableAspect implements ContentServicePolicies.OnContentUpdate
|
|||||||
vs.createVersion(nf, vp);
|
vs.createVersion(nf, vp);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
},AuthenticationUtil.getRunAsUser());
|
},AuthenticationUtil.getSystemUserName());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -54,6 +54,7 @@ import org.alfresco.service.cmr.repository.NodeService;
|
|||||||
import org.alfresco.service.cmr.repository.StoreRef;
|
import org.alfresco.service.cmr.repository.StoreRef;
|
||||||
import org.alfresco.service.cmr.security.AccessStatus;
|
import org.alfresco.service.cmr.security.AccessStatus;
|
||||||
import org.alfresco.service.cmr.security.PermissionService;
|
import org.alfresco.service.cmr.security.PermissionService;
|
||||||
|
import org.alfresco.service.cmr.security.PersonService;
|
||||||
import org.alfresco.service.cmr.version.Version;
|
import org.alfresco.service.cmr.version.Version;
|
||||||
import org.alfresco.service.cmr.version.VersionHistory;
|
import org.alfresco.service.cmr.version.VersionHistory;
|
||||||
import org.alfresco.service.cmr.version.VersionService;
|
import org.alfresco.service.cmr.version.VersionService;
|
||||||
@@ -90,6 +91,7 @@ public class VersionServiceImplTest extends BaseVersionStoreTest
|
|||||||
private static final String PWD_A = "passA";
|
private static final String PWD_A = "passA";
|
||||||
private static final String USER_NAME_A = "userA";
|
private static final String USER_NAME_A = "userA";
|
||||||
|
|
||||||
|
private PersonService personService;
|
||||||
private VersionableAspect versionableAspect;
|
private VersionableAspect versionableAspect;
|
||||||
private List<String> excludedOnUpdateProps;
|
private List<String> excludedOnUpdateProps;
|
||||||
|
|
||||||
@@ -97,6 +99,7 @@ public class VersionServiceImplTest extends BaseVersionStoreTest
|
|||||||
protected void onSetUpInTransaction() throws Exception
|
protected void onSetUpInTransaction() throws Exception
|
||||||
{
|
{
|
||||||
super.onSetUpInTransaction();
|
super.onSetUpInTransaction();
|
||||||
|
personService = (PersonService) applicationContext.getBean("personService");
|
||||||
versionableAspect = (VersionableAspect) applicationContext.getBean("versionableAspect");
|
versionableAspect = (VersionableAspect) applicationContext.getBean("versionableAspect");
|
||||||
excludedOnUpdateProps = versionableAspect.getExcludedOnUpdateProps();
|
excludedOnUpdateProps = versionableAspect.getExcludedOnUpdateProps();
|
||||||
}
|
}
|
||||||
@@ -2438,4 +2441,91 @@ public class VersionServiceImplTest extends BaseVersionStoreTest
|
|||||||
|
|
||||||
System.out.println("Finished: " + fileCount);
|
System.out.println("Finished: " + fileCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void test_MNT10404()
|
||||||
|
{
|
||||||
|
String test_run = System.currentTimeMillis() + "";
|
||||||
|
final String test_user = "userUsageTestUser-" + test_run;
|
||||||
|
final String document_name = "test_MNT10404" + test_run + ".txt";
|
||||||
|
|
||||||
|
final String theFirstContent = "This is simple content.";
|
||||||
|
final String theSecondContent = "Update content.";
|
||||||
|
|
||||||
|
NodeRef document = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// create user
|
||||||
|
if (personService.personExists(test_user))
|
||||||
|
{
|
||||||
|
personService.deletePerson(test_user);
|
||||||
|
}
|
||||||
|
|
||||||
|
HashMap<QName, Serializable> properties = new HashMap<QName, Serializable>();
|
||||||
|
properties.put(ContentModel.PROP_USERNAME, test_user);
|
||||||
|
|
||||||
|
NodeRef personNodeRef = personService.createPerson(properties);
|
||||||
|
|
||||||
|
assertNotNull(personNodeRef);
|
||||||
|
|
||||||
|
// create node
|
||||||
|
properties.clear();
|
||||||
|
properties.put(ContentModel.PROP_NAME, document_name);
|
||||||
|
|
||||||
|
document = nodeService.createNode(this.rootNodeRef, ContentModel.ASSOC_CONTAINS, QName.createQName(ContentModel.USER_MODEL_URI, document_name),
|
||||||
|
ContentModel.TYPE_CONTENT, properties).getChildRef();
|
||||||
|
contentService.getWriter(document, ContentModel.PROP_CONTENT, true).putContent(theFirstContent);
|
||||||
|
|
||||||
|
// add write permission
|
||||||
|
permissionService.setPermission(document, test_user, PermissionService.WRITE_CONTENT, true);
|
||||||
|
|
||||||
|
// add versionable aspect as system user
|
||||||
|
final NodeRef doc = document;
|
||||||
|
|
||||||
|
RunAsWork<Void> getWork = new RunAsWork<Void>()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public Void doWork() throws Exception
|
||||||
|
{
|
||||||
|
Map<QName, Serializable> versionProperties = new HashMap<QName, Serializable>();
|
||||||
|
versionProperties.put(ContentModel.PROP_VERSION_LABEL, "0.1");
|
||||||
|
versionProperties.put(ContentModel.PROP_INITIAL_VERSION, true);
|
||||||
|
versionProperties.put(ContentModel.PROP_VERSION_TYPE, VersionType.MINOR);
|
||||||
|
nodeService.addAspect(doc, ContentModel.ASPECT_VERSIONABLE, versionProperties);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
AuthenticationUtil.runAs(getWork, AuthenticationUtil.getSystemUserName());
|
||||||
|
|
||||||
|
assertTrue(nodeService.hasAspect(document, ContentModel.ASPECT_VERSIONABLE));
|
||||||
|
|
||||||
|
// set content by test_user
|
||||||
|
RunAsWork<Void> getWorkSetContent = new RunAsWork<Void>()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public Void doWork() throws Exception
|
||||||
|
{
|
||||||
|
contentService.getWriter(doc, ContentModel.PROP_CONTENT, true).putContent(theSecondContent);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
AuthenticationUtil.runAs(getWorkSetContent, test_user);
|
||||||
|
|
||||||
|
assertTrue(theSecondContent.equals(contentService.getReader(document, ContentModel.PROP_CONTENT).getContentString()));
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
// delete user
|
||||||
|
if (personService.personExists(test_user))
|
||||||
|
{
|
||||||
|
personService.deletePerson(test_user);
|
||||||
|
}
|
||||||
|
|
||||||
|
// delete node
|
||||||
|
if (document != null && nodeService.exists(document))
|
||||||
|
{
|
||||||
|
nodeService.deleteNode(document);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user