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