From a94a203a941efcfcb75f660880bb3afa01bdfc61 Mon Sep 17 00:00:00 2001
From: Robert Munteanu <rombert@apache.org>
Date: Thu, 27 Apr 2017 12:15:01 +0300
Subject: [PATCH] OAK-6136 - Extract the multiplexing implementation code into
 a separate bundle

This patch introduces the oak-multiplex bundle and moves the test and
main code for o.a.j.o.plugins.multiplex from oak-core to this new
bundle.

The bundle has minimal dependencies on the oak-api and oak-spi-core
bundles.

Due to the SimpleMountInfoProvider being used in various tests, the
following
bundles have test-scoped dependencies to oak-multiplex:

- oak-core
- oak-lucene
---
 oak-benchmarks/pom.xml                             |   5 +
 oak-core/pom.xml                                   |   6 +
 oak-examples/standalone/pom.xml                    |   5 +
 oak-examples/webapp/pom.xml                        |   5 +
 oak-it-osgi/pom.xml                                |   6 +
 oak-it-osgi/test-bundles.xml                       |   1 +
 oak-it/pom.xml                                     |   6 +
 .../PrivateStoreValidatorProviderTest.java         |   0
 oak-lucene/pom.xml                                 |   6 +
 oak-multiplex/pom.xml                              | 139 +++++++++++++++++++++
 .../plugins/multiplex/CopyOnReadIdentityMap.java   |   0
 .../oak/plugins/multiplex/ModifiedPathDiff.java    |   0
 .../oak/plugins/multiplex/MountInfo.java           |   0
 .../multiplex/MountInfoProviderService.java        |   0
 .../oak/plugins/multiplex/MountedNodeStore.java    |   0
 .../oak/plugins/multiplex/MultiplexingContext.java |   0
 .../plugins/multiplex/MultiplexingNodeBuilder.java |   0
 .../plugins/multiplex/MultiplexingNodeState.java   |   0
 .../plugins/multiplex/MultiplexingNodeStore.java   |   0
 .../multiplex/MultiplexingNodeStoreService.java    |   0
 .../multiplex/PrivateStoreValidatorProvider.java   |   0
 .../plugins/multiplex/SimpleMountInfoProvider.java |   0
 .../oak/plugins/multiplex/package-info.java        |   0
 .../plugins/multiplex/ModifiedPathDiffTest.java    |   0
 .../multiplex/MountInfoProviderServiceTest.java    |   0
 .../oak/plugins/multiplex/MountInfoTest.java       |   0
 .../multiplex/MultiplexingChildrenCountTest.java   |   0
 .../plugins/multiplex/MultiplexingCompareTest.java |   0
 .../multiplex/SimpleMountInfoProviderTest.java     |   0
 oak-pojosr/pom.xml                                 |   6 +
 pom.xml                                            |   1 +
 31 files changed, 186 insertions(+)
 rename {oak-core => oak-it}/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/PrivateStoreValidatorProviderTest.java (100%)
 create mode 100644 oak-multiplex/pom.xml
 rename {oak-core => oak-multiplex}/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/CopyOnReadIdentityMap.java (100%)
 rename {oak-core => oak-multiplex}/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/ModifiedPathDiff.java (100%)
 rename {oak-core => oak-multiplex}/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MountInfo.java (100%)
 rename {oak-core => oak-multiplex}/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MountInfoProviderService.java (100%)
 rename {oak-core => oak-multiplex}/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MountedNodeStore.java (100%)
 rename {oak-core => oak-multiplex}/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingContext.java (100%)
 rename {oak-core => oak-multiplex}/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeBuilder.java (100%)
 rename {oak-core => oak-multiplex}/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeState.java (100%)
 rename {oak-core => oak-multiplex}/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeStore.java (100%)
 rename {oak-core => oak-multiplex}/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeStoreService.java (100%)
 rename {oak-core => oak-multiplex}/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/PrivateStoreValidatorProvider.java (100%)
 rename {oak-core => oak-multiplex}/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/SimpleMountInfoProvider.java (100%)
 rename {oak-core => oak-multiplex}/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/package-info.java (100%)
 rename {oak-core => oak-multiplex}/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/ModifiedPathDiffTest.java (100%)
 rename {oak-core => oak-multiplex}/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/MountInfoProviderServiceTest.java (100%)
 rename {oak-core => oak-multiplex}/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/MountInfoTest.java (100%)
 rename {oak-core => oak-multiplex}/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingChildrenCountTest.java (100%)
 rename {oak-core => oak-multiplex}/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingCompareTest.java (100%)
 rename {oak-core => oak-multiplex}/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/SimpleMountInfoProviderTest.java (100%)

diff --git a/oak-benchmarks/pom.xml b/oak-benchmarks/pom.xml
index a2a9b6e730..9f793b148c 100644
--- a/oak-benchmarks/pom.xml
+++ b/oak-benchmarks/pom.xml
@@ -153,6 +153,11 @@
         </dependency>
         <dependency>
             <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>oak-multiplex</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
             <artifactId>oak-blob-cloud-azure</artifactId>
             <version>${project.version}</version>
             <optional>true</optional>
diff --git a/oak-core/pom.xml b/oak-core/pom.xml
index 882ae83d02..c934713b9b 100644
--- a/oak-core/pom.xml
+++ b/oak-core/pom.xml
@@ -196,6 +196,12 @@
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.jackrabbit</groupId>
+      <artifactId>oak-multiplex</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
     <!-- General utility libraries -->
     <dependency>
       <groupId>com.google.guava</groupId>
diff --git a/oak-examples/standalone/pom.xml b/oak-examples/standalone/pom.xml
index ad9e427796..18fab2b210 100644
--- a/oak-examples/standalone/pom.xml
+++ b/oak-examples/standalone/pom.xml
@@ -167,6 +167,11 @@
       <version>${project.version}</version>
     </dependency>
     <dependency>
+      <groupId>org.apache.jackrabbit</groupId>
+      <artifactId>oak-multiplex</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
       <groupId>com.googlecode.json-simple</groupId>
       <artifactId>json-simple</artifactId>
     </dependency>
diff --git a/oak-examples/webapp/pom.xml b/oak-examples/webapp/pom.xml
index f2cec70bef..0783a7a608 100644
--- a/oak-examples/webapp/pom.xml
+++ b/oak-examples/webapp/pom.xml
@@ -96,6 +96,11 @@
       <version>${project.version}</version>
     </dependency>
     <dependency>
+      <groupId>org.apache.jackrabbit</groupId>
+      <artifactId>oak-multiplex</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
       <groupId>ch.qos.logback</groupId>
       <artifactId>logback-classic</artifactId>
     </dependency>
diff --git a/oak-it-osgi/pom.xml b/oak-it-osgi/pom.xml
index 40f5a165ed..aa04d274fd 100644
--- a/oak-it-osgi/pom.xml
+++ b/oak-it-osgi/pom.xml
@@ -111,6 +111,12 @@
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.jackrabbit</groupId>
+      <artifactId>oak-multiplex</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
 
     <dependency>
       <groupId>org.ops4j.pax.exam</groupId>
diff --git a/oak-it-osgi/test-bundles.xml b/oak-it-osgi/test-bundles.xml
index 832e4a48d2..595400239e 100644
--- a/oak-it-osgi/test-bundles.xml
+++ b/oak-it-osgi/test-bundles.xml
@@ -38,6 +38,7 @@
         <include>org.apache.jackrabbit:oak-api</include>
         <include>org.apache.jackrabbit:oak-commons</include>
         <include>org.apache.jackrabbit:oak-core</include>
+        <include>org.apache.jackrabbit:oak-multiplex</include>
         <include>org.apache.jackrabbit:oak-segment-tar</include>
         <include>org.apache.jackrabbit:oak-jcr</include>
         <include>org.apache.jackrabbit:oak-lucene</include>
diff --git a/oak-it/pom.xml b/oak-it/pom.xml
index 29c94fbda7..05e94b8a2f 100644
--- a/oak-it/pom.xml
+++ b/oak-it/pom.xml
@@ -118,6 +118,12 @@
         </dependency>
         <dependency>
             <groupId>org.apache.jackrabbit</groupId>
+            <artifactId>oak-multiplex</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.jackrabbit</groupId>
             <artifactId>oak-commons</artifactId>
             <version>${project.version}</version>
             <type>test-jar</type>
diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/PrivateStoreValidatorProviderTest.java b/oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/PrivateStoreValidatorProviderTest.java
similarity index 100%
rename from oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/PrivateStoreValidatorProviderTest.java
rename to oak-it/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/PrivateStoreValidatorProviderTest.java
diff --git a/oak-lucene/pom.xml b/oak-lucene/pom.xml
index 6961791179..8235a6f84d 100644
--- a/oak-lucene/pom.xml
+++ b/oak-lucene/pom.xml
@@ -193,6 +193,12 @@
       <version>${project.version}</version>
     </dependency>
     <dependency>
+      <groupId>org.apache.jackrabbit</groupId>
+      <artifactId>oak-multiplex</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
       <groupId>org.apache.tika</groupId>
       <artifactId>tika-core</artifactId>
       <version>${tika.version}</version>
diff --git a/oak-multiplex/pom.xml b/oak-multiplex/pom.xml
new file mode 100644
index 0000000000..1fcff849bc
--- /dev/null
+++ b/oak-multiplex/pom.xml
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+   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.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd ">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.jackrabbit</groupId>
+    <artifactId>oak-parent</artifactId>
+    <version>1.8-SNAPSHOT</version>
+    <relativePath>../oak-parent/pom.xml</relativePath>
+  </parent>
+
+  <artifactId>oak-multiplex</artifactId>
+  <name>Oak Multiplexing</name>
+  <packaging>bundle</packaging>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+     </plugin>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-scr-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <artifactId>maven-failsafe-plugin</artifactId>
+        <configuration>
+          <systemPropertyVariables>
+            <java.util.logging.config.file>
+              src/test/resources/logging.properties
+            </java.util.logging.config.file>
+          </systemPropertyVariables>
+        </configuration>
+      </plugin>
+   </plugins>
+  </build>
+
+  <dependencies>
+    <!-- Optional OSGi dependencies, used only when running within OSGi -->
+    <dependency>
+      <groupId>org.osgi</groupId>
+      <artifactId>org.osgi.core</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.osgi</groupId>
+      <artifactId>org.osgi.compendium</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>biz.aQute.bnd</groupId>
+      <artifactId>bndlib</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.apache.felix.scr.annotations</artifactId>
+      <scope>provided</scope>
+    </dependency>
+
+    <!-- Dependencies to other Oak components -->
+    <dependency>
+      <groupId>org.apache.jackrabbit</groupId>
+      <artifactId>oak-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.jackrabbit</groupId>
+      <artifactId>oak-store-spi</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
+    <!-- General utility libraries -->
+    <dependency>
+      <groupId>com.google.guava</groupId>
+      <artifactId>guava</artifactId>
+    </dependency>
+
+
+    <!-- Logging -->
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+
+    <!-- Findbugs annotations -->
+    <dependency>
+      <groupId>com.google.code.findbugs</groupId>
+      <artifactId>jsr305</artifactId>
+    </dependency>
+
+    <!-- Test Dependencies -->
+    <dependency>
+      <groupId>org.hamcrest</groupId>
+      <artifactId>hamcrest-all</artifactId>
+      <version>1.3</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>jul-to-slf4j</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-classic</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.sling</groupId>
+      <artifactId>org.apache.sling.testing.osgi-mock</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/CopyOnReadIdentityMap.java b/oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/CopyOnReadIdentityMap.java
similarity index 100%
rename from oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/CopyOnReadIdentityMap.java
rename to oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/CopyOnReadIdentityMap.java
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/ModifiedPathDiff.java b/oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/ModifiedPathDiff.java
similarity index 100%
rename from oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/ModifiedPathDiff.java
rename to oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/ModifiedPathDiff.java
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MountInfo.java b/oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MountInfo.java
similarity index 100%
rename from oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MountInfo.java
rename to oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MountInfo.java
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MountInfoProviderService.java b/oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MountInfoProviderService.java
similarity index 100%
rename from oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MountInfoProviderService.java
rename to oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MountInfoProviderService.java
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MountedNodeStore.java b/oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MountedNodeStore.java
similarity index 100%
rename from oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MountedNodeStore.java
rename to oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MountedNodeStore.java
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingContext.java b/oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingContext.java
similarity index 100%
rename from oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingContext.java
rename to oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingContext.java
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeBuilder.java b/oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeBuilder.java
similarity index 100%
rename from oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeBuilder.java
rename to oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeBuilder.java
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeState.java b/oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeState.java
similarity index 100%
rename from oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeState.java
rename to oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeState.java
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeStore.java b/oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeStore.java
similarity index 100%
rename from oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeStore.java
rename to oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeStore.java
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeStoreService.java b/oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeStoreService.java
similarity index 100%
rename from oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeStoreService.java
rename to oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingNodeStoreService.java
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/PrivateStoreValidatorProvider.java b/oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/PrivateStoreValidatorProvider.java
similarity index 100%
rename from oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/PrivateStoreValidatorProvider.java
rename to oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/PrivateStoreValidatorProvider.java
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/SimpleMountInfoProvider.java b/oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/SimpleMountInfoProvider.java
similarity index 100%
rename from oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/SimpleMountInfoProvider.java
rename to oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/SimpleMountInfoProvider.java
diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/package-info.java b/oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/package-info.java
similarity index 100%
rename from oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/package-info.java
rename to oak-multiplex/src/main/java/org/apache/jackrabbit/oak/plugins/multiplex/package-info.java
diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/ModifiedPathDiffTest.java b/oak-multiplex/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/ModifiedPathDiffTest.java
similarity index 100%
rename from oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/ModifiedPathDiffTest.java
rename to oak-multiplex/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/ModifiedPathDiffTest.java
diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/MountInfoProviderServiceTest.java b/oak-multiplex/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/MountInfoProviderServiceTest.java
similarity index 100%
rename from oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/MountInfoProviderServiceTest.java
rename to oak-multiplex/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/MountInfoProviderServiceTest.java
diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/MountInfoTest.java b/oak-multiplex/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/MountInfoTest.java
similarity index 100%
rename from oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/MountInfoTest.java
rename to oak-multiplex/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/MountInfoTest.java
diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingChildrenCountTest.java b/oak-multiplex/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingChildrenCountTest.java
similarity index 100%
rename from oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingChildrenCountTest.java
rename to oak-multiplex/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingChildrenCountTest.java
diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingCompareTest.java b/oak-multiplex/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingCompareTest.java
similarity index 100%
rename from oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingCompareTest.java
rename to oak-multiplex/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/MultiplexingCompareTest.java
diff --git a/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/SimpleMountInfoProviderTest.java b/oak-multiplex/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/SimpleMountInfoProviderTest.java
similarity index 100%
rename from oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/SimpleMountInfoProviderTest.java
rename to oak-multiplex/src/test/java/org/apache/jackrabbit/oak/plugins/multiplex/SimpleMountInfoProviderTest.java
diff --git a/oak-pojosr/pom.xml b/oak-pojosr/pom.xml
index 6c73b0166b..1622eb13f7 100644
--- a/oak-pojosr/pom.xml
+++ b/oak-pojosr/pom.xml
@@ -253,6 +253,12 @@
     </dependency>
     <dependency>
       <groupId>org.apache.jackrabbit</groupId>
+      <artifactId>oak-multiplex</artifactId>
+      <version>${project.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.jackrabbit</groupId>
       <artifactId>oak-core</artifactId>
       <classifier>tests</classifier>
       <version>${project.version}</version>
diff --git a/pom.xml b/pom.xml
index 27e073ba87..64376b05f3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -50,6 +50,7 @@
     <module>oak-jcr</module>
 
     <module>oak-upgrade</module>
+    <module>oak-multiplex</module>
     <module>oak-http</module>
     <module>oak-lucene</module>
     <module>oak-solr-core</module>
-- 
2.12.2

