(4);
versionProperties.put(Version.PROP_DESCRIPTION, I18NUtil.getMessage(MSG_AUTO_VERSION_PROPS));
versionProperties.put(VersionModel.PROP_VERSION_TYPE, VersionType.MINOR);
createVersionImpl(nodeRef, versionProperties);
}
}
}
finally
{
onUpdatePropertiesBehaviour.enable();
}
}
}
/**
* Indicates if the node is unlocked or the current user has a WRITE_LOCK
*
* Ideally this would be a new method on the lockService, but cannot do this at the moment,
* as this method is being added as part of a hot fix, so a public service cannot change
* as the RM AMP might be installed and it has its own security context which would also need
* to reflect this change.
*/
private boolean isLockedOrReadOnly(NodeRef nodeRef)
{
LockStatus lockStatus = lockService.getLockStatus(nodeRef);
LockType lockType = lockService.getLockType(nodeRef);
return ! (lockStatus == LockStatus.NO_LOCK || (lockStatus == LockStatus.LOCK_OWNER && lockType == LockType.WRITE_LOCK));
}
/**
* On create version implementation method
*
* @param nodeRef
* @param versionProperties
*/
private void createVersionImpl(NodeRef nodeRef, Map versionProperties)
{
recordCreateVersion(nodeRef, null);
this.versionService.createVersion(nodeRef, versionProperties);
}
/**
* @see org.alfresco.repo.version.VersionServicePolicies.OnCreateVersionPolicy#onCreateVersion(org.alfresco.service.namespace.QName, org.alfresco.service.cmr.repository.NodeRef, java.util.Map, org.alfresco.repo.policy.PolicyScope)
*/
public void afterCreateVersion(NodeRef versionableNode, Version version)
{
recordCreateVersion(versionableNode, version);
}
@SuppressWarnings("unchecked")
private void recordCreateVersion(NodeRef versionableNode, Version version)
{
Map versionedNodeRefs = (Map)AlfrescoTransactionSupport.getResource(KEY_VERSIONED_NODEREFS);
if (versionedNodeRefs == null)
{
versionedNodeRefs = new HashMap();
AlfrescoTransactionSupport.bindResource(KEY_VERSIONED_NODEREFS, versionedNodeRefs);
}
versionedNodeRefs.put(versionableNode, versionableNode);
}
/*
* (non-Javadoc)
* @see org.alfresco.repo.dictionary.DictionaryListener#onDictionaryInit()
*/
@Override
public void onDictionaryInit()
{
}
/*
* (non-Javadoc)
* @see org.alfresco.repo.dictionary.DictionaryListener#afterDictionaryInit()
*/
@Override
public void afterDictionaryInit()
{
this.excludedOnUpdatePropQNames = new HashSet(this.excludedOnUpdateProps.size() * 2);
for (String prefixString : this.excludedOnUpdateProps)
{
try
{
this.excludedOnUpdatePropQNames.add(QName.createQName(prefixString, this.namespacePrefixResolver));
}
catch (Exception e)
{
// An unregistered prefix. Ignore and continue
}
}
}
/*
* (non-Javadoc)
* @see org.alfresco.repo.dictionary.DictionaryListener#afterDictionaryDestroy()
*/
@Override
public void afterDictionaryDestroy()
{
}
}