Java Code Examples for org.alfresco.model.ContentModel.PROP_AUTHORITY_NAME

The following are Jave code examples for showing how to use PROP_AUTHORITY_NAME of the org.alfresco.model.ContentModel class. You can vote up the examples you like. Your votes will be used in our system to get more good examples.
+ Save this method
Example 1
Project: alfresco-repository   File: AuthorityDAOImpl.java   View Source Code Vote up 4 votes
public void onUpdateProperties(NodeRef nodeRef, Map<QName, Serializable> before, Map<QName, Serializable> after)
{
    boolean isAuthority = dictionaryService.isSubClass(nodeService.getType(nodeRef), ContentModel.TYPE_AUTHORITY_CONTAINER);
    QName idProp = isAuthority ? ContentModel.PROP_AUTHORITY_NAME  : ContentModel.PROP_USERNAME;
    String authBefore = DefaultTypeConverter.INSTANCE.convert(String.class, before.get(idProp));
    if (authBefore == null)
    {
        // Node has just been created; nothing to do
        return;
    }
    String authAfter = DefaultTypeConverter.INSTANCE.convert(String.class, after.get(idProp));
    if (!EqualsHelper.nullSafeEquals(authBefore, authAfter))
    {
        if (AlfrescoTransactionSupport.getResource(PersonServiceImpl.KEY_ALLOW_UID_UPDATE) != null || authBefore.equalsIgnoreCase(authAfter))
        {
            if (isAuthority)
            {
                if (authBefore != null)
                {
                    // Fix any ACLs
                    aclDao.renameAuthority(authBefore, authAfter);
                }

                // Fix primary association local name
                QName newAssocQName = QName.createQName("cm", authAfter, namespacePrefixResolver);
                ChildAssociationRef assoc = nodeService.getPrimaryParent(nodeRef);
                nodeService.moveNode(nodeRef, assoc.getParentRef(), assoc.getTypeQName(), newAssocQName);

                // Fix other non-case sensitive parent associations
                QName oldAssocQName = QName.createQName("cm", authBefore, namespacePrefixResolver);
                newAssocQName = QName.createQName("cm", authAfter, namespacePrefixResolver);
                for (ChildAssociationRef parent : nodeService.getParentAssocs(nodeRef))
                {
                    if (!parent.isPrimary() && parent.getQName().equals(oldAssocQName))
                    {
                        nodeService.removeChildAssociation(parent);
                        nodeService.addChild(parent.getParentRef(), parent.getChildRef(), parent.getTypeQName(),
                                newAssocQName);
                    }
                }
                authorityLookupCache.clear();
                authorityBridgeTableCache.refresh();
                
                // Cache is out of date
                userAuthorityCache.clear();
            }
            else
            {
                userAuthorityCache.remove(authBefore);
            }
            // Remove cache entires for the parents.  No need to lock because the data has already been updated.
            removeParentsFromChildAuthorityCache(nodeRef, false);
        }
        else
        {
            throw new UnsupportedOperationException("The name of an authority can not be changed");
        }
    }
}