Author: stillalex
Date: Fri Sep  7 14:38:36 2018
New Revision: 1840303

URL: http://svn.apache.org/viewvc?rev=1840303&view=rev
Log:
OAK-7510 Run repository initializers with hooks


Modified:
    
jackrabbit/oak/trunk/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugConfiguration.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/InitialContent.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/OakInitializer.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NameValidator.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorProvider.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/InitialContentHelper.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexQueryTest.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorTest.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserProviderTest.java
    
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/LuceneOakRepositoryStub.java
    
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/FunctionIndexTest.java
    
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexAggregationTest.java
    
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexExclusionQueryTest.java
    
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java
    
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java

Modified: 
jackrabbit/oak/trunk/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugConfiguration.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugConfiguration.java?rev=1840303&r1=1840302&r2=1840303&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugConfiguration.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-authorization-cug/src/main/java/org/apache/jackrabbit/oak/spi/security/authorization/cug/impl/CugConfiguration.java
 Fri Sep  7 14:38:36 2018
@@ -41,13 +41,9 @@ import org.apache.jackrabbit.oak.api.Roo
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
-import org.apache.jackrabbit.oak.plugins.name.NamespaceEditorProvider;
 import org.apache.jackrabbit.oak.plugins.nodetype.ReadOnlyNodeTypeManager;
-import org.apache.jackrabbit.oak.plugins.nodetype.TypeEditorProvider;
 import org.apache.jackrabbit.oak.plugins.nodetype.write.NodeTypeRegistry;
 import org.apache.jackrabbit.oak.spi.commit.CommitHook;
-import org.apache.jackrabbit.oak.spi.commit.CompositeEditorProvider;
-import org.apache.jackrabbit.oak.spi.commit.EditorHook;
 import org.apache.jackrabbit.oak.spi.commit.MoveTracker;
 import org.apache.jackrabbit.oak.spi.commit.ValidatorProvider;
 import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
@@ -159,8 +155,7 @@ public class CugConfiguration extends Co
             NodeState base = builder.getNodeState();
             NodeStore store = new MemoryNodeStore(base);
 
-            Root root = getRootProvider().createSystemRoot(store,
-                    new EditorHook(new CompositeEditorProvider(new 
NamespaceEditorProvider(), new TypeEditorProvider())));
+            Root root = getRootProvider().createSystemRoot(store, null);
             if (registerCugNodeTypes(root)) {
                 NodeState target = store.getRoot();
                 target.compareAgainstBaseState(base, new ApplyDiff(builder));

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/InitialContent.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/InitialContent.java?rev=1840303&r1=1840302&r2=1840303&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/InitialContent.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/InitialContent.java
 Fri Sep  7 14:38:36 2018
@@ -16,8 +16,6 @@
  */
 package org.apache.jackrabbit.oak;
 
-import java.io.IOException;
-import java.io.InputStream;
 import static org.apache.jackrabbit.oak.api.Type.NAME;
 import static 
org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NODE_TYPE;
 import static 
org.apache.jackrabbit.oak.plugins.index.IndexConstants.TYPE_PROPERTY_NAME;
@@ -25,7 +23,8 @@ import static org.apache.jackrabbit.oak.
 import static 
org.apache.jackrabbit.oak.spi.version.VersionConstants.REP_VERSIONSTORAGE;
 import static 
org.apache.jackrabbit.oak.spi.version.VersionConstants.VERSION_STORE_INIT;
 
-import com.google.common.collect.ImmutableList;
+import java.io.IOException;
+import java.io.InputStream;
 
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Root;
@@ -34,22 +33,20 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.index.IndexUtils;
 import 
org.apache.jackrabbit.oak.plugins.index.counter.NodeCounterEditorProvider;
 import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
-import org.apache.jackrabbit.oak.plugins.name.NamespaceEditorProvider;
 import org.apache.jackrabbit.oak.plugins.name.Namespaces;
-import org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants;
-import org.apache.jackrabbit.oak.plugins.nodetype.TypeEditorProvider;
 import org.apache.jackrabbit.oak.plugins.nodetype.write.NodeTypeRegistry;
 import org.apache.jackrabbit.oak.plugins.tree.factories.RootFactory;
-import org.apache.jackrabbit.oak.spi.version.VersionConstants;
-import org.apache.jackrabbit.oak.spi.commit.CompositeEditorProvider;
-import org.apache.jackrabbit.oak.spi.commit.EditorHook;
 import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
+import org.apache.jackrabbit.oak.spi.nodetype.NodeTypeConstants;
 import org.apache.jackrabbit.oak.spi.state.ApplyDiff;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
+import org.apache.jackrabbit.oak.spi.version.VersionConstants;
 import org.jetbrains.annotations.NotNull;
 
+import com.google.common.collect.ImmutableList;
+
 /**
  * {@code InitialContent} implements a {@link RepositoryInitializer} the 
creates
  * the initial JCR/Oak repository structure. This includes creating
@@ -122,10 +119,7 @@ public class InitialContent implements R
         // squeeze node state before it is passed to store (OAK-2411)
         NodeState base = squeeze(builder.getNodeState());
         NodeStore store = new MemoryNodeStore(base);
-        registerBuiltIn(RootFactory.createSystemRoot(
-                store, new EditorHook(new CompositeEditorProvider(
-                        new NamespaceEditorProvider(),
-                        new TypeEditorProvider())), null, null, null));
+        registerBuiltIn(RootFactory.createSystemRoot(store, null, null, null, 
null));
         NodeState target = store.getRoot();
         target.compareAgainstBaseState(base, new ApplyDiff(builder));
     }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java?rev=1840303&r1=1840302&r2=1840303&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java 
(original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java 
Fri Sep  7 14:38:36 2018
@@ -109,6 +109,7 @@ import org.apache.jackrabbit.oak.spi.com
 import org.apache.jackrabbit.oak.spi.commit.EditorProvider;
 import org.apache.jackrabbit.oak.spi.commit.Observable;
 import org.apache.jackrabbit.oak.spi.commit.Observer;
+import org.apache.jackrabbit.oak.spi.commit.ResetCommitAttributeHook;
 import org.apache.jackrabbit.oak.spi.commit.ThreeWayConflictHandler;
 import org.apache.jackrabbit.oak.spi.lifecycle.CompositeInitializer;
 import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
@@ -504,19 +505,6 @@ public class Oak {
     @NotNull
     public Oak with(@NotNull SecurityProvider securityProvider) {
         this.securityProvider = checkNotNull(securityProvider);
-        if (securityProvider instanceof WhiteboardAware) {
-            ((WhiteboardAware) securityProvider).setWhiteboard(whiteboard);
-        }
-        for (SecurityConfiguration sc : securityProvider.getConfigurations()) {
-            RepositoryInitializer ri = sc.getRepositoryInitializer();
-            if (ri != RepositoryInitializer.DEFAULT) {
-                initializers.add(ri);
-            }
-
-            for (ThreeWayConflictHandler tch : sc.getConflictHandlers()) {
-                with(tch);
-            }
-        }
         return this;
     }
 
@@ -573,9 +561,6 @@ public class Oak {
     @NotNull
     public Oak with(@NotNull Whiteboard whiteboard) {
         this.whiteboard = checkNotNull(whiteboard);
-        if (securityProvider instanceof WhiteboardAware) {
-            ((WhiteboardAware) securityProvider).setWhiteboard(whiteboard);
-        }
         QueryEngineSettings queryEngineSettings = 
WhiteboardUtils.getService(whiteboard, QueryEngineSettings.class);
         if (queryEngineSettings != null) {
             this.queryEngineSettings = new 
AnnotatedQueryEngineSettings(queryEngineSettings);
@@ -678,20 +663,56 @@ public class Oak {
         return contentRepository;
     }
 
+    private void initialContent(IndexEditorProvider indexEditors, 
QueryIndexProvider indexProvider) {
+        List<CommitHook> initHooks = new ArrayList<CommitHook>(commitHooks);
+        initHooks.add(0, ResetCommitAttributeHook.INSTANCE);
+        initHooks.add(new EditorHook(new IndexUpdateProvider(indexEditors)));
+
+        CommitHook initHook = CompositeHook.compose(initHooks);
+        OakInitializer.initialize(store, new 
CompositeInitializer(initializers), initHook);
+
+        // FIXME: OAK-810 move to proper workspace initialization
+        // initialize default workspace
+        Iterable<WorkspaceInitializer> workspaceInitializers = 
Iterables.transform(securityProvider.getConfigurations(),
+                new Function<SecurityConfiguration, WorkspaceInitializer>() {
+                    @Override
+                    public WorkspaceInitializer apply(SecurityConfiguration 
sc) {
+                        WorkspaceInitializer wi = sc.getWorkspaceInitializer();
+                        if (wi instanceof QueryIndexProviderAware) {
+                            ((QueryIndexProviderAware) 
wi).setQueryIndexProvider(indexProvider);
+                        }
+                        return wi;
+                    }
+                });
+        OakInitializer.initialize(workspaceInitializers, store, 
defaultWorkspaceName, initHook);
+    }
+
     private ContentRepository createNewContentRepository() {
+        if (securityProvider instanceof WhiteboardAware) {
+            ((WhiteboardAware) securityProvider).setWhiteboard(whiteboard);
+        }
+        for (SecurityConfiguration sc : securityProvider.getConfigurations()) {
+            RepositoryInitializer ri = sc.getRepositoryInitializer();
+            if (ri != RepositoryInitializer.DEFAULT) {
+                initializers.add(ri);
+            }
+            for (ThreeWayConflictHandler tch : sc.getConflictHandlers()) {
+                with(tch);
+            }
+        }
+
         final RepoStateCheckHook repoStateCheckHook = new RepoStateCheckHook();
         final List<Registration> regs = Lists.newArrayList();
         regs.add(whiteboard.register(Executor.class, getExecutor(), 
Collections.emptyMap()));
 
         IndexEditorProvider indexEditors = 
CompositeIndexEditorProvider.compose(indexEditorProviders);
-        OakInitializer.initialize(store, new 
CompositeInitializer(initializers), indexEditors);
-
         QueryIndexProvider indexProvider = 
CompositeQueryIndexProvider.compose(queryIndexProviders);
 
+        // force serialize editors
+        withEditorHook();
         commitHooks.add(repoStateCheckHook);
-        List<CommitHook> initHooks = new ArrayList<CommitHook>(commitHooks);
-        initHooks.add(new EditorHook(CompositeEditorProvider
-                .compose(editorProviders)));
+
+        initialContent(indexEditors, indexProvider);
 
         if (asyncTasks != null) {
             IndexMBeanRegistration indexRegistration = new 
IndexMBeanRegistration(
@@ -726,26 +747,8 @@ public class Oak {
         regs.add(registerMBean(whiteboard, QueryStatsMBean.class,
                 queryEngineSettings.getQueryStats(), QueryStatsMBean.TYPE, 
"Oak Query Statistics (Extended)"));
 
-        // FIXME: OAK-810 move to proper workspace initialization
-        // initialize default workspace
-        Iterable<WorkspaceInitializer> workspaceInitializers =
-                Iterables.transform(securityProvider.getConfigurations(),
-                        new Function<SecurityConfiguration, 
WorkspaceInitializer>() {
-                            @Override
-                            public WorkspaceInitializer 
apply(SecurityConfiguration sc) {
-                                WorkspaceInitializer wi = 
sc.getWorkspaceInitializer();
-                                if (wi instanceof QueryIndexProviderAware){
-                                    ((QueryIndexProviderAware) 
wi).setQueryIndexProvider(indexProvider);
-                                }
-                                return wi;
-                            }
-                        });
-        OakInitializer.initialize(
-                workspaceInitializers, store, defaultWorkspaceName, 
indexEditors);
-
         // add index hooks later to prevent the OakInitializer to do excessive 
indexing
-        with(new IndexUpdateProvider(indexEditors, 
failOnMissingIndexProvider));
-        withEditorHook();
+        commitHooks.add(new EditorHook(new IndexUpdateProvider(indexEditors, 
failOnMissingIndexProvider)));
 
         // Register observer last to prevent sending events while initialising
         for (Observer observer : observers) {

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/OakInitializer.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/OakInitializer.java?rev=1840303&r1=1840302&r2=1840303&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/OakInitializer.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/OakInitializer.java
 Fri Sep  7 14:38:36 2018
@@ -22,14 +22,9 @@ import java.util.Map;
 
 import com.google.common.collect.ImmutableMap;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
-import org.apache.jackrabbit.oak.plugins.index.IndexEditorProvider;
-import org.apache.jackrabbit.oak.plugins.index.IndexUpdateProvider;
 import org.apache.jackrabbit.oak.spi.commit.CommitContext;
 import org.apache.jackrabbit.oak.spi.commit.CommitHook;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
-import org.apache.jackrabbit.oak.spi.commit.CompositeHook;
-import org.apache.jackrabbit.oak.spi.commit.EditorHook;
-import org.apache.jackrabbit.oak.spi.commit.ResetCommitAttributeHook;
 import org.apache.jackrabbit.oak.spi.commit.SimpleCommitContext;
 import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
 import org.apache.jackrabbit.oak.spi.lifecycle.WorkspaceInitializer;
@@ -46,11 +41,11 @@ public final class OakInitializer {
 
     public static void initialize(@NotNull NodeStore store,
                                   @NotNull RepositoryInitializer initializer,
-                                  @NotNull IndexEditorProvider indexEditor) {
+                                  @NotNull CommitHook hook) {
         try {
             NodeBuilder builder = store.getRoot().builder();
             initializer.initialize(builder);
-            store.merge(builder, createHook(indexEditor), createCommitInfo());
+            store.merge(builder, hook, createCommitInfo());
         } catch (CommitFailedException e) {
             throw new RuntimeException(e);
         }
@@ -59,24 +54,18 @@ public final class OakInitializer {
     public static void initialize(@NotNull Iterable<WorkspaceInitializer> 
initializer,
                                   @NotNull NodeStore store,
                                   @NotNull String workspaceName,
-                                  @NotNull IndexEditorProvider indexEditor) {
+                                  @NotNull CommitHook hook) {
         NodeBuilder builder = store.getRoot().builder();
         for (WorkspaceInitializer wspInit : initializer) {
             wspInit.initialize(builder, workspaceName);
         }
         try {
-            store.merge(builder, createHook(indexEditor), createCommitInfo());
+            store.merge(builder, hook, createCommitInfo());
         } catch (CommitFailedException e) {
             throw new RuntimeException(e);
         }
     }
 
-    private static CommitHook createHook(@NotNull IndexEditorProvider 
indexEditor) {
-        return new CompositeHook(
-                        ResetCommitAttributeHook.INSTANCE,
-                        new EditorHook(new IndexUpdateProvider(indexEditor)));
-    }
-
     private static CommitInfo createCommitInfo(){
         Map<String, Object> infoMap = ImmutableMap.<String, 
Object>of(CommitContext.NAME, new SimpleCommitContext());
         return new CommitInfo(SESSION_ID, null, infoMap);

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NameValidator.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NameValidator.java?rev=1840303&r1=1840302&r2=1840303&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NameValidator.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NameValidator.java
 Fri Sep  7 14:38:36 2018
@@ -28,19 +28,37 @@ import org.apache.jackrabbit.oak.api.Typ
 import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.spi.commit.DefaultValidator;
 import org.apache.jackrabbit.oak.spi.commit.Validator;
+import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * TODO document
  */
 class NameValidator extends DefaultValidator {
 
+    private static final Logger LOG = 
LoggerFactory.getLogger(NameValidator.class);
+
     private final NodeState namespaces;
     private final Set<String> prefixes;
 
-    NameValidator(NodeState namespaces) {
+    /**
+     * Flag controlling the strictness of the namespace checks. if {@code true}
+     * namespaces existence will not be checked, otherwise referencing a
+     * non-existent namespace will cause a {@link CommitFailedException}.
+     * 
+     * Used only for the case where lucene index definitions are registered via
+     * {@link RepositoryInitializer}s.
+     */
+    private final boolean initPhase;
+
+    private final boolean strictInitialNSChecks = 
Boolean.getBoolean("oak.strictInitialNSChecks");
+
+    NameValidator(NodeState namespaces, boolean initPhase) {
         this.namespaces = namespaces;
         this.prefixes = 
newHashSet(namespaces.getChildNode(REP_NSDATA).getStrings(REP_PREFIXES));
+        this.initPhase = initPhase;
     }
 
     // escape non-printable non-USASCII characters using standard Java escapes
@@ -71,10 +89,7 @@ class NameValidator extends DefaultValid
         int colon = name.indexOf(':');
         if (colon > 0) {
             String prefix = name.substring(0, colon);
-            if (prefix.isEmpty() || !contains(prefixes, namespaces, prefix)) {
-                throw new CommitFailedException(
-                        CommitFailedException.NAME, 1, "Invalid namespace 
prefix("+prefixes+"): " + prefix);
-            }
+            checkPrefix(prefix);
         }
 
         String local = name.substring(colon + 1);
@@ -99,6 +114,17 @@ class NameValidator extends DefaultValid
         }
     }
 
+    private void checkPrefix(String prefix) throws CommitFailedException {
+        if (prefix.isEmpty() || !contains(prefixes, namespaces, prefix)) {
+            String msg = "Invalid namespace prefix(" + prefixes + "): " + 
prefix;
+            if (initPhase && !strictInitialNSChecks) {
+                LOG.warn(msg);
+                return;
+            }
+            throw new CommitFailedException(CommitFailedException.NAME, 1, 
msg);
+        }
+    }
+
     private static boolean contains(Set<String> prefixes, NodeState 
namespaces, String prefix) {
         return prefixes.contains(prefix) || 
Namespaces.collectNamespaces(namespaces.getProperties()).containsKey(prefix);
     }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorProvider.java?rev=1840303&r1=1840302&r2=1840303&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorProvider.java
 Fri Sep  7 14:38:36 2018
@@ -16,6 +16,9 @@
  */
 package org.apache.jackrabbit.oak.plugins.name;
 
+import static org.apache.jackrabbit.JcrConstants.JCR_SYSTEM;
+import static 
org.apache.jackrabbit.oak.spi.namespace.NamespaceConstants.REP_NAMESPACES;
+
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.EditorProvider;
 import org.apache.jackrabbit.oak.spi.commit.Validator;
@@ -23,9 +26,6 @@ import org.apache.jackrabbit.oak.spi.com
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.osgi.service.component.annotations.Component;
 
-import static org.apache.jackrabbit.JcrConstants.JCR_SYSTEM;
-import static 
org.apache.jackrabbit.oak.spi.namespace.NamespaceConstants.REP_NAMESPACES;
-
 /**
  * Validator service that checks that all node and property names as well
  * as any name values are syntactically valid and that any namespace prefixes
@@ -37,9 +37,10 @@ public class NameValidatorProvider exten
     @Override
     public Validator getRootValidator(
             NodeState before, NodeState after, CommitInfo info) {
+        boolean initPhase = !before.hasChildNode(JCR_SYSTEM);
         return new NameValidator(after
                 .getChildNode(JCR_SYSTEM)
-                .getChildNode(REP_NAMESPACES));
+                .getChildNode(REP_NAMESPACES), initPhase);
     }
 
 }

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/InitialContentHelper.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/InitialContentHelper.java?rev=1840303&r1=1840302&r2=1840303&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/InitialContentHelper.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/InitialContentHelper.java
 Fri Sep  7 14:38:36 2018
@@ -16,11 +16,13 @@
  */
 package org.apache.jackrabbit.oak;
 
-import static 
org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.EMPTY_NODE;
-import static 
org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.squeeze;
-
-import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
+import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
+import org.apache.jackrabbit.oak.plugins.name.NamespaceEditorProvider;
+import org.apache.jackrabbit.oak.plugins.nodetype.TypeEditorProvider;
+import org.apache.jackrabbit.oak.spi.commit.CompositeEditorProvider;
+import org.apache.jackrabbit.oak.spi.commit.EditorHook;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.apache.jackrabbit.oak.spi.state.NodeStore;
 
 /**
  * {@code InitialContent} helper for tests
@@ -30,9 +32,11 @@ public class InitialContentHelper {
     public static final NodeState INITIAL_CONTENT = createInitialContent();
 
     private static NodeState createInitialContent() {
-        NodeBuilder builder = EMPTY_NODE.builder();
-        new InitialContent().initialize(builder);
-        return squeeze(builder.getNodeState());
+        NodeStore store = new MemoryNodeStore();
+        EditorHook hook = new EditorHook(
+                new CompositeEditorProvider(new NamespaceEditorProvider(), new 
TypeEditorProvider()));
+        OakInitializer.initialize(store, new InitialContent(), hook);
+        return store.getRoot();
     }
 
     private InitialContentHelper() {}

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexQueryTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexQueryTest.java?rev=1840303&r1=1840302&r2=1840303&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexQueryTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/property/PropertyIndexQueryTest.java
 Fri Sep  7 14:38:36 2018
@@ -32,8 +32,10 @@ import org.apache.jackrabbit.oak.api.Pro
 import org.apache.jackrabbit.oak.api.ResultRow;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.InitialContent;
+import org.apache.jackrabbit.oak.InitialContentHelper;
 import org.apache.jackrabbit.oak.query.AbstractQueryTest;
 import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
+import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
 import org.apache.jackrabbit.oak.plugins.memory.PropertyValues;
 import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
@@ -62,7 +64,7 @@ public class PropertyIndexQueryTest exte
      */
     @NotNull
     Oak getOakRepositoryInstance() {
-        return new Oak().with(new InitialContent())
+        return new Oak(new 
MemoryNodeStore(InitialContentHelper.INITIAL_CONTENT))
             .with(new OpenSecurityProvider())
             .with(new PropertyIndexProvider())
             .with(new PropertyIndexEditorProvider());

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorTest.java?rev=1840303&r1=1840302&r2=1840303&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/name/NameValidatorTest.java
 Fri Sep  7 14:38:36 2018
@@ -32,7 +32,7 @@ import org.junit.Test;
 
 public class NameValidatorTest {
 
-    private final Validator validator = new 
NameValidator(newNamespaceNode("valid"));
+    private final Validator validator = new 
NameValidator(newNamespaceNode("valid"), false);
 
     @Test(expected = CommitFailedException.class)
     public void testCurrentPath() throws CommitFailedException {
@@ -49,8 +49,15 @@ public class NameValidatorTest {
         validator.childNodeAdded(":name", EMPTY_NODE);
     }
 
+    @Test
+    public void testInvalidPrefixInitial() throws CommitFailedException {
+        Validator validator = new NameValidator(newNamespaceNode("valid"), 
true);
+        validator.childNodeAdded("invalid:name", EMPTY_NODE);
+    }
+
     @Test(expected = CommitFailedException.class)
     public void testInvalidPrefix() throws CommitFailedException {
+        Validator validator = new NameValidator(newNamespaceNode("valid"), 
false);
         validator.childNodeAdded("invalid:name", EMPTY_NODE);
     }
 
@@ -120,7 +127,7 @@ public class NameValidatorTest {
         NodeBuilder builder = newNamespaceNode("valid").builder();
         builder.setProperty("testNVT", "testuri");
 
-        Validator validator = new NameValidator(builder.getNodeState());
+        Validator validator = new NameValidator(builder.getNodeState(), false);
         validator.childNodeAdded("testNVT:test", EMPTY_NODE);
     }
 

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserProviderTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserProviderTest.java?rev=1840303&r1=1840302&r2=1840303&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserProviderTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserProviderTest.java
 Fri Sep  7 14:38:36 2018
@@ -29,8 +29,10 @@ import org.apache.jackrabbit.oak.api.Roo
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.namepath.NamePathMapper;
 import 
org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditorProvider;
+import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
 import org.apache.jackrabbit.oak.plugins.nodetype.ReadOnlyNodeTypeManager;
 import org.apache.jackrabbit.oak.InitialContent;
+import org.apache.jackrabbit.oak.InitialContentHelper;
 import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
 import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider;
 import org.apache.jackrabbit.oak.spi.security.user.AuthorizableNodeName;
@@ -42,9 +44,9 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertNotNull;
-import static junit.framework.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 /**
@@ -64,7 +66,7 @@ public class UserProviderTest {
 
     @Before
     public void setUp() throws Exception {
-        root = new Oak()
+        root = new Oak(new 
MemoryNodeStore(InitialContentHelper.INITIAL_CONTENT))
                 .with(new OpenSecurityProvider())
                 .with(new InitialContent())
                 .with(new PropertyIndexEditorProvider())

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/LuceneOakRepositoryStub.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/LuceneOakRepositoryStub.java?rev=1840303&r1=1840302&r2=1840303&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/LuceneOakRepositoryStub.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/LuceneOakRepositoryStub.java
 Fri Sep  7 14:38:36 2018
@@ -125,7 +125,7 @@ public class LuceneOakRepositoryStub ext
         }
         
         private static void functionBasedIndex(NodeBuilder props, String 
function) {
-            props.child(function).
+            props.child(function.replace('[', '_').replace(']', '_')).
                 setProperty(JCR_PRIMARYTYPE, "nt:unstructured", NAME).
                 setProperty(LuceneIndexConstants.PROP_FUNCTION, function);
         }

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/FunctionIndexTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/FunctionIndexTest.java?rev=1840303&r1=1840302&r2=1840303&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/FunctionIndexTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/FunctionIndexTest.java
 Fri Sep  7 14:38:36 2018
@@ -47,7 +47,7 @@ import org.apache.jackrabbit.oak.plugins
 import 
org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditorProvider;
 import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
 import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
-import org.apache.jackrabbit.oak.InitialContent;
+import org.apache.jackrabbit.oak.InitialContentHelper;
 import org.apache.jackrabbit.oak.query.AbstractQueryTest;
 import org.apache.jackrabbit.oak.spi.commit.Observer;
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
@@ -68,9 +68,8 @@ public class FunctionIndexTest extends A
     protected ContentRepository createRepository() {
         editorProvider = new LuceneIndexEditorProvider();
         LuceneIndexProvider provider = new LuceneIndexProvider();
-        nodeStore = new MemoryNodeStore();
+        nodeStore = new MemoryNodeStore(InitialContentHelper.INITIAL_CONTENT);
         return new Oak(nodeStore)
-                .with(new InitialContent())
                 .with(new OpenSecurityProvider())
                 .with((QueryIndexProvider) provider)
                 .with((Observer) provider)

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexAggregationTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexAggregationTest.java?rev=1840303&r1=1840302&r2=1840303&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexAggregationTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexAggregationTest.java
 Fri Sep  7 14:38:36 2018
@@ -35,6 +35,7 @@ import org.apache.jackrabbit.oak.api.Tre
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
 import org.apache.jackrabbit.oak.plugins.index.aggregate.SimpleNodeAggregator;
+import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
 
 import static 
org.apache.jackrabbit.oak.plugins.index.lucene.TestUtil.newNodeAggregator;
 import static org.apache.jackrabbit.oak.plugins.index.lucene.TestUtil.useV2;
@@ -42,7 +43,7 @@ import static org.apache.jackrabbit.oak.
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
-import org.apache.jackrabbit.oak.InitialContent;
+import org.apache.jackrabbit.oak.InitialContentHelper;
 import org.apache.jackrabbit.oak.query.AbstractQueryTest;
 import org.apache.jackrabbit.oak.spi.commit.Observer;
 import org.apache.jackrabbit.oak.spi.query.QueryIndex;
@@ -74,8 +75,7 @@ public class LuceneIndexAggregationTest
     @Override
     protected ContentRepository createRepository() {
         LowCostLuceneIndexProvider provider = new LowCostLuceneIndexProvider();
-        return new Oak()
-                .with(new InitialContent())
+        return new Oak(new 
MemoryNodeStore(InitialContentHelper.INITIAL_CONTENT))
                 .with(new OpenSecurityProvider())
                 .with((QueryIndexProvider)provider.with(getNodeAggregator()))
                 .with((Observer) provider)

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexExclusionQueryTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexExclusionQueryTest.java?rev=1840303&r1=1840302&r2=1840303&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexExclusionQueryTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexExclusionQueryTest.java
 Fri Sep  7 14:38:36 2018
@@ -34,7 +34,8 @@ import java.util.List;
 import org.apache.jackrabbit.oak.Oak;
 import org.apache.jackrabbit.oak.api.ContentRepository;
 import org.apache.jackrabbit.oak.api.Tree;
-import org.apache.jackrabbit.oak.InitialContent;
+import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
+import org.apache.jackrabbit.oak.InitialContentHelper;
 import org.apache.jackrabbit.oak.query.AbstractQueryTest;
 import org.apache.jackrabbit.oak.spi.commit.Observer;
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
@@ -61,7 +62,7 @@ public class LuceneIndexExclusionQueryTe
     @Override
     protected ContentRepository createRepository() {
         LowCostLuceneIndexProvider provider = new LowCostLuceneIndexProvider();
-        return new Oak().with(new InitialContent())
+        return new Oak(new 
MemoryNodeStore(InitialContentHelper.INITIAL_CONTENT))
                 .with(new OpenSecurityProvider())
                 .with((QueryIndexProvider) provider)
                 .with((Observer) provider)

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java?rev=1840303&r1=1840302&r2=1840303&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexQueryTest.java
 Fri Sep  7 14:38:36 2018
@@ -27,7 +27,8 @@ import org.apache.jackrabbit.oak.api.Con
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.api.Type;
-import org.apache.jackrabbit.oak.InitialContent;
+import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
+import org.apache.jackrabbit.oak.InitialContentHelper;
 import org.apache.jackrabbit.oak.query.AbstractQueryTest;
 import org.apache.jackrabbit.oak.spi.commit.Observer;
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
@@ -81,7 +82,7 @@ public class LuceneIndexQueryTest extend
 
     Oak getOakRepo() {
         LowCostLuceneIndexProvider provider = new LowCostLuceneIndexProvider();
-        return new Oak().with(new InitialContent())
+        return new Oak(new 
MemoryNodeStore(InitialContentHelper.INITIAL_CONTENT))
             .with(new OpenSecurityProvider())
             .with((QueryIndexProvider) provider)
             .with((Observer) provider)

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java?rev=1840303&r1=1840302&r2=1840303&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java
 Fri Sep  7 14:38:36 2018
@@ -80,6 +80,7 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
 import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
 import org.apache.jackrabbit.oak.plugins.nodetype.TypeEditorProvider;
+import org.apache.jackrabbit.oak.InitialContentHelper;
 import org.apache.jackrabbit.oak.plugins.nodetype.write.NodeTypeRegistry;
 import org.apache.jackrabbit.oak.query.AbstractQueryTest;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
@@ -193,9 +194,8 @@ public class LucenePropertyIndexTest ext
         editorProvider = new LuceneIndexEditorProvider(copier, new 
ExtractedTextCache(10* FileUtils.ONE_MB, 100));
         provider = new LuceneIndexProvider(copier);
         queryIndexProvider = new ResultCountingIndexProvider(provider);
-        nodeStore = new MemoryNodeStore();
+        nodeStore = new MemoryNodeStore(InitialContentHelper.INITIAL_CONTENT);
         return new Oak(nodeStore)
-                .with(new InitialContent())
                 .with(new OpenSecurityProvider())
                 .with(queryIndexProvider)
                 .with((Observer) provider)


Reply via email to