diff --git a/source/java/org/alfresco/repo/version/Version2ServiceImpl.java b/source/java/org/alfresco/repo/version/Version2ServiceImpl.java index d5ac1657cf..fe1f081c2d 100644 --- a/source/java/org/alfresco/repo/version/Version2ServiceImpl.java +++ b/source/java/org/alfresco/repo/version/Version2ServiceImpl.java @@ -1,28 +1,28 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ +/* + * #%L + * Alfresco Repository + * %% + * Copyright (C) 2005 - 2016 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ package org.alfresco.repo.version; import java.io.Serializable; @@ -1464,7 +1464,8 @@ public class Version2ServiceImpl extends VersionServiceImpl implements VersionSe // Delete the version node this.dbNodeService.deleteNode(VersionUtil.convertNodeRef(version.getFrozenStateNodeRef())); - + + // If we try to delete the last version if (currentVersion.getVersionLabel().equals(version.getVersionLabel())) { Version headVersion = getHeadVersion(nodeRef); @@ -1475,6 +1476,9 @@ public class Version2ServiceImpl extends VersionServiceImpl implements VersionSe // to have this create a new version for the property change! policyBehaviourFilter.disableBehaviour(nodeRef, ContentModel.ASPECT_VERSIONABLE); this.nodeService.setProperty(nodeRef, ContentModel.PROP_VERSION_LABEL, headVersion.getVersionLabel()); + // MNT-13097 Content will be reverted as well + revert(nodeRef, headVersion); + policyBehaviourFilter.enableBehaviour(nodeRef, ContentModel.ASPECT_VERSIONABLE); } else { diff --git a/source/test-java/org/alfresco/repo/version/VersionServiceImplTest.java b/source/test-java/org/alfresco/repo/version/VersionServiceImplTest.java index 2f3a28da8a..137da5a060 100644 --- a/source/test-java/org/alfresco/repo/version/VersionServiceImplTest.java +++ b/source/test-java/org/alfresco/repo/version/VersionServiceImplTest.java @@ -1,28 +1,28 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ +/* + * #%L + * Alfresco Repository + * %% + * Copyright (C) 2005 - 2016 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ package org.alfresco.repo.version; import java.io.Serializable; @@ -1232,6 +1232,51 @@ public class VersionServiceImplTest extends BaseVersionStoreTest assertEquals(version2.getVersionLabel(), versionLabel3); } + + /** + * Test test_MNT13097 + * MNT-13097. Revert content if the last version is chosen. + */ + public void test_MNT13097() + { + // Use 1.0, 2.0 etc for the main part + versionProperties.put(VersionModel.PROP_VERSION_TYPE, VersionType.MAJOR); + + // Create a versionable node with content + NodeRef versionableNode = createNewVersionableNode(); + ContentWriter contentWriter = this.contentService.getWriter(versionableNode, ContentModel.PROP_CONTENT, true); + assertNotNull(contentWriter); + contentWriter.putContent(UPDATED_CONTENT_1); + + // Create first version + Version version1 = createVersion(versionableNode); + + // Update Content + contentWriter = this.contentService.getWriter(versionableNode, ContentModel.PROP_CONTENT, true); + contentWriter.putContent(UPDATED_CONTENT_2); + + // Create second version + Version version2 = createVersion(versionableNode); + + // Check that the version label is right + Version currentVersion = this.versionService.getCurrentVersion(versionableNode); + assertEquals(version2.getVersionLabel(), currentVersion.getVersionLabel()); + + // Check that the content is right + ContentReader contentReader1 = this.contentService.getReader(versionableNode, ContentModel.PROP_CONTENT); + assertEquals(UPDATED_CONTENT_2, contentReader1.getContentString()); + + // Delete version 2.0 + this.versionService.deleteVersion(versionableNode, version2); + + // Check that the version label is resetted + currentVersion = this.versionService.getCurrentVersion(versionableNode); + assertEquals(version1.getVersionLabel(), currentVersion.getVersionLabel()); + + // Check that the content has been reverted + contentReader1 = this.contentService.getReader(versionableNode, ContentModel.PROP_CONTENT); + assertEquals(UPDATED_CONTENT_1, contentReader1.getContentString()); + } /** * Test deleteVersion