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