Author: mreutegg
Date: Tue Apr 22 12:09:09 2014
New Revision: 1589101

URL: http://svn.apache.org/r1589101
Log:
OAK-1753: Calling initializer after InitialContent.initialize() on a 
DocumentRootBuilder fails

Added:
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/InitializerTest.java
   (with props)
Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java?rev=1589101&r1=1589100&r2=1589101&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java
 Tue Apr 22 12:09:09 2014
@@ -211,7 +211,8 @@ class DocumentNodeState extends Abstract
                 if (b == null) {
                     throw new IllegalStateException("No branch for revision: " 
+ rev);
                 }
-                if (b.isHead(rev)) {
+                if (b.isHead(rev)
+                        && DocumentNodeStoreBranch.getCurrentBranch() != null) 
{
                     return new DocumentRootBuilder(this, store);
                 } else {
                     return new MemoryNodeBuilder(this);

Added: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/InitializerTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/InitializerTest.java?rev=1589101&view=auto
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/InitializerTest.java
 (added)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/InitializerTest.java
 Tue Apr 22 12:09:09 2014
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.plugins.document;
+
+import com.google.common.collect.ImmutableMap;
+
+import org.apache.jackrabbit.oak.api.CommitFailedException;
+import org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent;
+import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore;
+import org.apache.jackrabbit.oak.plugins.segment.memory.MemoryStore;
+import org.apache.jackrabbit.oak.security.SecurityProviderImpl;
+import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
+import org.apache.jackrabbit.oak.spi.commit.EmptyHook;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
+import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
+import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
+import org.apache.jackrabbit.oak.spi.state.NodeStore;
+import org.junit.Test;
+
+public class InitializerTest extends AbstractMongoConnectionTest {
+
+    @Test
+    public void testInitializerMongo() throws CommitFailedException {
+        NodeBuilder builder = mk.getNodeStore().getRoot().builder();
+        new InitialContent().initialize(builder);
+
+        SecurityProviderImpl provider = new SecurityProviderImpl(
+                
ConfigurationParameters.of(ImmutableMap.of(UserConfiguration.NAME,
+                        
ConfigurationParameters.of(ImmutableMap.of("anonymousId", "anonymous",
+                                "adminId", "admin",
+                                "usersPath", "/home/users",
+                                "groupsPath", "/home/groups",
+                                "defaultDepth", "1")))));
+        
provider.getConfiguration(UserConfiguration.class).getWorkspaceInitializer().initialize(
+                builder, "default");
+        builder.getNodeState();
+    }
+
+    @Test
+    public void testInitializerSegment() throws CommitFailedException {
+        NodeStore store = new SegmentNodeStore(new MemoryStore());
+
+        NodeBuilder builder = store.getRoot().builder();
+        new InitialContent().initialize(builder);
+
+        SecurityProviderImpl provider = new SecurityProviderImpl(
+                
ConfigurationParameters.of(ImmutableMap.of(UserConfiguration.NAME,
+                        
ConfigurationParameters.of(ImmutableMap.of("anonymousId", "anonymous",
+                                "adminId", "admin",
+                                "usersPath", "/home/users",
+                                "groupsPath", "/home/groups",
+                                "defaultDepth", "1")))));
+        
provider.getConfiguration(UserConfiguration.class).getWorkspaceInitializer().initialize(
+                builder, "default");
+        builder.getNodeState();
+    }
+
+    @Test
+    public void testInitializerMongoWithoutInitialContent() throws 
CommitFailedException {
+        NodeBuilder builder = mk.getNodeStore().getRoot().builder();
+        builder.child("foo");
+        mk.getNodeStore().merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY);
+
+        SecurityProviderImpl provider = new SecurityProviderImpl(
+                
ConfigurationParameters.of(ImmutableMap.of(UserConfiguration.NAME,
+                        
ConfigurationParameters.of(ImmutableMap.of("anonymousId", "anonymous",
+                                "adminId", "admin",
+                                "usersPath", "/home/users",
+                                "groupsPath", "/home/groups",
+                                "defaultDepth", "1")))));
+        
provider.getConfiguration(UserConfiguration.class).getWorkspaceInitializer().initialize(
+                builder, "default");
+        builder.getNodeState();
+    }
+}

Propchange: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/InitializerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to