You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2009/09/01 17:24:29 UTC

svn commit: r810096 - in /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core: RepositoryImpl.java state/SharedItemStateManager.java

Author: mreutegg
Date: Tue Sep  1 15:24:28 2009
New Revision: 810096

URL: http://svn.apache.org/viewvc?rev=810096&view=rev
Log:
JCR-2287: Mandatory jcr:activities node missing after upgrade

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java?rev=810096&r1=810095&r2=810096&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/RepositoryImpl.java Tue Sep  1 15:24:28 2009
@@ -145,12 +145,12 @@
     public static final NodeId VERSION_STORAGE_NODE_ID = NodeId.valueOf("deadbeef-face-babe-cafe-babecafebabe");
 
     /**
-     * hardcoded id of the "/jcr:system/jcr:versionStorage/jcr:activities" node
+     * hardcoded id of the "/jcr:system/jcr:activities" node
      */
     public static final NodeId ACTIVITIES_NODE_ID = NodeId.valueOf("deadbeef-face-babe-ac71-babecafebabe");
 
     /**
-     * hardcoded id of the "/jcr:system/jcr:versionStorage/jcr:configurations" node
+     * hardcoded id of the "/jcr:system/jcr:configurations" node
      */
     public static final NodeId CONFIGURATIONS_NODE_ID = NodeId.valueOf("deadbeef-face-babe-c04f-babecafebabe");
 

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java?rev=810096&r1=810095&r2=810096&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/SharedItemStateManager.java Tue Sep  1 15:24:28 2009
@@ -202,6 +202,7 @@
         if (!hasNonVirtualItemState(rootNodeId)) {
             createRootNodeState(rootNodeId, ntReg);
         }
+        ensureActivitiesNode();
     }
 
     /**
@@ -1315,6 +1316,28 @@
     }
 
     /**
+     * Makes sure child node entry for mandatory jcr:activities exist.
+     * Repositories upgraded from 1.x do not have it.
+     * <p/>
+     * This method assumes that the jcr:system node already exists.
+     *
+     * @throws ItemStateException if an error occurs while reading or writing to
+     *                            the persistence manager.
+     */
+    private void ensureActivitiesNode() throws ItemStateException {
+        NodeState jcrSystemState = (NodeState) getNonVirtualItemState(RepositoryImpl.SYSTEM_ROOT_NODE_ID);
+        if (!jcrSystemState.hasChildNodeEntry(RepositoryImpl.ACTIVITIES_NODE_ID)) {
+            jcrSystemState.addChildNodeEntry(NameConstants.JCR_ACTIVITIES, RepositoryImpl.ACTIVITIES_NODE_ID);
+
+            ChangeLog changeLog = new ChangeLog();
+            changeLog.modified(jcrSystemState);
+
+            persistMgr.store(changeLog);
+            changeLog.persisted();
+        }
+    }
+
+    /**
      * Returns the item state for the given id without considering virtual
      * item state providers.
      */