diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NamespaceEditor.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NamespaceEditor.java index 886c303549..4f609dacf9 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NamespaceEditor.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/name/NamespaceEditor.java @@ -74,7 +74,7 @@ class NamespaceEditor extends DefaultEditor { throw new CommitFailedException( CommitFailedException.NAMESPACE, 2, "Invalid namespace mapping: " + prefix); - } else if (prefix.toLowerCase(Locale.ENGLISH).startsWith("xml")) { + } else if (prefix.toLowerCase(Locale.ENGLISH).startsWith("xml") && namespaces.hasProperty("xml")) { throw new CommitFailedException( CommitFailedException.NAMESPACE, 3, "XML prefixes are reserved: " + prefix); diff --git a/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/name/ReadWriteNamespaceRegistryTest.java b/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/name/ReadWriteNamespaceRegistryTest.java index 48fdedf8da..5bb52c081c 100644 --- a/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/name/ReadWriteNamespaceRegistryTest.java +++ b/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/name/ReadWriteNamespaceRegistryTest.java @@ -25,8 +25,13 @@ import org.apache.jackrabbit.oak.OakBaseTest; import org.apache.jackrabbit.oak.api.ContentSession; import org.apache.jackrabbit.oak.api.Root; import org.apache.jackrabbit.oak.fixture.NodeStoreFixture; +import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore; import org.apache.jackrabbit.oak.InitialContent; +import org.apache.jackrabbit.oak.spi.commit.CommitInfo; +import org.apache.jackrabbit.oak.spi.commit.EditorHook; import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider; +import org.apache.jackrabbit.oak.spi.state.NodeBuilder; +import org.apache.jackrabbit.oak.spi.state.NodeStore; import org.junit.Test; public class ReadWriteNamespaceRegistryTest extends OakBaseTest { @@ -78,4 +83,14 @@ public class ReadWriteNamespaceRegistryTest extends OakBaseTest { assertEquals(r.getPrefix("n2"), "p2"); } + + @Test + public void testBootstrapXmlNs() throws Exception { + NodeStore store = new MemoryNodeStore(); + EditorHook hook = new EditorHook(new NamespaceEditorProvider()); + + NodeBuilder builder = store.getRoot().builder(); + new InitialContent().initialize(builder); + store.merge(builder, hook, CommitInfo.EMPTY); + } }