Details
-
Bug
-
Resolution: Fixed
-
Major
-
5.4
-
-
Empty show more show less
-
Sprint 4 (Kromeriz)
-
3
Description
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);
}
Checklists
Acceptance criteria