You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by tr...@apache.org on 2004/10/07 12:53:19 UTC

svn commit: rev 53957 - incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version

Author: tripod
Date: Thu Oct  7 03:53:18 2004
New Revision: 53957

Modified:
   incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/VersionManager.java
Log:
create deeper path for version history

Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/VersionManager.java
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/VersionManager.java	(original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/VersionManager.java	Thu Oct  7 03:53:18 2004
@@ -162,14 +162,30 @@
     public VersionHistory createVersionHistory(NodeImpl node)
             throws RepositoryException {
 
-        // check if history already exists
-        QName historyNodeName = new QName(NamespaceRegistryImpl.NS_DEFAULT_URI, node.getUUID());
-        if (historyRoot.hasNode(historyNodeName)) {
-            historyRoot.removeNode(historyNodeName);
+        // create deep path
+        String uuid = node.getUUID();
+        PersistentNode parent = historyRoot;
+        QName historyNodeName = new QName(NamespaceRegistryImpl.NS_DEFAULT_URI, uuid.substring(0, 2));
+        if (!parent.hasNode(historyNodeName)) {
+            parent = parent.addNode(historyNodeName, NodeTypeRegistry.NT_UNSTRUCTURED);
+        } else {
+            parent = parent.getNode(historyNodeName, 1);
         }
+        historyNodeName = new QName(NamespaceRegistryImpl.NS_DEFAULT_URI, uuid.substring(2, 4));
+        if (!parent.hasNode(historyNodeName)) {
+            parent = parent.addNode(historyNodeName, NodeTypeRegistry.NT_UNSTRUCTURED);
+        } else {
+            parent = parent.getNode(historyNodeName, 1);
+        }
+
+        historyNodeName = new QName(NamespaceRegistryImpl.NS_DEFAULT_URI, uuid.substring(4));
+        if (parent.hasNode(historyNodeName)) {
+            parent.removeNode(historyNodeName);
+        }
+        historyRoot.store();
 
         // create new history node in the persistent state
-        InternalVersionHistory history = InternalVersionHistory.create(historyRoot, historyNodeName);
+        InternalVersionHistory history = InternalVersionHistory.create(parent, historyNodeName);
         return new VersionHistoryImpl(node.getSession(), history);
     }