-
Bug
-
Resolution: Fixed
-
Major
-
5.4
-
-
Empty show more show less
-
Sprint 4 (Kromeriz)
-
3
We have override BaseVersionManager in order to add Label support on versions.
One version root call is failing (org.apache.jackrabbit.core.version.VersionHistoryImpl.hasVersionLabel(javax.jcr.version.Version version, String label) ) due to
private void checkOwnVersion(Version version) throws VersionException, RepositoryException { if (!version.getParent().isSame(this)) { ..... version.getParent() = ContentDecoratorVersionWrapper.getParent() seems to be wrapped correctly but then version.getParent().isSame(this) = DelegateNodeWrapper. isSame(Item otherItem) failed in getSession().getWorkspace().getName(). --> magnolia-mgnlVersion equals( otherItem.getSession().getWorkspace().getName()) --> mgnlVersion
In order to reproduce add the following test method in
info.magnolia.cms.core.version.BaseVersionManagerTest
@Test public void getVersionForALabel() throws RepositoryException { // GIVEN String label = "label"; VersionManager versionManager = VersionManager.getInstance(); // Create node structure Node node = MgnlContext.getJCRSession(RepositoryConstants.WEBSITE).getRootNode().addNode("test", NodeTypes.Content.NAME); Node firstLevel = node.addNode("first-level", NodeTypes.Content.NAME); firstLevel.setProperty("text", " firstLevel V1"); Node secondLevel = firstLevel.addNode("second-level", NodeTypes.Content.NAME); secondLevel.setProperty("text", " secondLevel V1"); node.getSession().save(); // Create version Version v1 = versionManager.addVersion(node); // Add label v1.getContainingHistory().addVersionLabel(v1.getName(), label, true); Version v2 = versionManager.addVersion(node); assertEquals("magnolia-mgnlVersion", v2.getSession().getWorkspace().getName()); // WHEN Version baseVersion = versionManager.getBaseVersion(node); assertEquals("magnolia-mgnlVersion", baseVersion.getSession().getWorkspace().getName()); VersionHistory versionHistory = versionManager.getVersionHistory(node); assertEquals("magnolia-mgnlVersion", versionHistory.getSession().getWorkspace().getName()); // WHEN boolean haveLabel = versionHistory.hasVersionLabel(v2, label); // THEN assertTrue(haveLabel); }
Acceptance criteria