You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by mr...@apache.org on 2013/05/07 11:39:13 UTC
svn commit: r1479831 - in /jackrabbit/oak/trunk:
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/ oak-jcr/
oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/
oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/
oak-jcr/src/te...
Author: mreutegg
Date: Tue May 7 09:39:12 2013
New Revision: 1479831
URL: http://svn.apache.org/r1479831
Log:
OAK-168: Basic JCR VersionManager support
OAK-601: Node#getVersionHistory fails with UnsupportedRepositoryOperationException
OAK-602: VersionManager is never updated
- Resume work on JCR versioning
- Enable tests for OAK-601 and OAK-602 again and remove workarounds in tests
- Take protected status into account in Node.canAddMixin()
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/ReadWriteVersionManager.java
jackrabbit/oak/trunk/oak-jcr/pom.xml
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Descriptors.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionManagerImpl.java
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/version/VersionHistoryTest.java
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/version/VersionablePathsTest.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/ReadWriteVersionManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/ReadWriteVersionManager.java?rev=1479831&r1=1479830&r2=1479831&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/ReadWriteVersionManager.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/version/ReadWriteVersionManager.java Tue May 7 09:39:12 2013
@@ -66,6 +66,7 @@ class ReadWriteVersionManager extends Re
private final NodeBuilder versionStorageNode;
private final NodeBuilder workspaceRoot;
+ private ReadOnlyNodeTypeManager ntMgr;
ReadWriteVersionManager(NodeBuilder versionStorageNode,
NodeBuilder workspaceRoot) {
@@ -88,8 +89,11 @@ class ReadWriteVersionManager extends Re
@Nonnull
@Override
protected ReadOnlyNodeTypeManager getNodeTypeManager() {
- return ReadOnlyNodeTypeManager.getInstance(
- getWorkspaceRoot(), NamePathMapper.DEFAULT);
+ if (ntMgr == null) {
+ ntMgr = ReadOnlyNodeTypeManager.getInstance(
+ getWorkspaceRoot(), NamePathMapper.DEFAULT);
+ }
+ return ntMgr;
}
/**
Modified: jackrabbit/oak/trunk/oak-jcr/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/pom.xml?rev=1479831&r1=1479830&r2=1479831&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-jcr/pom.xml Tue May 7 09:39:12 2013
@@ -237,6 +237,43 @@
org.apache.jackrabbit.test.api.observation.AddEventListenerTest#testUUID
org.apache.jackrabbit.test.api.observation.LockingTest#testAddLockToNode
org.apache.jackrabbit.test.api.observation.LockingTest#testRemoveLockFromNode
+ <!-- Versioning -->
+ org.apache.jackrabbit.test.api.version.VersionTest#testGetUUID
+ org.apache.jackrabbit.test.api.version.VersionTest#testRestore
+ org.apache.jackrabbit.test.api.version.VersionTest#testUnlock
+ org.apache.jackrabbit.test.api.version.VersionTest#testUnlockJcr2
+ org.apache.jackrabbit.test.api.version.VersionTest#testUpdate
+ org.apache.jackrabbit.test.api.version.VersionTest#testGetCorrespondingNodePath
+ org.apache.jackrabbit.test.api.version.VersionTest#testGetLock
+ org.apache.jackrabbit.test.api.version.VersionTest#testGetLockJcr2
+ org.apache.jackrabbit.test.api.version.VersionTest#testLock
+ org.apache.jackrabbit.test.api.version.VersionTest#testLockJcr2
+ org.apache.jackrabbit.test.api.version.VersionTest#testMerge
+ org.apache.jackrabbit.test.api.version.VersionHistoryTest
+ org.apache.jackrabbit.test.api.version.VersionLabelTest
+ org.apache.jackrabbit.test.api.version.CheckinTest
+ org.apache.jackrabbit.test.api.version.CopyTest
+ org.apache.jackrabbit.test.api.version.RestoreTest
+ org.apache.jackrabbit.test.api.version.WorkspaceRestoreTest
+ org.apache.jackrabbit.test.api.version.OnParentVersionAbortTest
+ org.apache.jackrabbit.test.api.version.OnParentVersionComputeTest
+ org.apache.jackrabbit.test.api.version.OnParentVersionCopyTest
+ org.apache.jackrabbit.test.api.version.OnParentVersionIgnoreTest
+ org.apache.jackrabbit.test.api.version.OnParentVersionInitializeTest
+ org.apache.jackrabbit.test.api.version.GetPredecessorsTest
+ org.apache.jackrabbit.test.api.version.GetContainingHistoryTest
+ org.apache.jackrabbit.test.api.version.GetVersionableUUIDTest
+ org.apache.jackrabbit.test.api.version.SessionMoveVersionExceptionTest
+ org.apache.jackrabbit.test.api.version.WorkspaceMoveVersionExceptionTest
+ org.apache.jackrabbit.test.api.version.MergeCancelMergeTest
+ org.apache.jackrabbit.test.api.version.MergeCheckedoutSubNodeTest
+ org.apache.jackrabbit.test.api.version.MergeDoneMergeTest
+ org.apache.jackrabbit.test.api.version.MergeNodeIteratorTest
+ org.apache.jackrabbit.test.api.version.MergeNodeTest
+ org.apache.jackrabbit.test.api.version.MergeShallowTest
+ org.apache.jackrabbit.test.api.version.MergeNonVersionableSubNodeTest
+ org.apache.jackrabbit.test.api.version.MergeSubNodeTest
+
org.apache.jackrabbit.oak.jcr.security.user.GroupTest#testCyclicGroups2 <!-- OAK-615 -->
org.apache.jackrabbit.oak.jcr.security.authorization.AccessControlImporterTest#testImportACLRemoveACE <!-- OAK-414 -->
org.apache.jackrabbit.oak.jcr.security.authorization.AccessControlImporterTest#testImportACLUnknown <!-- OAK-414 -->
@@ -253,9 +290,6 @@
org.apache.jackrabbit.oak.jcr.security.user.UserImportTest#testImportInvalidImpersonationAbort <!-- OAK-414 -->
org.apache.jackrabbit.oak.jcr.security.user.UserImportTest#testImportGroupMembersFromNodesBestEffort <!-- OAK-414 -->
org.apache.jackrabbit.oak.jcr.security.user.MemberNodeImportTest <!-- OAK-414, OAK-482 -->
- org.apache.jackrabbit.oak.jcr.version.VersionHistoryTest#testGetVersionHistoryFromNode <!-- OAK-601 -->
- org.apache.jackrabbit.oak.jcr.version.VersionHistoryTest#testGetVersionHistory <!-- OAK-602 -->
- org.apache.jackrabbit.oak.jcr.version.VersionHistoryTest#testGetVersionHistoryAfterMove <!-- OAK-602 -->
org.apache.jackrabbit.oak.jcr.security.authorization.AccessControlManagementTest#testRemoveMixin <!-- OAK-767 -->
org.apache.jackrabbit.oak.jcr.security.authorization.WriteTest#testRemoveNodeWithInvisibleNonRemovableChild <!-- OAK-51 -->
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Descriptors.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Descriptors.java?rev=1479831&r1=1479830&r2=1479831&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Descriptors.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/Descriptors.java Tue May 7 09:39:12 2013
@@ -195,7 +195,7 @@ public class Descriptors {
trueValue, true, true));
put(new Descriptor(
OPTION_VERSIONING_SUPPORTED,
- falseValue, true, true));
+ trueValue, true, true));
put(new Descriptor(
OPTION_WORKSPACE_MANAGEMENT_SUPPORTED,
trueValue, true, true));
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java?rev=1479831&r1=1479830&r2=1479831&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java Tue May 7 09:39:12 2013
@@ -881,7 +881,10 @@ public class NodeImpl<T extends NodeDele
@Override
public Boolean perform() throws RepositoryException {
PropertyState prop = PropertyStates.createProperty(JCR_MIXINTYPES, singleton(oakTypeName), NAMES);
- return sessionContext.getAccessManager().hasPermissions(dlg.getTree(), prop, Permissions.NODE_TYPE_MANAGEMENT) && dlg.canAddMixin(oakTypeName);
+ return sessionContext.getAccessManager().hasPermissions(
+ dlg.getTree(), prop, Permissions.NODE_TYPE_MANAGEMENT)
+ && !dlg.isProtected()
+ && dlg.canAddMixin(oakTypeName);
}
});
}
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionManagerImpl.java?rev=1479831&r1=1479830&r2=1479831&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionManagerImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/version/VersionManagerImpl.java Tue May 7 09:39:12 2013
@@ -203,9 +203,6 @@ public class VersionManagerImpl implemen
@Override
public void checkout(final String absPath) throws RepositoryException {
- if (true) {
- TODO.unimplemented().doNothing();
- }
final SessionDelegate sessionDelegate = sessionContext.getSessionDelegate();
sessionDelegate.perform(new SessionOperation<Void>() {
@Override
@@ -226,9 +223,6 @@ public class VersionManagerImpl implemen
@Override
public Version checkin(final String absPath) throws RepositoryException {
- if (true) {
- return TODO.dummyImplementation().returnValue(getBaseVersion(absPath));
- }
final SessionDelegate sessionDelegate = sessionContext.getSessionDelegate();
return sessionDelegate.perform(new SessionOperation<Version>() {
@Override
Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/version/VersionHistoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/version/VersionHistoryTest.java?rev=1479831&r1=1479830&r2=1479831&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/version/VersionHistoryTest.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/version/VersionHistoryTest.java Tue May 7 09:39:12 2013
@@ -23,11 +23,9 @@ import javax.jcr.version.VersionManager;
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.test.AbstractJCRTest;
-import org.junit.Ignore;
-import org.junit.Test;
/**
- * VersionHistoryTest... TODO
+ * Contains {@link VersionHistory} related tests.
*/
public class VersionHistoryTest extends AbstractJCRTest {
@@ -40,55 +38,56 @@ public class VersionHistoryTest extends
versionManager = superuser.getWorkspace().getVersionManager();
}
- @Test
public void testJcrVersionHistoryProperty() throws Exception {
- testRootNode.addMixin(JcrConstants.MIX_VERSIONABLE);
+ Node n = testRootNode.addNode(nodeName1, testNodeType);
+ n.addMixin(JcrConstants.MIX_VERSIONABLE);
superuser.save();
- assertTrue(testRootNode.hasProperty(JcrConstants.JCR_VERSIONHISTORY));
+ assertTrue(n.hasProperty(JcrConstants.JCR_VERSIONHISTORY));
}
- @Ignore("OAK-601")
- @Test
public void testGetVersionHistoryFromNode() throws Exception {
- testRootNode.addMixin(JcrConstants.MIX_VERSIONABLE);
+ Node n = testRootNode.addNode(nodeName1, testNodeType);
+ n.addMixin(JcrConstants.MIX_VERSIONABLE);
superuser.save();
- VersionHistory vh = testRootNode.getVersionHistory();
+ VersionHistory vh = n.getVersionHistory();
+ assertNotNull(vh);
}
- @Ignore("OAK-602")
- @Test
public void testGetVersionHistory() throws Exception {
- testRootNode.addMixin(JcrConstants.MIX_VERSIONABLE);
+ Node n = testRootNode.addNode(nodeName1, testNodeType);
+ n.addMixin(JcrConstants.MIX_VERSIONABLE);
superuser.save();
- VersionHistory vh = versionManager.getVersionHistory(testRoot);
+ VersionHistory vh = versionManager.getVersionHistory(n.getPath());
+ assertNotNull(vh);
}
- @Test
public void testGetVersionHistory2() throws Exception {
- testRootNode.addMixin(JcrConstants.MIX_VERSIONABLE);
+ Node n = testRootNode.addNode(nodeName1, testNodeType);
+ n.addMixin(JcrConstants.MIX_VERSIONABLE);
superuser.save();
Session s = getHelper().getSuperuserSession();
try {
- VersionHistory vh = s.getWorkspace().getVersionManager().getVersionHistory(testRoot);
+ VersionHistory vh = s.getWorkspace().getVersionManager().getVersionHistory(n.getPath());
+ assertNotNull(vh);
} finally {
s.logout();
}
}
- @Test
public void testGetVersionHistoryNodeByUUID() throws Exception {
- testRootNode.addMixin(JcrConstants.MIX_VERSIONABLE);
+ Node n = testRootNode.addNode(nodeName1, testNodeType);
+ n.addMixin(JcrConstants.MIX_VERSIONABLE);
superuser.save();
- Node vh = superuser.getNodeByUUID(testRootNode.getProperty(JcrConstants.JCR_VERSIONHISTORY).getString());
+ Node vh = superuser.getNodeByUUID(n.getProperty(
+ JcrConstants.JCR_VERSIONHISTORY).getString());
+ assertNotNull(vh);
}
- @Ignore("OAK-602")
- @Test
public void testGetVersionHistoryAfterMove() throws Exception {
Node node1 = testRootNode.addNode(nodeName1);
node1.addMixin(JcrConstants.MIX_VERSIONABLE);
Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/version/VersionablePathsTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/version/VersionablePathsTest.java?rev=1479831&r1=1479830&r2=1479831&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/version/VersionablePathsTest.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/version/VersionablePathsTest.java Tue May 7 09:39:12 2013
@@ -18,37 +18,20 @@ package org.apache.jackrabbit.oak.jcr.ve
import javax.jcr.Node;
import javax.jcr.RepositoryException;
-import javax.jcr.Session;
import javax.jcr.version.VersionManager;
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.test.AbstractJCRTest;
-import org.junit.Test;
/**
* VersionablePathsTest... TODO
- * <p/>
- * FIXME: versionablePath only adjusted AFTER move/rename has been persisted.
*/
public class VersionablePathsTest extends AbstractJCRTest {
- // FIXME: shouldn't be needed (OAK-602)
- private Session tmpSession;
-
- @Override
- protected void tearDown() throws Exception {
- if (tmpSession != null) {
- tmpSession.logout();
- }
- super.tearDown();
- }
-
private VersionManager getVersionManager() throws RepositoryException {
- tmpSession = getHelper().getSuperuserSession();
- return tmpSession.getWorkspace().getVersionManager();
+ return superuser.getWorkspace().getVersionManager();
}
- @Test
public void testVersionablePaths() throws Exception {
testRootNode.addMixin(JcrConstants.MIX_VERSIONABLE);
superuser.save();
@@ -61,7 +44,6 @@ public class VersionablePathsTest extend
assertEquals(testRootNode.getPath(), vh.getProperty(workspaceName).getString());
}
- @Test
public void testVersionablePathsAfterRename() throws Exception {
Node node1 = testRootNode.addNode(nodeName1);
node1.addMixin(JcrConstants.MIX_VERSIONABLE);
@@ -71,8 +53,6 @@ public class VersionablePathsTest extend
superuser.move(node1.getPath(), destPath);
superuser.save();
- // FIXME: test node is stale after move
- node1 = testRootNode.getNode(nodeName2);
Node vh = getVersionManager().getVersionHistory(node1.getPath());
assertTrue(vh.isNodeType("rep:VersionablePaths"));
String workspaceName = superuser.getWorkspace().getName();
@@ -80,7 +60,6 @@ public class VersionablePathsTest extend
assertEquals(node1.getPath(), vh.getProperty(workspaceName).getString());
}
- @Test
public void testVersionablePathsAfterMove() throws Exception {
Node node1 = testRootNode.addNode(nodeName1);
Node node2 = testRootNode.addNode(nodeName2);
@@ -91,8 +70,6 @@ public class VersionablePathsTest extend
superuser.move(node1.getPath(), destPath);
superuser.save();
- // FIXME: node1 is stale after move
- node1 = node2.getNode(nodeName1);
assertEquals(destPath, node1.getPath());
Node vh = getVersionManager().getVersionHistory(node1.getPath());
@@ -102,7 +79,6 @@ public class VersionablePathsTest extend
assertEquals(node1.getPath(), vh.getProperty(workspaceName).getString());
}
- @Test
public void testVersionablePathsAfterParentMove() throws Exception {
Node node1 = testRootNode.addNode(nodeName1);
Node node3 = node1.addNode(nodeName3);
@@ -114,8 +90,6 @@ public class VersionablePathsTest extend
superuser.move(node1.getPath(), destPath);
superuser.save();
- // FIXME: node3 is stale after move
- node3 = node2.getNode(nodeName1 + '/' + nodeName3);
assertEquals(destPath + '/' + nodeName3, node3.getPath());
Node vh = getVersionManager().getVersionHistory(node3.getPath());