Author: tomekr Date: Fri Aug 19 12:40:42 2016 New Revision: 1756912 URL: http://svn.apache.org/viewvc?rev=1756912&view=rev Log: OAK-4684: RepositorySidegrade should also run commit hooks as they are run in upgrade
Modified: jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/AbstractOak2OakTest.java Modified: jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java?rev=1756912&r1=1756911&r2=1756912&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java (original) +++ jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositorySidegrade.java Fri Aug 19 12:40:42 2016 @@ -33,6 +33,7 @@ import org.apache.jackrabbit.oak.commons import org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent; import org.apache.jackrabbit.oak.spi.commit.CommitHook; import org.apache.jackrabbit.oak.spi.commit.CommitInfo; +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.state.ChildNodeEntry; @@ -61,6 +62,8 @@ import static org.apache.jackrabbit.oak. import static org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade.DEFAULT_INCLUDE_PATHS; import static org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade.DEFAULT_MERGE_PATHS; import static org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade.calculateEffectiveIncludePaths; +import static org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade.createIndexEditorProvider; +import static org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade.createTypeEditorProvider; import static org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade.markIndexesToBeRebuilt; import static org.apache.jackrabbit.oak.upgrade.nodestate.NodeStateCopier.copyProperties; import static org.apache.jackrabbit.oak.upgrade.version.VersionCopier.copyVersionStorage; @@ -308,6 +311,12 @@ public class RepositorySidegrade { markIndexesToBeRebuilt(targetRoot); + // type validation, reference and indexing hooks + hooks.add(new EditorHook(new CompositeEditorProvider( + createTypeEditorProvider(), + createIndexEditorProvider() + ))); + target.merge(targetRoot, new LoggingCompositeHook(hooks, null, false), CommitInfo.EMPTY); } Modified: jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java?rev=1756912&r1=1756911&r2=1756912&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java (original) +++ jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgrade.java Fri Aug 19 12:40:42 2016 @@ -580,7 +580,7 @@ public class RepositoryUpgrade { return true; } - private static EditorProvider createTypeEditorProvider() { + static EditorProvider createTypeEditorProvider() { return new EditorProvider() { @Override public Editor getRootEditor(NodeState before, NodeState after, NodeBuilder builder, CommitInfo info) @@ -597,7 +597,7 @@ public class RepositoryUpgrade { }; } - private static EditorProvider createIndexEditorProvider() { + static EditorProvider createIndexEditorProvider() { final ProgressTicker ticker = new AsciiArtTicker(); return new EditorProvider() { @Override Modified: jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/AbstractOak2OakTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/AbstractOak2OakTest.java?rev=1756912&r1=1756911&r2=1756912&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/AbstractOak2OakTest.java (original) +++ jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/cli/AbstractOak2OakTest.java Fri Aug 19 12:40:42 2016 @@ -20,18 +20,26 @@ import static java.util.Collections.sing import static junit.framework.Assert.assertFalse; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.util.Arrays; +import java.util.List; import java.util.Map; +import javax.annotation.Nullable; import javax.jcr.Node; import javax.jcr.Property; import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.SimpleCredentials; +import javax.jcr.Value; +import com.google.common.base.Function; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; import org.apache.commons.codec.digest.DigestUtils; import org.apache.jackrabbit.oak.api.CommitFailedException; import org.apache.jackrabbit.oak.commons.IOUtils; @@ -161,7 +169,20 @@ public abstract class AbstractOak2OakTes Node nodeType = session.getNode("/jcr:system/jcr:nodeTypes/sling:OrderedFolder"); assertEquals("rep:NodeType", nodeType.getProperty("jcr:primaryType").getString()); - assertEquals("jcr:mixinTypes", nodeType.getProperty("rep:protectedProperties").getValues()[0].getString()); + + List<String> values = Lists.transform(Arrays.asList(nodeType.getProperty("rep:protectedProperties").getValues()), new Function<Value, String>() { + @Nullable + @Override + public String apply(@Nullable Value input) { + try { + return input.getString(); + } catch (RepositoryException e) { + return null; + } + } + }); + assertTrue(values.contains("jcr:mixinTypes")); + assertTrue(values.contains("jcr:primaryType")); assertEquals("false", nodeType.getProperty("jcr:isAbstract").getString()); }