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)