diff --git a/source/java/org/alfresco/repo/model/ml/EditionServiceImpl.java b/source/java/org/alfresco/repo/model/ml/EditionServiceImpl.java index 14ac2d41cf..f9e8e1a791 100644 --- a/source/java/org/alfresco/repo/model/ml/EditionServiceImpl.java +++ b/source/java/org/alfresco/repo/model/ml/EditionServiceImpl.java @@ -109,7 +109,7 @@ public class EditionServiceImpl implements EditionService // get the last edition and add it the Version Histories property to the version Version currentEdition = versionService.getCurrentVersion(mlContainerToVersion); - addVersionHitoryProperty(currentEdition, childAssocRefs); + addVersionHistoryProperty(currentEdition, childAssocRefs); if(versionProperties == null) { @@ -264,19 +264,35 @@ public class EditionServiceImpl implements EditionService // Switch VersionStore depending on configured impl if (versionService.getVersionStoreReference().getIdentifier().equals(Version2Model.STORE_ID)) { - // V2 version store (eg. workspace://version2Store) - + // V2 version store (eg. workspace://version2Store) + // get the serialisation of the version histories in the version properties - versionHistories = (List) - properties.get(Version2Model.PROP_QNAME_TRANSLATION_VERSIONS); + Object histories = properties.get(Version2Model.PROP_QNAME_TRANSLATION_VERSIONS); + if (histories instanceof List) + { + versionHistories = (List)histories; + } + else if (histories instanceof VersionHistory) + { + versionHistories = new ArrayList(1); + versionHistories.add((VersionHistory)histories); + } } else if (versionService.getVersionStoreReference().getIdentifier().equals(VersionModel.STORE_ID)) { // Deprecated V1 version store (eg. workspace://lightWeightVersionStore) // get the serialisation of the version histories in the version properties - versionHistories = (List) - properties.get(VersionModel.PROP_QNAME_TRANSLATION_VERSIONS); + Object histories = properties.get(VersionModel.PROP_QNAME_TRANSLATION_VERSIONS); + if (histories instanceof List) + { + versionHistories = (List)histories; + } + else if (histories instanceof VersionHistory) + { + versionHistories = new ArrayList(1); + versionHistories.add((VersionHistory)histories); + } } else { @@ -303,7 +319,7 @@ public class EditionServiceImpl implements EditionService /** * Util method to add the version histories of translations as a property of the frozen mlContainer */ - private void addVersionHitoryProperty(Version edition, List childAssocRefs) + private void addVersionHistoryProperty(Version edition, List childAssocRefs) { List translationVersionHistories = new ArrayList(childAssocRefs.size()); @@ -312,7 +328,6 @@ public class EditionServiceImpl implements EditionService NodeRef translation = ref.getChildRef(); translationVersionHistories.add(versionService.getVersionHistory(translation)); - } // properties in which the version histories will be stored @@ -348,7 +363,6 @@ public class EditionServiceImpl implements EditionService { throw new AlfrescoRuntimeException("Unexpected versionstore: " + versionService.getVersionStoreReference().getIdentifier()); } - } /** diff --git a/source/java/org/alfresco/repo/security/permissions/impl/PermissionServiceImpl.java b/source/java/org/alfresco/repo/security/permissions/impl/PermissionServiceImpl.java index 5b61c8b4cb..cb9d49f161 100644 --- a/source/java/org/alfresco/repo/security/permissions/impl/PermissionServiceImpl.java +++ b/source/java/org/alfresco/repo/security/permissions/impl/PermissionServiceImpl.java @@ -55,6 +55,7 @@ import org.alfresco.repo.security.permissions.PermissionReference; import org.alfresco.repo.security.permissions.PermissionServiceSPI; import org.alfresco.repo.tenant.TenantService; import org.alfresco.repo.version.VersionModel; +import org.alfresco.repo.version.common.VersionUtil; import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.NodeRef; @@ -435,9 +436,9 @@ public class PermissionServiceImpl implements PermissionServiceSPI, Initializing // NOTE: maybe in future there will appear situation when changing Node permissions will be a cause for creating new Node version. In other words, // VersionedNodeRefs will contain their own permissions (whose, probably, will differ from version to version). In this case you should delete/comment this code!!! - if(isVersionedNodeRefInstance(passedNodeRef)) + if (isVersionedNodeRefInstance(passedNodeRef)) { - passedNodeRef = convertVersionedNodeRefToFrozenNodeRef(passedNodeRef); + passedNodeRef = convertVersionedNodeRefToFrozenNodeRef(VersionUtil.convertNodeRef(passedNodeRef)); } final NodeRef nodeRef = tenantService.getName(passedNodeRef);